在CentOS 7上构建RAID5、LVM和SAMBA服务器(3)——构建LVM
4.1. 预备
本次实验使用/dev/sdb(40GB)、/dev/sdc(60GB)、/dev/sdd(50GB)三个虚拟盘。在开始后面的工作之前,先要用su命令以root身份登录。
4.2. 格式化物理卷
执行pvcreate命令将/dev/sd[b-d]格式化为物理卷(PV):
pvcreate /dev/sd[b-d]
这时可以用pvdisplay命令查看刚刚建立的物理卷情况:
图14 新建物理卷的详情
注意上图中/dev/sd2是安装操作系统时由CentOS自动创建的物理卷。
还可以用pvs命令查看物理卷概要:
4.3. 创建卷组(VG)
创建卷组(VG),命名为foxvg,并将刚刚建立的三个PV加入到VG中,执行命令:
vgcreate foxvg /dev/sd[b-d]
执行结果如下图:
可以用vgdisplay显示卷组的详情:
图17 卷组详情
由上图可知,整个VG的大小是149.99GB,算他150GB吧。VG中每个PE(物理扩展)块的大小是4MB(默认值,可以用--physicalextentsize PhysicalExtentSize [bBsSkKmMgGtTpPeE]参数调整,不知道里面的“sS”是什么单位)。在CentOS 7上,默认创建的是lvm2格式的卷组,且不限逻辑卷(LV)数量。可以用--maxlogicalvolumes MaxLogicalVolumes参数限制卷组上可以创建的逻辑卷的数量。
亦可用vgs命令查看卷组概要:
图18 卷组概要
4.4. 创建逻辑卷
接下来在foxvg卷组上创建3个逻辑卷(LV),大小分别是30GB、60GB、50GB,指定卷名分别为lv30g、lv60g、lv50g,执行命令:
lvcreate –n lv30g –L 30G foxvg
lvcreate –n lv60g –L 60G foxvg
lvcreate –n lv50g –L 50G foxvg
执行结果如下图所示:
图19 创建三个逻辑卷
三个LV的概貌如下:
图20 三个逻辑卷的概貌
图21 三个逻辑卷的详情
再看卷组的信息,已发生变化:
图22 变化的卷组信息
对比图17和图22,可以发现“Cur LV(当前逻辑卷数量)”数据已发生变化,变为3个,代表刚才创建了3个逻辑卷。由图22还可见,目前VG中还剩余近10GB空间。
用pvs和pvdisplay可查看物理卷的使用情况:
可以看到,第一块盘用掉了30GB,用于建立lv30g逻辑卷,第二块盘(60GB)和第三块(50GB)的盘分别用于建立60GB和50GB的两个逻辑卷。CentOS挺聪明,居然知道按照空间选容量最接近的物理卷。不过,这不是本次实验的本意,我希望尝试一下看看能不能建立跨盘(跨物理卷)的逻辑卷,所以,要先删除刚刚建立的逻辑卷:
lvremove-f foxvg/lv30g
lvremove-f foxvg/lv60g
lvremove-f foxvg/lv50g
然后用vgs查看,可发现逻辑卷空间已被回收。
现在重新建立3个逻辑卷,容量分别是35GB、75GB、30GB,分别命名为lv35g、lv75g、lv30g:
lvcreate–nlv35g –L35G foxvg
lvcreate–nlv75g –L75G foxvg
lvcreate–nlv30g –L30G foxvg
执行结果如下:
再查看VG和PV信息:
图25 新的VG信息
图26 新的PV信息
由上图可见,CentOS先在第一块PV(/dev/sdb,40GB)上分配了35GB空间,分配给逻辑卷lv35g;然后利用了第二块PV(/dev/sdc,60GB)的全部空间和第三块PV(/dev/sdd,50GB)的15GB组合成了75GB空间,分配给逻辑卷lv75g;最后从第三块PV的剩下35GB空间中划出30GB分配给逻辑卷lv30g。这样看,CentOS的LVM还是有些聪明的算法的,知道最大限度利用PV空间,以最小的跨盘代价分配足够的LV空间。
创建了逻辑卷之后,/dev/foxvg目录下会出现与逻辑卷卷名相同的目录:
图27 逻辑卷设备目录
4.5. 格式化逻辑卷
Linux的逻辑卷相当于Windows的逻辑分区,在被使用之前,需要被格式化,命令如下:
mkfs.ext4 /dev/foxvg/lv30g
mkfs.ext4 /dev/foxvg/lv35g
mkfs.ext4 /dev/foxvg/lv75g
4.6. 挂载逻辑卷
首先在/mnt目录下分别为三个逻辑卷创建三个挂载目录:/mnt/lv30g、/mnt/lv35g、/mnt/lv75g,用chmod命令将这些目录设定为可读写(777,这样非root用户亦可读写这些目录),然后用mount命令将三个逻辑卷分别挂载到三个挂载点上:
mount /dev/foxvg/lv30g /mnt/lv30g
mount /dev/foxvg/lv35g /mnt/lv35g
mount /dev/foxvg/lv75g /mnt/lv75g
通过不带参数的mount命令可查看逻辑卷的挂载情况:
现在可以复制一些文件到/mnt/lv{nn}g目录下来检查是否完成挂载。
最后,在/etc/fstab中设定开机自动挂载LV,添加以下行:
/dev/foxvg/lv30g /mnt/lv30g ext4 defaults 0 0
/dev/foxvg/lv35g /mnt/lv35g ext4 defaults 0 0
/dev/foxvg/lv75g /mnt/lv75g ext4 defaults 0 0
重启系统之后,再次向/mnt/lv{nn}g目录下写入文件,可发现逻辑卷已被自动挂载。