lvm應用
lvm的重點在于可以彈性的調整filesystem的容量! 而并非在于數據的存儲效率及安全上面。
需要文件的讀寫效能或者是數據的可靠性是RAID所考慮的問題。
lvm:邏輯卷管理器
允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小
允許在多個物理設備間重新組織文件系統
-
將設備指定為物理卷
-
用一個或者多個物理卷來創建一個卷組
-
物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的
-
在物理卷上創建的邏輯卷是由物理區域(PE)組成
-
可以在邏輯卷上創建文件系統
lvm介紹
lvm:logical volume manager,version 2
dm:device mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊
設備名:/dev/dm-#
-
軟鏈接:
/dev/mapper/VG_NAME-LV_NAME /dev/mapper/vol0-root /dev/VG_NAME/LV_NAME /dev/vol0/root
LVM如何更改文件系統的容量?
LVM可以彈性的更改LVM的容量,是如何做到的?
是通過交換PE來進行資料的轉換,將原來LV內的PE轉移到其他的設備中以降低LV的容量,或將其他設備中的PE加到LV中以加大容量!
創建和使用新的LVM邏輯卷的步驟:
1、建立LVM類型的分區 (fdisk t) 2、建立LVM物理卷 (pv) 3、建立LVM卷組 (vg) 4、建立LVM邏輯卷 (lv) 5、建立文件系統 (mkfs.ext2,3,4) 6、掛載文件系統 (mount) 7、使用文件系統
pv管理工具
命令行中輸入pv 按兩次TAB自動補全即可查看所有的pv命令
vg管理工具
和pv相似,在命令行中輸入lv 按兩次TAB即可查看所有的vg命令
注意: 刪除卷組時: 先做pvmove,再做vgremove
lv管理工具
擴展和縮減邏輯卷
-
擴展邏輯卷:
# lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME
-
縮減邏輯卷:
# umount/dev/VG_NAME/LV_NAME # e2fsck -f /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] # lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME # mount
邏輯卷管理器快照
-
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
-
對于需要備份或者復制的現有數據集臨時拷貝以及其它操作來說,快照是最合適的選擇。
-
快照只有在它們和原來的邏輯卷不同時才會消耗空間
由于快照區與原本的LV共用很多PE的區塊,因此快照去與被快照的LV必須要要在同一個VG上!系統恢復的時候的文件數量不能高于快照區的實際容量
實戰案例:
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創建快照,并嘗試基于快照備份數據,驗正快照的功能
本實驗基于 centos 7
首先介紹下我們的實現環境
如圖:我們使用sdb的4個分區做LVM
第一問
第一步創建pv [root@redhat7 ~]# pvcreate /dev/sdb{1,5,6,7} [root@redhat7 ~]# pvs
第二步創建vg [root@redhat7 ~]# vgcreate -s 16MB testvg /dev/sdb{1,5,6} [root@redhat7 ~]# vgs [root@redhat7 ~]# vgdisplay
第三步創建lv [root@redhat7 ~]# lvcreate -L 5G -n testlv testvg [root@redhat7 ~]# lvs [root@redhat7 ~]# lvdisplay
第四步創建文件系統并掛載 [root@redhat7 ~]# mkfs -t ext4 /dev/testvg/testlv [root@redhat7 ~]# mkdir /users [root@redhat7 ~]# mount /dev/testvg/testlv /users/ [root@redhat7 ~]# [root@redhat7 ~]# df -h | tail -1 /dev/mapper/testvg-testlv 4.8G 20M 4.6G 1% /users
第二問
[root@redhat7 ~]# useradd -d /users/archlinux archlinux [root@redhat7 ~]# su - archlinux hi,dangerous! [archlinux@redhat7 ~]$ pwd /users/archlinux [archlinux@redhat7 ~]$ whoami archlinux [archlinux@redhat7 ~]$ cp /etc/pam.d/ ./ -r [archlinux@redhat7 ~]$ ls pam.d [archlinux@redhat7 ~]$ du -sh pam.d/ 156K /etc/pam.d/
第三問
前提:lv所在的vg容量要足夠; [root@redhat7 ~]# lvextend -L 7G /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. [root@redhat7 ~]# df -h | tail -1 /dev/mapper/testvg-testlv 4.8G 21M 4.6G 1% /users [root@redhat7 ~]# resize2fs /dev/testvg/testlv resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/testvg/testlv is mounted on /users; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/testvg/testlv is now 1835008 blocks long. [root@redhat7 ~]# df -h | tail -1 /dev/mapper/testvg-testlv 6.8G 23M 6.4G 1% /users [root@redhat7 ~]# su - archlinux Last login: Mon Aug 29 20:14:12 CST 2016 on pts/0 [archlinux@redhat7 ~]$ pwd /users/archlinux [archlinux@redhat7 ~]$ ls pam.d [archlinux@redhat7 ~]$ du -sh pam.d/ //和擴展前大小一樣,說明數據沒有丟失 156K pam.d/
第四問:
注意:縮減lvm必須嚴格按照前面我們所說的步驟,順序很重要??! 這里我們再次強調下 1、卸載文件系統 2、使用e2fsck強制檢測文件系統(這里只針對ext系列的文件系統) 3、首先縮減文件系統邊界 4、縮減lvm 5、掛載使用 [root@redhat7 ~]# umount /users/ [root@redhat7 ~]# e2fsck -f /dev/testvg/testlv [root@redhat7 ~]# resize2fs /dev/testvg/testlv 3G [root@redhat7 ~]# lvreduce -L 3G /dev/testvg/testlv //此處有個提示,我們選擇y即可(如下圖所示) [root@redhat7 ~]# mount /dev/testvg/testlv /users/ [root@redhat7 ~]# df -h | tail -1 /dev/mapper/testvg-testlv 2.9G 16M 2.7G 1% /users [root@redhat7 ~]# su - archlinux Last login: Mon Aug 29 20:30:30 CST 2016 on pts/0 [archlinux@redhat7 ~]$ ls pam.d [archlinux@redhat7 ~]$ du -sh pam.d/ //大小沒變,說明數據保存完整 156K pam.d/
第五問:
[root@redhat7 ~]# lvcreate -s -L 512M -n snap_testlv /dev/testvg/testlv Logical volume "snap_testlv" created. [root@redhat7 ~]# ll /dev/testvg/snap_testlv //查看快照設備 lrwxrwxrwx. 1 root root 7 Aug 29 20:45 /dev/testvg/snap_testlv -> ../dm-3 [root@redhat7 ~]# mount -r /dev/testvg/snap_testlv /mnt //快照卷掛載為只讀,它不需要寫數據 [root@redhat7 ~]# df -h | tail -2 /dev/mapper/testvg-testlv 2.9G 16M 2.7G 1% /users /dev/mapper/testvg-snap_testlv 2.9G 16M 2.7G 1% /mnt //這里注意:我們指定的大小為512M ;這里顯示和原卷大小一樣,但實際為512M [root@redhat7 ~]# ll /mnt total 20 drwx------. 6 archlinux archlinux 4096 Aug 29 20:16 archlinux drwx------. 2 root root 16384 Aug 29 20:09 lost+found [root@redhat7 ~]# ll /users/ total 20 drwx------. 6 archlinux archlinux 4096 Aug 29 20:16 archlinux drwx------. 2 root root 16384 Aug 29 20:09 lost+found //和原卷數據完全一樣 [root@redhat7 ~]# cd /users/archlinux/pam.d/ [root@redhat7 pam.d]# echo "Hello world" >> atd //修改原卷中的atd文件;向最后一行添加一個字符串 [root@redhat7 pam.d]# tail -1 atd //查看原卷中atd文件的最后一行,可以看到已經修改成功 Hello world [root@redhat7 pam.d]# cd /mnt/archlinux/pam.d/ //進入快照卷內 [root@redhat7 pam.d]# tail -1 atd //查看快照卷中的atd文件的最后一行,數據并沒有發生變化 session include password-auth //至此,說明快照卷使用成功
原創文章,作者:sixijie,如若轉載,請注明出處:http://www.www58058.com/42722