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.178linux.com/46435