小編今天要講的內容是如何創建邏輯卷,然后擴展它、縮減它。LVM 的重點就在于可以彈性的調整文件系統的容量!所以,下面練習開始。
1、創建一個至少有兩個PV組成的大小為20G的名為testvg的 VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏 輯卷testlv;掛載至/users目錄。
①準備兩個10G的分區
[root@localhost ~]# fdisk -l /dev/sdd |grep sdd* Disk /dev/sdd: 214.7 GB, 214748364800 bytes /dev/sdd1 1 1306 10490413+ 8e Linux LVM /dev/sdd2 1307 2612 10490445 8e Linux LVM
(這里小編用fdisk新的分區之后,t類型轉換為8e為LINUX LVM)
*顯示分好的2個10G分區
[root@localhost ~]# lsblk |grep sdd[0-9] ├─sdd1 8:49 0 10G 0 part └─sdd2 8:50 0 10G 0 part
②創建PV物理卷
[root@localhost ~]# pvcreate /dev/sdd{1..2} Physical volume "/dev/sdd1" successfully created Physical volume "/dev/sdd2" successfully created
*查看PV物理卷
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdd1 lvm2 ---- 10.00g 10.00g /dev/sdd2 lvm2 ---- 10.00g 10.00g
(也可以用pvdisplay查看詳細信息)
③創建VG卷組
[root@localhost ~]# vgcreate -s 16M testvg /dev/sdd{1..2} Volume group "testvg" successfully created
(-s用來指定PE大小為16M)
*查看VG
[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree VolGroup 1 3 0 wz--n- 199.51g 0 testvg 2 0 0 wz--n- 20.00g 20.00g
(總大小為20G,由兩個PV組成的VG卷組)
*查看分配的PE相關信息
[root@localhost ~]# vgdisplay testvg|egrep -io "(Pe|VG).*size.*" VG Size 20.00 GiB PE Size 16.00 MiB PE / Size 0 / 0 PE / Size 1280 / 20.00 GiB
(VG大小為20G,PE大小為16M)
④創建5G的邏輯卷,名稱為testlv
[root@localhost ~]# lvcreate -L 5G -n testlv testvg Logical volume "testlv" created.
(-L指定大小,-n指定名稱)
*查看LV列表
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert testlv testvg -wi-a----- 5.00g
⑤創建文件系統
*格式化為ext4文件系統類型
[root@localhost ~]# mkfs.ext4 /dev/testvg/testlv
*查看是否分配了UUID
[root@localhost ~]# blkid /dev/testvg/testlv /dev/testvg/testlv: UUID="d3c176ac-4c1b-4fe9-84af-e4818aacaad6" TYPE="ext4"
⑥創建一個目錄并掛載
[root@localhost ~]# mkdir users [root@localhost ~]# mount /dev/testvg/testlv /users/
*查看分區情況及大小
[root@localhost ~]# df -Ph |grep "/users" /dev/mapper/testvg-testlv 4.8G 10M 4.6G 1% /users
⑦設置自動掛載
*使用vim編輯/etc/fstab配置文件
[root@localhost ~]# vim /etc/fstab
*讀出lvtest的UUID及type信息寫入到文件
2、新建用戶archlinux,要求其家目錄為/users/archlinux ,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
*創建用戶并指定其家目錄
[root@localhost ~]# useradd archlinux -d /users/archlinux
(-d指定用戶家目錄)
*切換用戶,并復制文件
[root@localhost ~]# su - archlinux [archlinux@localhost ~]$ cp -av /etc/pam.d /users/archlinux/
*查看文件個數
[archlinux@localhost ~]$ ls /users/archlinux/pam.d/ | wc -l 58
3、擴展testlv至7G,要求archlinux用戶的文件不能丟失
*先檢查需要擴展的大小,VG是否有足夠可用空間
[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree testvg 2 1 0 wz--n- 20.00g 15.00g
(剩余15G,有足夠可用空間)
*查看邏輯卷
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move testlv testvg -wi-ao---- 5.00g
(顯示總大小為5G)
*擴展邏輯卷大小,由上面得知testLV大小為5G,擴展至7G需要加上2G
[root@localhost ~]# lvextend -L +2G -r /dev/testvg/testlv Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents). Logical volume testlv successfully resized.
*再次查看lestLV邏輯卷大小
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert testlv testvg -wi-ao---- 7.00g
(已經變成了7G)
*查看物理大小
[root@localhost ~]# df -Ph |grep "testlv" /dev/mapper/testvg-testlv 6.8G 12M 6.5G 1% /users
(發現由4.8G增加2G到6.8G,有誤差,但表示擴展成功)
*查看拷貝的pam.d目錄下的文件個數
[root@localhost ~]# ls /users/archlinux/pam.d | wc -l 58
4、收縮testlv至3G,要求archlinux用戶的文件不能丟失
*必須先卸載,處于離線狀態
[root@localhost ~]# umount /dev/testvg/testlv
*檢查文件系統是否完好
[root@localhost ~]# e2fsck -f -y /dev/testvg/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/testvg/testlv: 78/458752 files (0.0% non-contiguous), 64509/1835008 blocks
*設置文件系統大小
[root@localhost ~]# resize2fs /dev/testvg/testlv 3G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/testvg/testlv to 786432 (4k) blocks. The filesystem on /dev/testvg/testlv is now 786432 blocks long.
*縮減邏輯卷
[root@localhost ~]# lvreduce -L 3G /dev/testvg/testlv WARNING: Reducing active logical volume to 3.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce testvg/testlv? [y/n]: y Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents). Logical volume testlv successfully resized.
*再次查看邏輯卷大小
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert testlv testvg -wi-a----- 3.00g
(發現已經縮減到3G)
*再次掛載
[root@localhost ~]# mount /dev/testvg/testlv /users
*查看物理卷
[root@localhost ~]# df -Ph |grep "/users" /dev/mapper/testvg-testlv 2.9G 7.8M 2.7G 1% /users
(也被縮減改為3G左右)
*查看pam.d目錄中文件個數
[root@localhost ~]# ls /users/archlinux/pam.d | wc -l 58
5、對testlv創建快照,并嘗試基于快照備份數據,驗正快照的功能
*創建大小為1G只讀的快照
[root@localhost ~]# lvcreate -L 1G -s -n testsnap -p r /dev/testvg/testlv Logical volume "testsnap" created.
(快照不能太小,上面的過程把邏輯卷縮減到了3G,所以創建1G的快照足夠了)
*查看lvs
[root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert testlv testvg owi-aos--- 3.00g testsnap testvg sri-a-s--- 1.00g testlv 0.00
*創建快照目錄并掛載
[root@localhost ~]# mkdir /users/testsnap [root@localhost ~]# mount /dev/testvg/testsnap /users/testsnap/ mount: block device /dev/mapper/testvg-testsnap is write-protected, mounting read-only
*刪除pam.d中以a開頭的文件
[root@localhost ~]# rm -f /users/archlinux/pam.d/a* [root@localhost ~]# ls /users/archlinux/pam.d/ |wc -l 52
(發現文件個數只剩52個了)
*查看快照中pam.d中的文件個數
[root@localhost ~]# ls /users/testsnap/archlinux/pam.d |wc -l 58
(還是58個)
*備份快照卷數據
[root@localhost ~]# tar -zcf /tmp/bakup.tar.gz /users/testsnap/archlinux/pam.d/* tar: Removing leading `/' from member names
(小編這里備份到了tmp下)
*取消掛載
[root@localhost /tmp]# umount /users/testsnap/ [root@localhost /tmp]# umount /users/
*還原文件
[root@localhost /users]# tar -zxf /tmp/bakup.tar.gz ./ [root@localhost /users]# ls archlinux
*查看原文件個數為58,數據恢復成功
[root@localhost /users]# ls archlinux/pam.d/ |wc -l 58
練習終于搞定了,小編在此過程中就路徑這個問題折騰了好久,所以大家在做練習的時候注意一下哦。
原創文章,作者:Qianzhihe,如若轉載,請注明出處:http://www.www58058.com/85374