一、弹性控制磁盘大小的lvm:
假如有这样一个场景,在初始安装linux系统时给 /home分区设置了一定大小,但是过了一段时间后,你发现初始分配的大小远不能满足公司的扩大,员工增加,需要分配的账号的磁盘空间也变大,这时你应该怎么办?是挂载一块更大的硬盘,将原来的小硬盘拆除掉吗?其实在linux中有lvm可动态增大文件系统的,而且不需要服务器离线就能办到。lvm(logical volume manager),通过名字就很好理解,逻辑卷就是在物理卷之上,再次进行逻辑上的划分,把多个物理卷(可以是硬盘可以是分区)组合成一个卷组,通过划分卷组来进行磁盘的统一划分为逻辑卷,如果某一天逻辑卷不够使用了,可以给卷组添加硬盘或分区,再将逻辑卷进行放大,最后对文件系统进行放大就行了,如果是缩小lvm的话就需要先取消挂载,然后再缩小
二、 LVM相关概念:
pv:物理卷:可以是物理硬盘或分区,通过改变卷标为8e,使用pv命令转化为物理卷
vg:多个物理卷的一个集合,构成了逻辑上存在的卷组,叫逻辑卷
lv:在使用卷组时可以划分出多个逻辑卷,通过格式化
pe:构成卷组的逻辑上的最小块,类似于硬盘的块大小,分配给lvm时也只能是pe的整数倍,默认一个卷组可以有65534个pe,pe默认大小为4MB, 则一个卷组默认最大有256G,当然可以改变pe的大小来改变vg的最大(pe的大小单位可以是小到b大到g,t,p,e都可以指定)
三者的关系大概是上图的关系
三、逻辑卷的命令:
1. pv相关命令:
pvcreate:创建物理卷
pvdisplay:显示系统的物理卷详细信息
pvs:显示系统物理卷的概要信息
pvremove:移除物理卷
pvmove搬移物理卷,先加源pv后加目标pv,缩小vg时使用
pvscan:扫描pv
2. vg相关命令:
vgcreate:创建卷组
vgdisplay:卷组的详细信息
vgs: 卷组的概要信息
vgextend:使用pv扩展卷组
vgreduce:在vg内移除pv
vgremove:移除卷组
vgscan:扫描vg
3. lv相关信息:
lvcreate创建卷组
lvs逻辑卷的概要信息
lvdisplay 逻辑卷详细信息
lvextend 在lv里增加容量
lvresize 调整lv的容量大小
lvremove 移除lv
四、逻辑卷的实例:
1. 创建逻辑卷:
需要依次创建物理卷、卷组、逻辑卷:
[root@cnode6_8 ~]# pvcreate /dev/sd{b1,b2,c} Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created Physical volume "/dev/sdc" successfully created
#下面创建名字为jack_vg,pe大小为1M,pv添加了一个分区,一块磁盘
[root@cnode6_8 ~]# vgcreate -s 1M jack_vg /dev/sdb1 /dev/sdc Volume group "jack_vg" successfully created [root@cnode6_8 ~]# vgs //显示创建的vg VG #PV #LV #SN Attr VSize VFree jack_vg 2 0 0 wz--n- 20.10g 20.10g [root@cnode6_8 ~]# vgscan //显示创建的vg Reading all physical volumes. This may take a while... Found volume group "jack_vg" using metadata type lvm2 [root@cnode6_8 ~]# vgdisplay //显示详细信息 --- Volume group --- VG Name jack_vg 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 20.10 GiB //vg大小为20.1G PE Size 1.00 MiB Total PE 20587 //pe总个数 Alloc PE / Size 0 / 0 Free PE / Size 20587 / 20.10 GiB VG UUID CvbWjN-q0ew-Uk97-FnFu-iWPM-rl7B-KJ1PNn
#创建lv 指定大小为300个pe,-L可以直接指定大小,-n指定lv名字
[root@cnode6_8 ~]# lvcreate -l 300 -n jack_lv jack_vg Logical volume "jack_lv" created. [root@cnode6_8 ~]# mkfs.ext3 /dev/jack_vg/jack_lv //格式化逻辑卷 mke2fs 1.41.12 (17-May-2010) Filesystem label= …… 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@cnode6_8 ~]# mkdir /mnt/jack_lv //创建挂载点,挂载 [root@cnode6_8 ~]# mount /dev/jack_vg/jack_lv /mnt/jack_lv [root@cnode6_8 ~]# df -h |grep lv //查看文件系统挂载情况 /dev/mapper/jack_vg-jack_lv 291M 11M 266M 4% /mnt/jack_lv
2. 逻辑卷扩展:
逻辑卷扩展需要先扩展物理卷再把物理卷加入卷组之后放大逻辑卷,最后放大文件系统。在前面已经有一个分区未被加入卷组中,可以直接使用,具体步骤如下:
[root@cnode6_8 ~]# vgextend jack_vg /dev/sdb2 Volume group "jack_vg" successfully extended [root@cnode6_8 ~]# vgs VG #PV #LV #SN Attr VSize VFree jack_vg 3 1 0 wz--n- 20.30g 20.01g
#扩展逻辑卷只需指定扩展多少,也可以使用-L直接指定大小,也可以使用-l直接指定一共有多少个pe即可
[root@cnode6_8 ~]# lvresize -l +100 /dev/jack_vg/jack_lv Size of logical volume jack_vg/jack_lv changed from 300.00 MiB (300 extents) to 400.00 MiB (400 extents). Logical volume jack_lv successfully resized.
#此时文件系统还是原来的大小,放大文件系统
[root@cnode6_8 ~]# resize2fs /dev/jack_vg/jack_lv resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/jack_vg/jack_lv is mounted on /mnt/jack_lv; on-line resizing required old desc_blocks = 2, new_desc_blocks = 2 Performing an on-line resize of /dev/jack_vg/jack_lv to 409600 (1k) blocks. The filesystem on /dev/jack_vg/jack_lv is now 409600 blocks long.
3. 缩小逻辑卷:
缩小逻辑卷应该先缩小文件系统,在缩小逻辑卷,将要移除的分区或硬盘上的数据搬移至没有使用的分区,缩小卷组移除物理卷。
具体步骤如下:
#第一次缩小文件系统大小时系统会提示运行检查文件系统的命令
[root@cnode6_8 ~]# resize2fs /dev/jack_vg/jack_lv 160M resize2fs 1.41.12 (17-May-2010) Please run 'e2fsck -f /dev/jack_vg/jack_lv' first. [root@cnode6_8 ~]# e2fsck -f /dev/jack_vg/jack_lv 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/jack_vg/jack_lv: 38/101200 files (0.0% non-contiguous), 126124/409600 blocks
#运行完文件系统检查后就可以运行缩小文件系统的命令
[root@cnode6_8 ~]# resize2fs /dev/jack_vg/jack_lv 160M resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/jack_vg/jack_lv to 163840 (1k) blocks. The filesystem on /dev/jack_vg/jack_lv is now 163840 blocks long. [root@cnode6_8 ~]# lvresize -L 180M /dev/jack_vg/jack_lv WARNING: Reducing active logical volume to 180.00 MiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce jack_vg/jack_lv? [y/n]: y Size of logical volume jack_vg/jack_lv changed from 300.00 MiB (300 extents) to 180.00 MiB (180 extents). Logical volume jack_lv successfully resized.
#假如需要移除/dev/sdc 但是发现它已经被使用了一部分,需要移至其他不用移除的分区
[root@cnode6_8 ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name jack_vg PV Size 109.79 MiB / not usable 1.79 MiB Allocatable yes PE Size 1.00 MiB Total PE 108 Free PE 108 Allocated PE 0 PV UUID RfUlAj-6mtH-CekP-4BQs-SSVU-MYem-rVj9kS --- Physical volume --- PV Name /dev/sdc VG Name jack_vg PV Size 20.00 GiB / not usable 0 Allocatable yes PE Size 1.00 MiB Total PE 20479 Free PE 20299 Allocated PE 180 PV UUID MY3ZK5-do0L-dQCs-2EOH-b1O1-Dhql-oT8Pr8 --- Physical volume --- PV Name /dev/sdb2 VG Name jack_vg PV Size 203.95 MiB / not usable 1.95 MiB Allocatable yes PE Size 1.00 MiB Total PE 202 Free PE 202 Allocated PE 0 PV UUID OISzAn-fAZW-OmPV-l8x0-0QPZ-i1xE-rBoEJc [root@cnode6_8 ~]# pvmove /dev/sdc /dev/sdb2 /dev/sdc: Moved: 7.2% /dev/sdc: Moved: 100.0% [root@cnode6_8 ~]# pvdisplay /dev/sdc --- Physical volume --- PV Name /dev/sdc VG Name jack_vg PV Size 20.00 GiB / not usable 0 Allocatable yes PE Size 1.00 MiB Total PE 20479 Free PE 20479 Allocated PE 0 PV UUID MY3ZK5-do0L-dQCs-2EOH-b1O1-Dhql-oT8Pr8
此时分配了/dev/sdc的已经全部收回,可以缩减卷组了移除pv了
[root@cnode6_8 ~]# vgreduce jack_vg /dev/sdc Removed "/dev/sdc" from volume group "jack_vg" [root@cnode6_8 ~]# pvremove /dev/sdc Labels on physical volume "/dev/sdc" successfully wiped
最后提示移除成功!
[root@cnode6_8 ~]# vgs VG #PV #LV #SN Attr VSize VFree jack_vg 2 1 0 wz--n- 310.00m 130.00m [root@cnode6_8 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert jack_lv jack_vg -wi-a----- 180.00m [root@cnode6_8 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb1 jack_vg lvm2 a--u 108.00m 108.00m /dev/sdb2 jack_vg lvm2 a--u 202.00m 22.00m
原创文章,作者:jack_cui,如若转载,请注明出处:http://www.178linux.com/41780
评论列表(1条)
文章思路很清晰,理论与实战相结合,实验部分一气合成,如果能对图进行一些详细的解释,对小白来说更易读。