动态扩容
逻辑卷动态扩容
逻辑卷最大的优点是可以弹性调节容量,逻辑卷存储空间不足时,就需要扩容。
若逻辑卷需要扩容,首先查看其所属的卷组,例如,lv1属于datavg卷组;再查看卷组空间空闲量,datavg卷组可用量为 10.12g。
> vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <39.00g 4.00m datavg 1 2 0 wz--n- <20.00g <10.12g
在确认有多余空间的情况下,使用 lvextend
命令的 -L
选项扩展逻辑卷LV的大小(命令 -
为缩容,+
为扩容)
> lvextend -L +800M /dev/datavg/lv1 Size of logical volume datavg/lv1 changed from 900.00 MiB (225 extents) to 1.66 GiB (425 extents). Logical volume datavg/lv1 successfully resized. > lvextend -L +1024M /dev/datavg/lv1 Size of logical volume datavg/lv1 changed from 1.66 GiB (425 extents) to 2.66 GiB (681 extents). Logical volume datavg/lv1 successfully resized.
查看大小
> lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <35.12g swap centos -wi-ao---- <3.88g lv1 datavg -wi-ao---- 2.66g
通过 df -h
查看发现并没有增大
> df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 16K 1.9G 1% /dev/shm tmpfs 1.9G 12M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 36G 9.4G 26G 27% / /dev/sda1 1014M 195M 820M 20% /boot vmhgfs-fuse 293G 144G 150G 49% /mnt/hgfs tmpfs 378M 0 378M 0% /run/user/1002 tmpfs 378M 0 378M 0% /run/user/0 /dev/mapper/datavg-lv1 870M 2.3M 807M 1% /opt/lv1
这是因为文件系统也需要扩容。
- ext4 文件系统扩容使用
resize2fs [逻辑卷名称]
挂载点 - xfs 文件系统扩容使用
xfs_growfs
挂载点
> resize2fs /dev/datavg/lv1 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/datavg/lv1 is mounted on /opt/lv1; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/datavg/lv1 is now 697344 blocks long.
再次查看扩容成功了
> resize2fs /dev/datavg/lv1 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/datavg/lv1 is mounted on /opt/lv1; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/datavg/lv1 is now 697344 blocks long.
也可以使用
lvextend
命令的-r
选项来使文件系统自动扩容
卷组(VG)动态扩容
卷组(VG)扩容
逻辑卷扩容时,若卷组中没有足够的存储空间,就需要增加卷组的容量。vgextend
命令可以将新的物理卷加入卷组。该过程首先创建物理卷,然后将物理卷加入卷组。
卷组的扩容相当简单,一般是 LVM 空间不够时,添加一块新硬盘时使用。
增加一块磁盘 /dev/sdc
> lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 39G 0 part ├─centos-root 253:0 0 35.1G 0 lvm / └─centos-swap 253:1 0 3.9G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk ├─datavg-lv1 253:2 0 2.7G 0 lvm /opt/lv1 └─datavg-lv2 253:3 0 9G 0 lvm sdc 8:32 0 1G 0 disk
扩容
> vgextend datavg /dev/sdc Physical volume "/dev/sdc" successfully created. Volume group "datavg" successfully extended > pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <39.00g 4.00m /dev/sdb datavg lvm2 a-- <20.00g <8.34g /dev/sdc datavg lvm2 a-- 1020.00m 1020.00m > vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <39.00g 4.00m datavg 2 2 0 wz--n- 20.99g 9.33g
卷组(VG)缩容
当硬盘空间不足时,就需要减少卷组占用的空间。如果删除的物理卷存有数据,需要先把数据移动到其他物理卷(保证有足够的空间存储数据)。pvmove
命令可以迁移物理卷的数据,在不指定目标卷的情况下,系统默认把数据迁移到临近的物理卷。例如,将 /dev/sdb
中的数据迁移出去,默认迁移到 /dev/sdc
。
迁移数据
> pvmove /dev/sdb
使用 vgreduce
命令从卷组中删除 /dev/sdc
物理卷
> vgreduce datavg /dev/sdc Removed "/dev/sdc" from volume group "datavg"
LVM 快照应用环境
快照的主要作用是保留数据在某一刻的状态,磁盘快照文件和系统所对应的虚拟磁盘本身大小不一样,快照比原数据小很多。
LVM 提供逻辑卷快照功能,用户可以在某个时间点创建一个逻辑卷副本,它也占用卷组的存储空间,称为快照卷,快照卷与原始的逻辑卷必须在同一个卷组。快照卷是一种特殊的逻辑卷,它可以挂载在设备上。lvcreate
命令可以创建一个快照,-s
参数指定逻辑卷,
> lvcreate -L 100M -n centos-snap -s /dev/centos/root Logical volume "centos-snap" created.
使用 lvscan
命令查看新创建的快照卷。
> lvscan ACTIVE '/dev/centos/swap' [<3.88 GiB] inherit ACTIVE Original '/dev/centos/root' [<35.12 GiB] inherit ACTIVE Snapshot '/dev/centos/centos-snap' [100.00 MiB] inherit
在 /mnt
目录下创建一个挂载点 centos-snap
,将快照卷挂载在上面,并设置为只读,以免破坏快照中的数据。
> lvscan ACTIVE '/dev/centos/swap' [<3.88 GiB] inherit ACTIVE Original '/dev/centos/root' [<35.12 GiB] inherit ACTIVE Snapshot '/dev/centos/centos-snap' [100.00 MiB] inherit
在 /mnt
目录下创建一个挂载点 centos-snap,将快照卷挂载在上面,并设置为只读,以免破坏快照卷中的数据。
> mkdir /mnt/centos-snap > mount -o ro /dev/centos/centos-snap /mnt/centos-snap
查看原来的数据
> ls /mnt/centos-snap
删除 LVM
删除 LVM 步骤:
umount
卸载- 删除
/etc/fstab
文件下的永久挂载 lvremove
移除逻辑卷(LV)vgremove
移除卷组(VG)pvremove
移除物理卷(PV)
下面只展示命令,具体细节可自行执行删除。
> umount /opt/lv1 > vim /etc/fstab > lvremove /dev/datavg/lv1 Do you really want to remove active logical volume datavg/lv1? [y/n]: y Logical volume "lv1" successfully removed > vgremove datavg > pvremove /dev/sdb