邏輯卷管理器 LVM

 
 
  邏輯卷管理器 LVM

lvm概述
   LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,又譯為邏輯卷宗管理器、邏輯扇區管理器、邏輯磁盤管理器。是Linux核心所提供的邏輯卷管理(Logical Volume Management)功能。它在硬盤的硬盤分區之上,又創建了一個邏輯層以方便系統管理硬盤分區系統。

物理卷(PV,Physical Volume):
   物理卷就是指磁盤,磁盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。

卷組(VG,Volume Group):
   LVM卷組類似于非LVM系統中的物理硬盤,其由物理卷組成??梢栽诰斫M上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。

邏輯卷(LV,Logical Volume):
   LVM的邏輯卷類似于非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。

dm:device mapper 設備映射組件,講一個或多個底層設備組織成一個邏輯設備的模塊;

lvm:邏輯卷管理器

0901.png

為了演示操作我們首先創建一個分區

[root@localhost ~]# fdisk /dev/sdd

0901-2.png

調整分區屬性:

0901-3.png

0901-4.png

pv管理工具

  pvs:簡要pv顯示工具
  pvdisplay:顯示pv詳細信息

[root@localhost ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2      (pv名稱)
  VG Name               vg0         (卷組名稱)
  PV Size               60.00 GiB / not usable 8.00 MiB      (大?。?
  Allocatable           yes 
  PE Size               8.00 MiB          (PE 大小)
  Total PE              7679               (多少個PE)
  Free PE               1023
  Allocated PE          6656
  PV UUID               lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz

創建pv工具:
pvcreate  /dev/DEVICE

[root@localhost ~]# pvcreate -v /dev/sdd1
    Wiping cache of LVM-capable devices
    Set up physical volume for "/dev/sdd1" with 20980827 available sectors
    Zeroing start of device /dev/sdd1
    Writing physical volume data to disk "/dev/sdd1"
  Physical volume "/dev/sdd1" successfully created
這里的-v顯示過程信息;

  創建完成查看:

[root@localhost ~]# pvdisplay /dev/sdd1
  "/dev/sdd1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               ywKdX1-XnNt-dY7C-lBO2-ochy-Podm-xFAxwb
  這里由于沒有加入VG,所以PE Size為0,VG Name為空;

 
   創建PV完成,順便說一下PV的刪除:pvremove    

[root@localhost ~]# pvremove /dev/sdd1
  Labels on physical volume "/dev/sdd1" successfully wiped

 
   再次查看PV就只剩下原來的PV了,我們已經把 PV Name 為/dev/sdd1的PV刪除了

[root@localhost ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg0
  PV Size               60.00 GiB / not usable 8.00 MiB
  Allocatable           yes 
  PE Size               8.00 MiB
  Total PE              7679
  Free PE               1023
  Allocated PE          6656
  PV UUID               lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz
   
[root@localhost ~]#

PV 創建完成后接下來我們看下VG的創建:
1)顯示卷組

[root@localhost ~]# vgs  (顯示簡要信息)
  VG   #PV #LV #SN Attr   VSize  VFree
  vg0    1   4   0 wz--n- 59.99g 7.99g
[root@localhost ~]# vgdisplay  (顯示詳細信息)
  --- Volume group ---
  VG Name               vg0      (卷組名稱)
  System ID             
  Format                lvm2        
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               59.99 GiB
  PE Size               8.00 MiB
  Total PE              7679
  Alloc PE / Size       6656 / 52.00 GiB
  Free  PE / Size       1023 / 7.99 GiB
  VG UUID               Qk4MX1-IDP7-ob8t-4S9U-WknH-3KqW-mYkXP5

創建VG:
vgcreate [-s PhysicalExtent- Size[mMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [Physi-calDevicePath…]

[root@localhost ~]# vgcreate myvg /dev/sdd1 
  Volume group "myvg" successfully created

查看一下:

[root@localhost ~]# vgdisplay 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               10.00 GiB
  PE Size               4.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 10.00 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf
PE大小在創建后固定不可更改,要指明大小使用-s選項;

  VG創建完成可以對VG擴展(vgextend)或者縮減(vgreduce);

擴展VG:
 1)擴展要添加新的PV

[root@localhost ~]# fdisk /dev/sdd     (創建一個新的分區)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1307-2610, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-2610, default 2610): +5G
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
/dev/sdd2            1307        1960     5253255   83  Linux
Command (m for help): t     (更改分區屬性8e)
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/sdd: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x191fb9c7
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        1306    10490413+  8e  Linux LVM
/dev/sdd2            1307        1960     5253255   8e  Linux LVM

 2)擴展VG:

[root@localhost ~]# vgextend myvg /dev/sdd2  (把/dev/sdd2添加到myvg)
  Physical volume "/dev/sdd2" successfully created
  Volume group "myvg" successfully extended
[root@localhost ~]# vgdisplay myvg       (查看myvg ,發現容量已經15G了)
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2    ·
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               15.01 GiB
  PE Size               4.00 MiB
  Total PE              3842
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3842 / 15.01 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf

VG的縮減
 1)如果/dev/sdd2上有數據我們需要先把數據移走

[root@localhost ~]# pvmove /dev/sdd2
  No data to move for myvg  (這里我們的分區上沒有數據)

 2)使用VGreduce命令:

[root@localhost ~]# vgreduce myvg /dev/sdd2
  Removed "/dev/sdd2" from volume group "myvg"
[root@localhost ~]# vgdisplay  (查看已經縮減到10G了)
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               10.00 GiB
  PE Size               4.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 10.00 GiB
  VG UUID               ylsKNp-2e0M-lW4S-CMdb-a3qi-bdSe-6kMfPf

LV管理工具
 lvs:查看簡要信息
 lvdisplay:查看詳細信息

邏輯卷創建:

lvcreate -L #[mMgGtT] -n NAME VolumeGroup (L指明大小  -n 名稱)
注意:這里要創建的大小在卷組必須有足夠空間,否則會創建失敗。
[root@localhost ~]# lvcreate -L 2G -n mylv myvg
  Logical volume "mylv" created.
[root@localhost ~]# ls /dev/mapper/
control  myvg-mylv  vg0-root  vg0-swap  vg0-usr  vg0-var
創建一個2G的LV,完成后就可以格式化掛載使用了
[root@localhost ~]# mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv  
[root@localhost ~]# mount /dev/myvg/mylv /backup/
[root@localhost ~]# mount
...
/dev/mapper/myvg-mylv on /backup type ext4 (rw)
擴展邏輯卷:

 lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
  -L +#[mMgGtT]與 -L #[mMgGtT]
   比如:-L+ 5G 表示擴展5G ,-L 5G 表示擴展后達到5G

[root@localhost ~]# lvextend -L 5G /dev/myvg/mylv 
  Size of logical volume myvg/mylv changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
  Logical volume mylv successfully resized.
[root@localhost ~]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv myvg -wi-ao----  5.00g

 這里我們查看掛載會發現分區大小還是2G,并沒有達到我們擴展后的5G。            

[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                            ext4     2.0G  3.1M  1.9G   1% /backup

  嘗試重新掛載之后問題并沒有解決,因為擴展LV之后文件系統并沒有隨之擴大,換句話說,邏輯卷大小擴大,文件系統還是原來的大小,這里我們使用的是ext文件系統,需要我們使用resize2fs工具把/dev/myvg/mylv 擴大

[root@localhost ~]# resize2fs /dev/myvg/mylv (沒有指明擴展大小就是默認使用全部大?。?
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /backup; on-line resizing required
old desc_blocks = 8, new_desc_blocks = 20
Performing an on-line resize of /dev/myvg/mylv to 5242880 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 5242880 blocks long.

 在查看一下:

[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                            ext4     4.9G  3.4M  4.7G   1% /backup
結果已經擴大到5G了。

縮減邏輯卷:
 lvreduce
  縮減是要先把文件系統大小縮減到指定大小,在縮減LV到指定大小。
縮減邏輯卷步驟:
 1)先要卸載:

umount /dev/VG_NAME/LV_NAME
[root@localhost ~]# umount /backup/ (卸載掛載)
[root@localhost ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg0-root  20511356  343640  19119140   2% /
tmpfs                  1954260      80   1954180   1% /dev/shm
/dev/sda1               194241   39970    144031  22% /boot
/dev/mapper/vg0-usr   10190136 1964380   7701468  21% /usr
/dev/mapper/vg0-var   20511356  152716  19310064   1% /var
/dev/sr0               3824484 3824484         0 100% /media/CentOS_6.8_Final
/dev/sr0               3824484 3824484         0 100% /mnt/cdrom

 2)文件系統檢測:

e2fsck -f /dev/VG_NAME/LV_NAME  (-f 強制檢測和修復)
[root@localhost ~]# e2fsck -f /dev/myvg/mylv 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
MYLV: 11/327680 files (0.0% non-contiguous), 119693/5242880 blocks

 3)縮減邏輯邊界:縮減后的容量一定要能容納原有數據。

resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] 
[root@localhost ~]# resize2fs /dev/myvg/mylv 3G 
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 3145728 (1k) blocks.
The filesystem on /dev/myvg/mylv is now 3145728 blocks long.

 4)使用lvreduce命令縮減邏輯卷:
 lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

[root@localhost ~]# lvreduce -L 3G /dev/myvg/mylv 
  WARNING: Reducing active logical volume to 3.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
  Size of logical volume myvg/mylv changed from 5.00 GiB (1280 extents) to 3.00 GiB (768 extents).
  Logical volume mylv successfully resized.

 5)重新掛載使用:

[root@localhost ~]# mount /dev/myvg/mylv /backup/
[root@localhost ~]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv
                           ext4     3.0G  3.3M  2.8G   1% /backup

完成

LVM快照

快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝。對于需要備份或者復制的現有數據集臨時拷貝以及其它操 作來說,快照是最合適的選擇??煺罩挥性谒鼈兒驮瓉淼倪壿嬀聿煌瑫r才會消耗空間。 在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間。當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中。快照中只含有原來的邏輯卷中更改的數據或者自生成快照后的快 照中更改的數據。建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了。也可以使用lvextend放大快照。

快照創建:
 lvcreate -L #[mMgGtT]  -p r  -s  -n snap_lv_name  original_lv_name
  -p:指明讀、寫權限
  -s:指明是快照
  -n:名稱

[root@localhost backup]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv 
  Logical volume "mylv_snap" created.

 復制一個文件到/backup

[root@localhost backup]# cp /etc/issue ./
[root@localhost backup]# ls
issue  lost+found

 創建/dev/myvg/mylv 的快照,名稱為mylv_snap,大小512M,只讀權限

[root@localhost backup]# lvcreate -s -L 512M -n mylv_snap -p r /dev/myvg/mylv 
  Logical volume "mylv_snap" created.

 在/mnt下建立mysnap目錄,

[root@localhost backup]# mkdir /mnt/mysnap

 掛載

[root@localhost backup]# mount /dev/myvg/mylv_snap /mnt/mysnap/
mount: block device /dev/mapper/myvg-mylv_snap is write-protected, mounting read-only
[root@localhost backup]# df -hT
Filesystem           Type     Size  Used Avail Use% Mounted on
/dev/mapper/vg0-root ext4      20G  336M   19G   2% /
tmpfs                tmpfs    1.9G   80K  1.9G   1% /dev/shm
/dev/sda1            ext4     190M   40M  141M  22% /boot
/dev/mapper/vg0-usr  ext4     9.8G  1.9G  7.4G  21% /usr
/dev/mapper/vg0-var  ext4      20G  150M   19G   1% /var
/dev/sr0             iso9660  3.7G  3.7G     0 100% /media/CentOS_6.8_Final
/dev/sr0             iso9660  3.7G  3.7G     0 100% /mnt/cdrom
/dev/mapper/myvg-mylv
                     ext4     3.0G  3.3M  2.8G   1% /backup
/dev/mapper/myvg-mylv_snap
                     ext4     3.0G  3.3M  2.8G   1% /mnt/mysnap

 查看分區內文件和備份文件

[root@localhost backup]# cat issue 
CentOS release 6.8 (Final)
Kernel \r on an \m
[root@localhost backup]# cat /mnt/mysnap/
cat: /mnt/mysnap/: Is a directory
[root@localhost backup]# cat /mnt/mysnap/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

 重新編輯下原文件

[root@localhost ~]# cat /backup/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

test
test
test
test
test

 查看備份文件

[root@localhost ~]# cat /mnt/mysnap/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

要想恢復,把快照卷中的文件復制出去就可以了

備份卷的刪除:
 1)卸載快照卷

[root@localhost ~]# umount /mnt/mysnap/

 2)lvremove :邏輯卷刪除命令

[root@localhost ~]# lvremove /dev/myvg/mylv_snap 
Do you really want to remove active logical volume mylv_snap? [y/n]: y
  Logical volume "mylv_snap" successfully removed

刪除邏輯卷:

 1)卸載邏輯卷掛載

[root@localhost ~]# umount /backup/

 2)刪除邏輯卷:

[root@localhost ~]# lvremove /dev/myvg/mylv 
Do you really want to remove active logical volume mylv? [y/n]: y
  Logical volume "mylv" successfully removed

 3)刪除VG:

[root@localhost ~]# vgremove /dev/myvg
  Volume group "myvg" successfully removed
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  vg0    1   4   0 wz--n- 59.99g 7.99g

4)刪除PV:

[root@localhost ~]# pvremove /dev/sdd1
  Labels on physical volume "/dev/sdd1" successfully wiped
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  vg0  lvm2 a--u 59.99g 7.99g
  /dev/sdd2       lvm2 ----  5.01g 5.01g
[root@localhost ~]# pvremove /dev/sdd2
  Labels on physical volume "/dev/sdd2" successfully wiped
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  vg0  lvm2 a--u 59.99g 7.99g

原創文章,作者:zanghonglei,如若轉載,請注明出處:http://www.www58058.com/42715

(0)
zanghongleizanghonglei
上一篇 2016-09-02
下一篇 2016-09-02

相關推薦

  • Linux進程及作業管理

    process 運行中的程序的一個副本,是被載入內存的一個指令集合 進程ID(Process ID,PID)號碼被用來標記各個進程 UID、GID、和SELinux語境決定對文件系統的存取和訪問權限, 通常從執行進程的用戶來繼承 存在生命周期 task struct:Linux內核存儲進程信息的數據結構格式 task list:…

    Linux干貨 2016-09-11
  • heartbeartv2實現lamp高可用-week17

    3、基于heartbeat v2 crm實現HA LAMP組合;要求,部署wordpress,用于編輯的文章中的任何數據在節點切換后都能正常訪問; 拓撲: 環境: CentOS6.6NFS: 172.16.0.34 輸出mysql數據目錄ntp: 172.16.0.31 時間服務器node1: 172.16.0.32 heartbeart+httpd+php…

    Linux干貨 2017-05-23
  • RAID(重要)

    RAID   RAID(Redundent Array of Independent Disk):獨立的冗余磁盤陣列,目的是為了結合多個物理驅動器組成單個單元,提高了磁盤的性能或保證數據冗余。RAID能夠防止硬件的故障導致數據丟失,但是不能防止人為操作,軟件故障、惡意軟件感染等造成的數據丟失,因此不能替代備份。 分類有:硬件實現RAID(一是外接式磁盤陣列柜…

    Linux干貨 2016-08-30
  • shell編程之數組及變量的多功能用法

    數組及變量的多功能用法   一、數組: 1、數組:存儲多個元素的連續的內存空間,相當于多個變量的集合(變量:存儲單個元素的內存空間)。 2、數組名和索引 索引:編號從0開始,屬于數值索引 bash的數組支持稀疏格式(索引不連續) 注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。 聲明數組: decl…

    Linux干貨 2016-08-26
  • raid5創建

    創建分區并改類型 創建raid5   創建把文件系統 生成配置文件    

    2017-12-17
  • Linux boot分區意外格式化或清除之后…

    boot分區在沒有備份的情況下意外被清空,包括啟動引導信息也沒了。這時若Linux還在運行,那你是幸運的, 修復的方法: 1. cat  /etc/*release      #趕快先確定當前系統的具體版本。有ISO鏡像趕快掛載上來.   &nbsp…

    Linux干貨 2016-03-22
欧美性久久久久