1、什么是LVM:PV、PE、VG、LV的意義
LVM:Logical Volume Manager(邏輯卷管理器),可以將多個物理分區整合成看起來像一個磁盤一樣,并可隨意增加或減少邏輯卷大小
dm:device mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊;
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vo10-root
/dev/VG_NAME/LV-NAME
/dev/vo10/root
-
PV(Physical Volume),物理卷
通過fdisk /dev/sdb命令調整分區系統標識符system ID成為8e(LVM標識符),然后再經過pvcreate的命令將它轉成LVM最底層的物理卷(PV)。
-
PE(Physical Extend),物理擴展塊
PE是LVM最小的存儲塊,如像文件系統的block大小。LVM默認的PE大小是4MB,而LVM的VG最多僅能含有65534個PE,因此默認的LVM VG會有4M*65534/(1024/G)=256G,調整PE的大小會影響到VG的最大容量。
-
VG(Volume Group),卷組
VG就是將多個PV組合成一個VG,所以VG就是LVM組合起來的大磁盤。
-
LV(Logical Volume),邏輯卷
最終的VG還會被切成LV,LV就是最后被格式化后掛載使用的分區,LV的設備文件名通常為“/dev/VG_NAME/LV_NAME”的樣式
2、LVM的創建流程
準備工作:
(1)準備一個40G的磁盤,分出4個分區,每個分區大小5G,并調整分區系統標識符system ID成為8e(LVM標識符);
(2)4個分區組合成一個VG,VG名稱設置為vgtest;且PE大小為16MB;
(3)VG的容量全部劃給LV,LV名稱設置為lvtest;lvtest格式化為ext4文件系統,并掛載至/tmp/lvm;
[root@centos6 ~]# fdisk /dev/sdb #劃分磁盤分區,并設置system ID分區為8e(LVM標識符) ...具體劃分磁盤分區在此忽略... [root@centos6 ~]# partprobe #更新分區表 Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or resource busy). As a result, it may not reflect all of your changes until after reboot. Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only. Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only. Error: Invalid partition table - recursive partition on /dev/sr0. [root@centos6 ~]# cat /proc/partitions major minor #blocks name 8 0 20971520 sda 8 1 204800 sda1 8 2 4194304 sda2 8 3 16571392 sda3 8 16 83886080 sdb 8 17 5253223 sdb1 8 18 5253255 sdb2 8 19 5253255 sdb3 8 20 5253255 sdb4
-
PV階段管理工具
pvs:或pvscan命令,簡要顯示pv信息
pvdisplay:顯示pv的詳細信息
pvcreate /dev/DEVICE:將物理分區創建成PV;
pvremove /dev/DEVICE:將物理分區移除PV屬性;
[root@centos6 ~]# pvscan #顯示當前pv信息 No matching physical volumes found #找不到任何的pv [root@centos6 ~]# pvcreate /dev/sdb{1,2,3,4} #新建/dev/sdb{1,2,3,4}四個分區成為pv Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created Physical volume "/dev/sdb3" successfully created Physical volume "/dev/sdb4" successfully created [root@centos6 ~]# pvs #顯示當前pv信息,pvs命令是pvscan命令的簡寫,所實現的功能是一樣的。 PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 a-- 5.01g 5.01g /dev/sdb2 lvm2 a-- 5.01g 5.01g /dev/sdb3 lvm2 a-- 5.01g 5.01g /dev/sdb4 lvm2 a-- 5.01g 5.01g [root@centos6 ~]# pvdisplay #顯示pv的詳細信息 "/dev/sdb1" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 #分區設備名稱 VG Name #因為VG未分配出去,所以是空白 PV Size 5.01 GiB #PV的容量 Allocatable NO #此PV是否被分配,未分配則顯示NO PE Size 0 #PV內的PE大小 Total PE 0 #共分出幾個PE Free PE 0 #未使用的PE有幾個 Allocated PE 0 #可分配出去的PE數量 PV UUID jbc02o-1Wl6-s73v-csLZ-47DX-xQov-4Hm1N8 ...下面省略...
-
vg階段管理工具
vgs:簡要顯示vg信息
vgdisplay:顯示vg的詳細信息
vgcreate:新建VG的命令,語法如下:
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]
-s:參數后面接PE的大小,單位m、g、t(大小寫均可)
vgextend:在VG內增加PV,語法如下:
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]
vgreduce:在VG內刪除PV,語法如下:
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevi-cePath…]
vgremove:刪除一個VG;
vgchange:設置VG是否啟動;
[root@centos6 ~]# vgcreate -s 16M vg_1 /dev/sdb{2,3,4} #將/dev/sdb{2,3,4}新建成為一個VG,名稱為:vg_1,指定PE大小為16M Volume group "vg_1" successfully created [root@centos6 ~]# vgs VG #PV #LV #SN Attr VSize VFree vg_1 3 0 0 wz--n- 15.00g 15.00g [root@centos6 ~]# pvs #查看PV信息顯示,/dev/sdb{2,3,4}三個PV已經用掉,剩下/dev/sdb1的PV沒被用掉; PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 a-- 5.01g 5.01g /dev/sdb2 vg_1 lvm2 a-- 5.00g 5.00g /dev/sdb3 vg_1 lvm2 a-- 5.00g 5.00g /dev/sdb4 vg_1 lvm2 a-- 5.00g 5.00g [root@centos6 ~]# vgdisplay --- Volume group --- VG Name vg_1 System ID Format lvm2 Metadata Areas 3 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 3 Act PV 3 VG Size 15.00 GiB #vg的容量 PE Size 16.00 MiB #每個PE的大小 Total PE 960 #共有多少個PE Alloc PE / Size 0 / 0 #已經分配的PE數量 Free PE / Size 960 / 15.00 GiB #未分配的PE數量 VG UUID NpO8m2-s4rx-WOIA-SbCt-yqQV-MU1w-wru4cS #增加vg的容量,將/dev/sdb1添加至vg_1中; [root@centos6 ~]# vgextend vg_1 /dev/sdb1 Volume group "vg_1" successfully extended [root@centos6 ~]# vgdisplay --- Volume group --- VG Name vg_1 System ID Format lvm2 Metadata Areas 4 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 4 Act PV 4 VG Size 20.00 GiB #vg容量變成了20G PE Size 16.00 MiB Total PE 1280 #PE的數量也增加了 Alloc PE / Size 0 / 0 Free PE / Size 1280 / 20.00 GiB VG UUID NpO8m2-s4rx-WOIA-SbCt-yqQV-MU1w-wru4cS
-
lv階段管理工具
創建了VG這個大磁盤后,我就對針對vg_1這個大磁盤進行分區,即創建lv。
lvs:顯示lv簡要信息;
lvdisplay:顯示lv的詳細信息
lvcreate:新建lv;
lvcreate -L #[mMgGtT] -n LV_NAME VG_NAME
lvcreate -l N -n LV_NAME VG_NAME
-L:后面接容量,單位可以是M、G、T等,最小單位為PE,這個數量是PE的倍數;
-l:后面接PE的個數;
-n:后面接LV的名稱
lvextend:在lv內增加容量;
lvreduce:在lv內減少容量;
lvremove:刪除一個lv;
lvremove /dev/VG_NAME/LV_NAME
[root@centos6 ~]# lvcreate -l 1280 -n lv_1 vg_1 #將vg_1全部分配給lv_1 Logical volume "lv_1" created #也可使用lvcreate -L 20G -n lv_1 vg_1這條命令來創建 [root@centos6 ~]# ll /dev/vg_1/lv_1 lrwxrwxrwx. 1 root root 7 Sep 9 14:10 /dev/vg_1/lv_1 -> ../dm-0 [root@centos6 ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv_1 vg_1 -wi-a----- 20.00g [root@centos6 ~]# lvdisplay --- Logical volume --- LV Path /dev/vg_1/lv_1 #lv的全名 LV Name lv_1 VG Name vg_1 LV UUID BMuWIa-fngq-Z025-naPO-e7kC-ACmd-L4XrYb LV Write Access read/write LV Creation host, time centos6.5, 2016-09-09 14:10:22 +0800 LV Status available # open 0 LV Size 20.00 GiB #lv的容量 Current LE 1280 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
-
文件系統階段
格式化、掛載LV
[root@centos6 ~]# mkfs -t ext4 /dev/vg_1/lv_1 #注意要全名 [root@centos6 ~]# mkdir /mnt/lvm [root@centos6 ~]# mount /dev/vg_1/lv_1 /mnt/lvm [root@centos6 ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/sda3 16G 1.5G 14G 11% / tmpfs 112M 0 112M 0% /dev/shm /dev/sda1 194M 29M 155M 16% /boot /dev/mapper/vg_1-lv_1 20G 172M 19G 1% /mnt/lvm #其實LV的名稱構建成為/dev/vg_1/lv_1是為了讓用戶理直觀找到數據,實際LVM使用的設備是放置到/dev/mapper/目錄下
原創文章,作者:zhuckee,如若轉載,請注明出處:http://www.www58058.com/46435