LVM(Logical Volume Manager,邏輯卷管理)可以實現把多個實體硬盤分區整合在一起,當作一個硬盤來重新操作處理。最重要的是LVM不像傳統分區一旦確定分區大小就不能再調整,它允許我們彈性的調整分區及文件系統容量!
通過幾道練習題來說明LVM的實現
1、創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄
2、新建用戶 archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
3、擴展testlv至7G,要求archlinux用戶的文件不能丟失
4、收縮testlv至3G,要求archlinux用戶的文件不能丟失
5、對testlv創建快照,并嘗試基于快照備份數據,驗正快照的功能
題1: PV、VG、LV的創建
[root@centos6 ~]fdisk /dev/sda <--調整分區sda1 id為8e [root@centos6 ~]fdisk /dev/sdc <--調整分區sdc1 id為8e [root@centos6 ~]#pvcreate /dev/sd{a6,c1} <--指定分區為PV Physical volume "/dev/sda6" successfully created Physical volume "/dev/sdc1" successfully created [root@centos6 ~]#vgcreate -s 16M vg0 /dev/sd{a6,c1} <--創建vg;-s 指定PE大小 Volume group "vg0" successfully created [root@centos6 ~]#lvcreate -n testlv -L 5G vg0 <--創建lv; -n 指定lv名字;-L 按照容量指定lv大小[MGT]參考1) Wiping software RAID md superblock on /dev/vg0/testlv. Logical volume "testlv" created. [root@centos6 ~]#mkfs.ext4 /dev/vg0/testlv <--為lv指定文件系統 [root@centos6 ~]#mount /dev/vg0/testlv /app/lvm <--掛載lv; 在/etc/fstab添加可實現開機自動掛載
1)lv創建的時候也可以按照PE數量指定
為testlv分配3000 個PE:lvcreate -n testlv -l 3000 vg0
把卷組所有PE分配給testlv:lvcreate -n testlv -l 100%vg vg0
2)PV、VG、LV信息查詢
[root@centos6 ~]#pvdisplay --- Physical volume --- PV Name /dev/sda6 VG Name vg0 PV Size 10.00 GiB / not usable 4.58 MiB Allocatable yes PE Size 16.00 MiB Total PE 640 <--按照指定PE Size,該PV劃分的PE數量 Free PE 320 <--剩余沒有分配給LV的PE數量 Allocated PE 320 <--已經分配給LV的PE數量 PV UUID rbsdXo-s39N-vGar-Oxuc-5E6Z-sIuD-rZP5el --- Physical volume --- PV Name /dev/sdc1 VG Name vg0 PV Size 10.00 GiB / not usable 4.54 MiB Allocatable yes PE Size 16.00 MiB Total PE 640 Free PE 640 Allocated PE 0 PV UUID T9ehfV-wSc8-ez1y-ZlNF-T9P2-PU87-2rFe7Q [root@centos6 ~]#vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 14 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 20.00 GiB PE Size 16.00 MiB Total PE 1280 Alloc PE / Size 320 / 5.00 GiB Free PE / Size 960 / 15.00 GiB VG UUID YlqvPD-Vhsk-2vxR-G5SY-X1HM-3GUk-BNoUzq [root@centos6 ~]#lvdisplay --- Logical volume --- LV Path /dev/vg0/testlv LV Name testlv VG Name vg0 LV UUID nx4ENL-mE35-xlIf-DWQl-6f6j-m2t1-uznnNd LV Write Access read/write LV Creation host, time centos6.ffu.com, 2017-06-22 15:29:38 +0800 LV Status available # open 0 LV Size 5.00 GiB Current LE 320 <--等同于PE數量 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
題2:
[root@centos6 app]#useradd -m -k /etc/skel -d /app/lvm/archlinux archlinux [root@centos6 app]#su archlinux [archlinux@centos6 app]$cp -r /etc/pam.d/ lvm/archlinux/
題3:lv的擴展
邏輯卷的擴展是在線擴展,不用卸載lv,不影響用戶使用
[root@centos6 app]#lvextend -L +2G /dev/vg0/testlv <---L 按照容量指定擴展大小(Num增加到;+Num額外增加);參考1) [root@centos6 archlinux]#df -hTP Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 96G 9.6G 82G 11% / tmpfs tmpfs 491M 76K 491M 1% /dev/shm /dev/sda3 ext4 48G 125M 46G 1% /app /dev/sda1 ext4 969M 35M 885M 4% /boot /dev/sdb7 ext4 2.0G 923M 1016M 48% /testdir /dev/sr0 iso9660 3.7G 3.7G 0 100% /media/CentOS_6.9_Final /dev/mapper/vg0-testlv ext4 4.8G 11M 4.6G 1% /app/lvm <--沒有擴展文件系統,沒有識別增加的2G [root@centos6 archlinux]#resize2fs /dev/vg0/testlv <--同步文件系統;參考2) [root@centos6 archlinux]#df -hTP Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext4 96G 9.6G 82G 11% / tmpfs tmpfs 491M 76K 491M 1% /dev/shm /dev/sda3 ext4 48G 125M 46G 1% /app /dev/sda1 ext4 969M 35M 885M 4% /boot /dev/sdb7 ext4 2.0G 923M 1016M 48% /testdir /dev/sr0 iso9660 3.7G 3.7G 0 100% /media/CentOS_6.9_Final /dev/mapper/vg0-testlv ext4 6.8G 12M 6.5G 1% /app/lvm
1)同樣可以按照PV數量指定
為testlv新增600個PE:lvextend -l 600 /dev/vg0/testlv
把卷組剩余所有空閑PE分配給testlv:lvextend -l 100%free /dev/vg0/testlv
2)resize2fs 只用于ext系統;對于xfs系統要用xfs_growfs +掛載點(注意不是設備名)
此例中是在掛載的狀態下進行擴展,如果事先卸載的話,就需要先進行強制磁盤檢查–> e2fsck -f /dev/vg0/testlv
其實在擴展lv時加上-r選項就可以一并擴展文件系統–> lvextend -r -l +100%free /dev/vg0/testlv
題4:lv的縮減
邏輯卷的擴展會影響用戶使用,不能在線擴展
[root@centos6 archlinux]#cp /app/lvm /app/test -r <--縮減會影響用戶使用,不能在線操作,縮減之前建議先備份 [root@centos6 ~]#umount /app/lvm <--必須先卸載 [root@centos6 ~]#e2fsck -f /dev/vg0/testlv <--強制磁盤檢查;必要步驟 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 /dev/vg0/testlv: 80/458752 files (0.0% non-contiguous), 64511/1835008 blocks [root@centos6 ~]#resize2fs /dev/vg0/testlv 3G <--先縮減文件系統 resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vg0/testlv to 786432 (4k) blocks. The filesystem on /dev/vg0/testlv is now 786432 blocks long. [root@centos6 ~]#lvreduce -L 3G /dev/vg0/testlv <--再縮減邏輯卷 WARNING: Reducing active logical volume to 3.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg0/testlv? [y/n]: y Size of logical volume vg0/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents). Logical volume testlv successfully resized. [root@centos6 ~]#mount /dev/vg0/testlv /app/lvm <--掛載 [root@centos6 ~]#ls /app/lvm <--數據并沒有丟失 archlinux lost+found
題5:快照的使用
快照是一種特殊的邏輯卷,它是在生成快照時對存在同一VG下的邏輯卷的準確拷貝。
快照區有兩部分組成:變更之前的數據和未變更的數據組成。當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中,而沒有被變動的數據依舊保持在原本的區塊內。
[root@centos6 ~]#df -hP <--查看要備份的lv上的數據大小 Filesystem Size Used Avail Use% Mounted on /dev/sda2 96G 9.6G 82G 11% / tmpfs 491M 76K 491M 1% /dev/shm /dev/sda3 48G 125M 46G 1% /app /dev/sda1 969M 35M 885M 4% /boot /dev/sdb7 2.0G 923M 1016M 48% /testdir /dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.9_Final /dev/mapper/vg0-testlv 2.9G 7.8M 2.7G 1% /app/lvm <--快照大小設置應不大于數據大小 [root@centos6 ~]#lvcreate -n testlv-snapshot -s -L 16M -p r /dev/vg0/testlv <--參考1) Logical volume "testlv-snapshot" created. [root@centos6 ~]#lvdisplay <--可以查看快照邏輯卷 [root@centos6 app]#mkdir snap [root@centos6 app]#mount /dev/vg0/testlv-snapshot /app/snap <--掛載快照 mount: block device /dev/mapper/vg0-testlv--snapshot is write-protected, mounting read-only [root@centos6 lvm]#rm -rf /app/lvm/archlinux/ <--刪除邏輯卷testlv上的archlinux目錄 [root@centos6 lvm]#ls ../snap <--可以看到快照中archlinux目錄還在 archlinux lost+found 利用快照恢復testlv [root@centos6 app]#umount /app/lvm <--卸載邏輯卷 [root@centos6 app]#umount /app/snap/ <--卸載快照 [root@centos6 app]#lvconvert --merge /dev/vg0/testlv-snapshot <--利用快照testlv-snapshot恢復testlv Merging of volume testlv-snapshot started. testlv: Merged: 100.0% Merge of snapshot into logical volume testlv has finished. Logical volume "testlv-snapshot" successfully removed <--恢復后快照自動刪除;參考2) [root@centos6 app]#mount /dev/vg0/testlv /app/lvm [root@centos6 app]#ls /app/lvm <--archlinux目錄已經恢復 archlinux lost+found
1)-s 指定創建的邏輯卷為快照;-n 指定快照名字;-L 指定快照大小(至少為設定的PE大小);
-p r 設為只讀屬性,也可以掛載時候設置–>mount -o ro /dev/vg0/testlv-snapshot /app/snap
2)快照恢復也可手動把快照內數據復制到對應邏輯卷掛載目錄下;手動刪除快照命令為:#lvremove /dev/vg0/testlv-snapshot
補充:如何移除一個PV
沿用上例,移除sda6設備,首先要查看該設備上是否有分配給lv的PE(注意不是數據),如果有要轉移到對應vg下的其它pv上, 而且其PE數量要小于對應vg的剩余free PE數量
[root@centos6 ~]#pvdisplay --- Physical volume --- PV Name /dev/sda6 VG Name vg0 PV Size 10.00 GiB / not usable 4.58 MiB Allocatable yes PE Size 16.00 MiB Total PE 640 Free PE 448 Allocated PE 192 <--需要把192個PE轉移到/dev/sdc1 PV UUID rbsdXo-s39N-vGar-Oxuc-5E6Z-sIuD-rZP5el --- Physical volume --- PV Name /dev/sdc1 VG Name vg0 PV Size 10.00 GiB / not usable 4.54 MiB Allocatable yes PE Size 16.00 MiB Total PE 640 Free PE 640 Allocated PE 0 PV UUID T9ehfV-wSc8-ez1y-ZlNF-T9P2-PU87-2rFe7Q [root@centos6 ~]#pvmove /dev/sda6 /dev/sdc1 /dev/sda6: Moved: 0.5% /dev/sda6: Moved: 15.6% /dev/sda6: Moved: 30.7% /dev/sda6: Moved: 56.8% /dev/sda6: Moved: 78.6% /dev/sda6: Moved: 100.0% [root@centos6 ~]#vgreduce vg0 /dev/sda6 <--把pv/dev/sda6從vg0中移除 Removed "/dev/sda6" from volume group "vg0" [root@centos6 ~]#pvremove /dev/sda6 <--把設備/dev/sda6從pv中移除 Labels on physical volume "/dev/sda6" successfully wiped
原創文章,作者:ffu,如若轉載,請注明出處:http://www.www58058.com/78495