前言:
LVM(Logical Volume Manager)是基于內核的一種邏輯卷管理器,LVM適合于管理大存儲設備,并允許用戶動態調整文件系統大小。此外,LVM的快照功能可以幫助我們快速備份數據。LVM為我們提供了邏輯概念上的磁盤,使得文件系統不再關心底層物理磁盤的概念。
看圖識LVM
使用LVM創建邏輯卷需要我們提前了解以下幾個概念:
PE:Physical Ex
LVM默認使用4MB的PE塊,他是整個LVM最小的存儲單元,也就是說,我們的文件數據都是由寫入PE來處理的。簡單的說,這個PE就是有點像文件系統里面的block大小。
PV:Physical Volume 物理卷
物理卷是LVM的最底層概念,是LVM的邏輯存儲塊,物理卷與磁盤分區是邏輯的對應關系。LVM提供了命令工具可以將分區轉換為物理卷,通過組合物理卷可以生成卷組。
VG:Volume Group 卷組
卷組是LVM邏輯概念上的磁盤設備,通過將單個或多個物理卷組合成后生成卷組。卷組的大小取決于物理卷的容量以及個數。
LV:Logical Volume 邏輯卷
邏輯卷就是LVM邏輯意義上的分區,我們可以指定從卷組中提取多少容量來創建邏輯卷,最后對邏輯卷格式化并掛載使用。
PV常用命令:
pvcreate #創建一個PV物理卷 pvchange #修改PV的屬性 pvresize #調整一個PV的大小 pvremove #刪除一個PV pvmove #移動PE到指定物理卷 pvscan #搜索所有磁盤上的物理卷 pvs #顯示PV的簡要信息 pvdisplay #顯示PV的屬性信息
VG常用命令:
vgcreate #創建卷組 -l:設置此卷組可容納的LV最大數,默認為255 -p:設置此卷組包含PV的最大數,默認為255 -s:設置此卷組PE大小,默認為4M vgextend #擴展VG大小 vgchange #修改VG屬性信息 vgreduce #縮減VG大小 vgremove #刪除VG vgscan #搜索所有磁盤上的卷組 vgs #顯示VG簡要信息 vgdisplay #顯示VG屬性信息 vgck #檢查VG元數據
lvcreate #創建LV分區 -l:設置LV大小,以PE為單位 -L:設置LV大小,以字節為單位 -n:設置LV名稱 -p:設置LV權限讀寫權限,默認為可讀可寫 -s:設置一個快照卷,對一個已存在的LV做快照 lvextend #擴展LV大小 lvreduce #縮減LV大小 lvchange #修改LV屬性信息 -ay:標記LV為可用狀態 -an:標記LV為不可用狀態 lvremove #刪除LV lvscan #搜索所有磁盤上的邏輯卷 lvs #顯示LV簡要信息 lvdisplay #顯示LV屬性信息
實戰演習:
[root@server ~]# fdisk -l | grep ^/de /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 2611 20458496 8e Linux LVM /dev/sdb1 1 14 112423+ 83 Linux /dev/sdb2 15 80 530145 83 Linux /dev/sdc1 1 654 5253223+ 8e Linux LVM /dev/sdd1 1 654 5253223+ 8e Linux LVM /dev/sde1 1 654 5253223+ 8e Linux LVM
創建PV:
[root@server ~]# pvcreate /dev/sd{c,d,e}1 Physical volume "/dev/sdc1" successfully created Physical volume "/dev/sdd1" successfully created Physical volume "/dev/sde1" successfully created [root@server ~]#
查看創建的PV
[root@server ~]# pvs #查看PV的簡要信息 PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup lvm2 a-- 19.51g 0 /dev/sdc1 lvm2 --- 5.01g 5.01g /dev/sdd1 lvm2 --- 5.01g 5.01g /dev/sde1 lvm2 --- 5.01g 5.01g [root@server ~]#
[root@server ~]# pvdisplay #查看PV詳細信息 --- Physical volume --- "/dev/sde1" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- #新PV PV Name /dev/sde1 #物理卷名稱 VG Name PV Size 5.01 GiB #物理卷大小 Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID VREiVr-2Jr5-jNM8-EoKo-Agxw-oypN-kyUrXI [root@server ~]#
創建VG:
[root@server ~]# vgcreate -s 2M myvg /dev/sdc1 /dev/sdd1 Volume group "myvg" successfully created [root@server ~]#
查看VG:
[root@server ~]# vgs VG #PV #LV #SN Attr VSize VFree VolGroup 1 2 0 wz--n- 19.51g 0 myvg 2 0 0 wz--n- 10.02g 10.02g #新建的VG,名稱:myvg,大小10G [root@server ~]#
[root@server ~]# vgdisplay --- Volume group --- VG Name myvg #卷組名 System ID Format lvm2 Metadata Areas 2 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 2 Act PV 2 VG Size 10.02 GiB #卷組大小 PE Size 2.00 MiB #PE大小2M Total PE 5128 Alloc PE / Size 0 / 0 Free PE / Size 5128 / 10.02 GiB #剩余容量 VG UUID W0FnIa-Z5Th-XRaM-EfcZ-HWeF-Jdee-jVTVyT
擴展myvg大?。?/strong>
[root@server ~]# vgextend myvg /dev/sde1 Volume group "myvg" successfully extended
縮減myvg大?。?/strong>
[root@server ~]# vgreduce myvg /dev/sde1 Removed "/dev/sde1" from volume group "myvg"
創建LV:
[root@server ~]# lvcreate -L +6G -n mylv myvg 創建大小為6G,名稱為mylv的邏輯卷!卷組為myvg Logical volume "mylv" created [root@server ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_root VolGroup -wi-ao---- 17.57g lv_swap VolGroup -wi-ao---- 1.94g mylv myvg -wi-a----- 6.00g #大小6G [root@server ~]# lvdisplay --- Logical volume --- LV Path /dev/myvg/mylv #邏輯卷mylv的路徑 LV Name mylv #邏輯卷名稱mylv VG Name myvg #基于myvg卷組 LV UUID EXKn5D-lVzU-JdlO-GYoo-CYpz-y20L-xn5cI5 LV Write Access read/write LV Creation host, time server.lili.com, 2015-06-10 17:47:02 +0800 LV Status available # open 0 LV Size 6.00 GiB Current LE 3072 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 [root@server ~]# mkfs.ext4 /dev/myvg/mylv #格式化LV [root@server ~]# mkdir /data #創建掛載路徑 [root@server ~]# mount /dev/myvg/mylv /data/ #掛載mylv [root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 23% / tmpfs 491M 228K 491M 1% /dev/shm /dev/sda1 477M 28M 424M 7% /boot /dev/sr0 4.4G 4.4G 0 100% /media/CentOS_6.6_Final /dev/mapper/myvg-mylv 5.8G 12M 5.5G 1% /data #大小為6G的/data
這樣我們就成功的創建了我們的邏輯卷!可是隨著業務的增加!data目錄不夠用了,我們就可以擴展mylv的大小,可在線擴展。
擴展mylv:
[root@server ~]# lvextend -L +1G -n /dev/myvg/mylv #擴展物理邊界增加1G Size of logical volume myvg/mylv changed from 6.00 GiB (3072 extents) to 7.00 GiB (3584 extents). Logical volume mylv successfully resized [root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 23% / tmpfs 491M 228K 491M 1% /dev/shm /dev/sda1 477M 28M 424M 7% /boot /dev/sr0 4.4G 4.4G 0 100% /media/CentOS_6.6_Final /dev/mapper/myvg-mylv 5.8G 12M 5.5G 1% /data #仍然為6G #邏輯卷沒增加 [root@server ~]# resize2fs /dev/myvg/mylv #擴展邏輯邊界。 注:只對ext文件系統使用。這里也可以指定擴展邏輯邊界大小,默認物理邊界大小。 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/myvg/mylv is mounted on /data; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/myvg/mylv to 1835008 (4k) blocks. The filesystem on /dev/myvg/mylv is now 1835008 blocks long. [root@server ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_root VolGroup -wi-ao---- 17.57g lv_swap VolGroup -wi-ao---- 1.94g mylv myvg -wi-a----- 7.00g [root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 23% / tmpfs 491M 228K 491M 1% /dev/shm /dev/sda1 477M 28M 424M 7% /boot /dev/sr0 4.4G 4.4G 0 100% /media/CentOS_6.6_Final /dev/mapper/myvg-mylv 6.8G 14M 6.5G 1% /data #大小為7G了
縮減:
縮減的順序應該與創建時的順序相反,也就是卸載文件系統、刪除邏輯卷、刪除卷組、刪除物理卷??s減很危險,不到萬不得已千萬別縮減??s減需離線。
縮減步驟:
1、先確定縮減后的目標大??;并確保對應的每一步邏輯卷大小中有足夠的空間可容納原有所有數據;
2、先制裁文件系統,并要執行強制檢測
3、縮減邏輯邊界
4、縮減物理邊界
[root@server ~]# umount /data/ [root@server ~]# 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 /dev/myvg/mylv: 11/458752 files (0.0% non-contiguous), 65023/1835008 blocks [root@server ~]# resize2fs /dev/myvg/mylv 2G # 縮減邏輯邊界至2G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/myvg/mylv to 524288 (4k) blocks. The filesystem on /dev/myvg/mylv is now 524288 blocks long. [root@server ~]# lvreduce -L 2G /dev/myvg/mylv # 縮減物理邊界至2G WARNING: Reducing active logical volume to 2.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce mylv? [y/n]: y # 確認,后果自負 Size of logical volume myvg/mylv changed from 7.00 GiB (3584 extents) to 4.00 GiB (2048 extents). Logical volume mylv successfully resized [root@server ~]# mount /dev/myvg/mylv /data/ # 重新掛載 [root@server ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 23% / tmpfs 491M 228K 491M 1% /dev/shm /dev/sda1 477M 28M 424M 7% /boot /dev/sr0 4.4G 4.4G 0 100% /media/CentOS_6.6_Final /dev/mapper/myvg-mylv 1.9G 9.0M 1.8G 1% /data # 2G大小
創建快照卷:
快照卷是對邏輯卷進行的,因此必須跟目標邏輯卷在同一個卷組中,無須指明卷組。需確保剩余卷組可容納快照。
lvcreate -L :大小 -n: 名稱 -s:快照 -p r:只讀
[root@server ~]# fuser /data/ # 創建快照卷時盡量避免有訪問時創建快照! /data/: 8640c # 有訪問
[root@server ~]# mount -o remount,ro /dev/myvg/mylv /data/ && lvcreate -L 1G -n mylv-snap -p r -s /dev/myvg/mylv && mount -o remount,rw /dev/myvg/mylv /data/ # 先以只讀方式掛載邏輯卷&&然后創建快照&&然后在以讀寫方式掛載邏輯卷 Logical volume "mylv-snap" created [root@server ~]# mkdir /snap # 創建掛載點 [root@server ~]# mount /dev/myvg/mylv-snap /snap/ # 掛載快照 mount: block device /dev/mapper/myvg-mylv--snap is write-protected, mounting read-only #只讀
卸載快照卷:
[root@server ~]# umount /snap/ # 卸載 [root@server ~]# 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
好了!以上皆為個人學習總結!如有錯誤和遺落,還望指點??!
原創文章,作者:水蒸氣,如若轉載,請注明出處:http://www.www58058.com/5210