1. 程式人生 > >Linux 之 邏輯卷管理(lvm)

Linux 之 邏輯卷管理(lvm)

         LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁碟分割槽進行管理的一種機制。LVM是在磁碟分割槽和檔案系統之間新增的一個邏輯層,來為檔案系統遮蔽下層磁碟分割槽佈局,提供一個抽象的儲存卷,在儲存捲上建立檔案系統。

          通過LVM系統管理員可以輕鬆管理磁碟分割槽,如:將若干個磁碟分割槽連線為一個整塊的卷組 (volumegroup),形成一個儲存池。管理員可以在卷組上隨意建立邏輯卷組(logicalvolumes),並進一步在邏輯卷組上建立檔案系統。

以下介紹幾個與LVM相關的術語

物理卷(Physical Volume,PV):是LVM的基本儲存邏輯塊,但和基本的物理儲存介質(如分割槽、磁碟等)比較,卻包含有與LVM相關的管理引數。

卷組(Volume Group,VG):類似於非LVM系統中的物理磁碟,其由一個或多個物理卷PV組成。可以在卷組上建立一個或多個LV(邏輯卷)

邏輯卷(Logical Volume,LV):類似於非LVM系統中的磁碟分割槽,邏輯卷建立在卷組VG之上。在邏輯卷LV之上可以建立檔案系統(比如/home或者/usr等)。直接使用的裝置,可以增大縮減並保持原有資料不變。

物理塊(Physical Extent,PE):每一個物理卷PV被劃分為稱為PE(Physical Extents)的基本單元,pe是lvm裝置的最小儲存單元,lvm是pe的整數倍。

lvm的建立

實驗環境設定:

1)fdisk -l   ###/檢視是vdb中是否存在之前的分割槽情況,如果有,fdisk /dev/vdb,刪除所有的分割槽

2)umount  /mnt      ###解除之前的掛載

3)vim  /etc/fstab      ###刪除之前在檔案中的操作

1.  watch -n 1 'pvs;echo====;vgs;echo====;lvs;df -h /mnt'

監控結果如下:

2.建立分割槽並改變分割槽 id 為8e

3.命令建立邏輯卷

pvcreate  /dev/vdb1               ##物理分割槽處理,初始化物理卷pv

vgcreate  vg0  /dev/vdb1        ##建立物理卷組vg0

lvcreate     -L   20M  -n    lv0  vg0          ##建立邏輯卷lv0,大小為20M

mkfs.xfs  /dev/vg0/lv0             ##格式化邏輯卷lv0,使改邏輯卷可以使用

mount  /dev/vg0/lv0   /mnt           ##掛載

df -h /mnt            ##顯示掛載點為/mnt的掛載資訊

可以看出邏輯卷lv0成功掛載了

監控結果:

lvm的拉伸

lvm支援熱拉伸

針對xfs檔案系統的拉伸

1.當vg中的剩餘容量足夠時

lvextend  -L  400M  /dev/vg0/lv0                ###將裝置拉伸至400M

xfs_growfs  /dev/vg0/lv0                            ###l拉伸檔案系統,不用指定拉伸的大小,系統自動補

2.當vg中的剩餘容量不足時,再次建立分割槽並修改標籤為8e

fdisk   /dev/vdb           ###再次建立分割槽vdb2並修改標籤為8e

pvcreate  /dev/vdb2       ###建立物理卷

vgextend  vg0  /dev/vdb2     ###將物理卷vdb2放在物理卷組vg0裡

lvextend  -L 500M  /dev/vg0/lv0        ###擴容邏輯卷lv0到500M,但是拉大的一部分沒有被格式化

xfs_growfs   /dev/vg0/lv0            ###直接拉伸擴容部分的邏輯卷,mkfs.xfs /dev/vg0/lv0是將整個邏輯捲進行拉伸

監控結果:

針對ext檔案系統的拉伸和縮減

umount /mnt                      ##因為之前做xfs實驗,所以先解掛

mkfs.ext4 /dev/vg0/lv0     ##改變格式為ext4 

mount /dev/vg0/lv0 /mnt    ##掛載

mount              ##檢視當前掛載情況,檢查是不是成功修改為ext4格式

拉伸

lvextend  -L  550M  /dev/vg0/lv0            ##擴容邏輯卷lv0到550M

resize2fs  /dev/vg0/lv0          ## 類似於xfs格式的xfs_growfs命令,修改檔案系統的大小

縮減

umount  /dev/vg0/lv0                         ###不支援熱縮減,需要先解掛

e2fsck  -f  /dev/vg0/lv0                     ###掃描

resize2fs  /dev/vg0/lv0/   400M         ###縮減檔案系統至400M

lvreduce  -L  400M  /dev/vg0/lv0       ###縮減裝置

mount   /dev/vg0/lv0  /mnt           ###掛載

vg的縮減

vgreduce vg0  /dev/vdb2

監控結果:

vg的擴充套件

vgextend vg0 /dev/vdb2

監控結果:

資料的遷移(移除含有資料的裝置)

直接將物理卷/dev/vdb1移出卷組vg0會報如下錯誤:

當兩個裝置都被佔用時,需先將一個裝置中的檔案移動到另一個檔案

然後將物理卷/dev/vdb1移出卷組vg0

最後移除物理卷。

lvm快照

快照的作用主要用於資料備份與恢復,快照的損壞不影響其他裝置的正常工作。

lvcreate  -L  10M  -n  lv0-backup  -s  /dev/vg0/lv0      ###建立名為lv0-backup的快照

mount  /dev/vg0/lv0-backup  /mnt                              ###掛載

dd  if=/dev/zero  of=/mnt/file  bs=1M  count=50       ###擷取的資料大於10M,會損壞裝置

裝置自動解除掛載

再次掛載會報錯

重新生成

lvremove    /dev/vg0/lv0-backup

llvcreate  -L  10M  -n  lv0-backup  -s  /dev/vg0/lv0 

還原:

umount     /dev/vg0/lv0-backup            ##快照解掛

lvremove    /dev/vg0/lv0-backup           ##移除快照

umount   /mnt                                 ### lv0解掛

lvremove    /dev/vg0/lv0               ##移除lv0

vgremove   vg0                           ##移除vg0

pvremove  /dev/vdb1                   ##移除裝置

監控結果: