LVM管理
一、简介:
逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。
二、逻辑卷管理
1、相关概念
pv:physical volume 物理卷
vg:volume group 卷组
lv:logical volume 逻辑卷
注意:一个或者多个物理卷(pv)组成卷组(vg),然后卷组(vg)中可以划分多个逻辑卷(lv),逻辑卷(lv)格式化并挂载后供用户使用。在扩容的时候,如果是卷组(vg)中空间不足,需要先扩展卷组(vg)大小,然后再扩展逻辑卷(lv)大小,最后扩展文件系统大小。在缩容的时候,需要先将要缩容的目录umount掉,然后检查逻辑卷(lv)是否正常,再在文件系统层面缩容,lv层面缩容。
温馨提示:缩容有风险,操作需谨慎!!!
2、pv管理
创建pv: pvcreate /dev/sdc
删除pv: pvremove /dev/sdc
查看pv: pvs/pvdisplay
[root@linux1 cron]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@linux1 cron]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 49.80g 0
/dev/sdc lvm2 --- 20.00g 20.00g
[root@linux1 cron]# pvdisplay
--- Physical volume ---
"/dev/sdc" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID bhkm5q-Zlnh-AywU-1rwP-3Lcu-5Kr8-TtgNHf
[root@linux1 cron]# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.
[root@linux1 cron]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 49.80g 0
3、vg管理
创建vg:vgcreate vg_name pv_name [pv_name…]
扩展vg:vgextend vg_name pv_name
缩减vg:vgreduce vg_name pv_name
删除vg:vgremove vg_name
查看vg:vgs/vgdisplay
-------------查看当前的pv,只有一个pv,是系统用的-----------
[root@linux1 cron]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 49.80g 0
-------------创建2个pv,/dev/sdb和/dev/sdc,供vg使用-----------
[root@linux1 cron]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[root@linux1 cron]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@linux1 cron]#
------------创建vg,名字为myvg,包括/dev/sdb和/dev/sdc两个pv--------
[root@linux1 cron]# vgcreate myvg /dev/sdb /dev/sdc
Volume group "myvg" successfully created
-------------使用vgs查看vg,上一步创建的vg,大小40G----------
[root@linux1 cron]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 49.80g 0
myvg 2 0 0 wz--n- 39.99g 39.99g
----------将/dev/sdc从myvg中移除-----------
[root@linux1 cron]# vgreduce myvg /dev/sdc
Removed "/dev/sdc" from volume group "myvg"
---------移除后再次查看,vg大小变成了20G-----------
[root@linux1 cron]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 49.80g 0
myvg 1 0 0 wz--n- <20.00g <20.00g
---------将/dev/sdc重新加入vg中,查看vg大小为40G-------
[root@linux1 cron]# vgextend myvg /dev/sdc
Volume group "myvg" successfully extended
[root@linux1 cron]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 49.80g 0
myvg 2 0 0 wz--n- 39.99g 39.99g
---------使用vgdisplay查看vg详细信息----------
[root@linux1 cron]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 49.80 GiB
PE Size 4.00 MiB
Total PE 12749
Alloc PE / Size 12749 / 49.80 GiB
Free PE / Size 0 / 0
VG UUID zSA0xb-7zzu-YyKp-z3iT-6fcV-NGtc-8FYC5j
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
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 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID NbLOCd-fTk1-prWB-Obew-aJ7z-M54W-MLglcs
[root@linux1 cron]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 49.80g 0
myvg 2 0 0 wz--n- 39.99g 39.99g
----------使用vgremove删除vg,删除后使用vgs查看,发现vg已经不存在---------
[root@linux1 cron]# vgremove myvg
Volume group "myvg" successfully removed
[root@linux1 cron]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- 49.80g 0
4、lv管理
创建lv:
lvcreate -L #[mGT] -n lv_name vg_name
示例:lvcreate -L 2G -n mylv myvg
扩展lv:
lv层扩展:lvextend -L [+]#[MmGgTt] lv_name
示例:lvextend -L +1G mylv
文件层扩展:
resize2fs /dev/vg_name/lv_name (ext文件系统用这个命令)
xfs_growfs /dev/vg_name/lv_name (xfs文件系统用这个命令)
缩减lv:
卸载目录: umount /dev/vg_name/lv_name
检查lv:e2fsck -f /dev/vg_name/lv_name
文件层面resize:resize2fs /dev/vg_name/lv_name #[mMgGtT]
lv层面resize: lvreduce -L [-]#[MmGgTt] lv_name,例如:lvreduce -L -1G mylv
删除lv:lvremove /dev/vg_name/lv_name
查看lv:lvs/lvdisplay
---------------创建2个lv,名为mylv1和mylv2-----------------
[root@linux1 cron]# lvcreate -L 2G -n mylv1 myvg
Logical volume "mylv1" created.
[root@linux1 cron]# lvcreate -L 1G -n mylv2 myvg
Logical volume "mylv2" created.
---------------使用lvs查看上一步创建的lv------------------
[root@linux1 cron]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 45.89g
swap centos -wi-ao---- <3.91g
mylv1 myvg -wi-a----- 2.00g
mylv2 myvg -wi-a----- 1.00g
------------格式化mylv1为ext4格式------------
[root@linux1 cron]# mkfs.ext4 /dev/myvg/mylv1
mke2fs 1.42.9 (28-Dec-2013)
......
Writing superblocks and filesystem accounting information: done
------------格式化mylv2为xfs格式------------
[root@linux1 cron]# mkfs.xfs /dev/myvg/mylv2
......
realtime =none extsz=4096 blocks=0, rtextents=0
------------分别挂载两个lv,开始使用------------
[root@linux1 cron]# mount /dev/myvg/mylv1 /lv1
[root@linux1 cron]# mount /dev/myvg/mylv2 /lv2
[root@linux1 /]# echo "lv1" > /lv1/lv1
[root@linux1 /]# echo "lv2" > /lv2/lv2
[root@linux1 /]# cat /lv1/lv1
lv1
[root@linux1 /]# cat /lv2/lv2
lv2
-----------------挂载后查看目录大小---------------
[root@linux1 /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.6M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/mapper/centos-root 46G 34G 12G 75% /
/dev/sda1 197M 130M 68M 66% /boot
/dev/mapper/myvg-mylv1 2.0G 6.1M 1.8G 1% /lv1
/dev/mapper/myvg-mylv2 1014M 33M 982M 4% /lv2
---------------分别扩展mylv1和mylv2----------------
[root@linux1 /]# lvextend -L +1G /dev/myvg/mylv1
Size of logical volume myvg/mylv1 changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).
Logical volume myvg/mylv1 successfully resized.
[root@linux1 /]# lvextend -L +3G /dev/myvg/mylv2
Size of logical volume myvg/mylv2 changed from 1.00 GiB (256 extents) to 4.00 GiB (1024 extents).
Logical volume myvg/mylv2 successfully resized.
---------再次查看目录大小,可以发现仅lv层面扩展后,目录大小没变化-----------
[root@linux1 /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.6M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/mapper/centos-root 46G 34G 12G 75% /
/dev/sda1 197M 130M 68M 66% /boot
/dev/mapper/myvg-mylv1 2.0G 6.1M 1.8G 1% /lv1
/dev/mapper/myvg-mylv2 1014M 33M 982M 4% /lv2
----------文件系统层面扩展大小(ext4格式)------------------
[root@linux1 /]# resize2fs /dev/myvg/mylv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv1 is mounted on /lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/myvg/mylv1 is now 786432 blocks long.
----------文件系统层面扩展大小(xfs格式)------------------
[root@linux1 /]# xfs_growfs /dev/myvg/mylv2
meta-data=/dev/mapper/myvg-mylv2 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 1048576
------------文件系统层面扩展完成后再次查看目录大小,发现目录已经扩展-------
[root@linux1 /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.6M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/mapper/centos-root 46G 34G 12G 75% /
/dev/sda1 197M 130M 68M 66% /boot
/dev/mapper/myvg-mylv1 2.9G 6.1M 2.8G 1% /lv1
/dev/mapper/myvg-mylv2 4.0G 33M 4.0G 1% /lv2
[root@linux1 /]#
-----------再次查看之前目录下的文件,内容正常可查看----------
[root@linux1 /]# cat /lv1/lv1
lv1
[root@linux1 /]# cat /lv2/lv2
lv2
[root@linux1 /]#
---------------ext4文件格式缩容---------------
[root@linux1 /]# umount /lv1 --卸载
[root@linux1 /]# e2fsck -f /dev/myvg/mylv1 --检查
......略......
/dev/myvg/mylv1: 12/196608 files (0.0% non-contiguous), 30269/786432 blocks
------------------系统层面缩容------------------
[root@linux1 /]# resize2fs /dev/myvg/mylv1 1G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv1 to 262144 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 262144 blocks long.
------------------lv层面缩容------------------
[root@linux1 /]# lvreduce -L 1G /dev/myvg/mylv1
WARNING: Reducing active logical volume to 1.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv1? [y/n]: y
Size of logical volume myvg/mylv1 changed from 3.00 GiB (768 extents) to 1.00 GiB (256 extents).
Logical volume myvg/mylv1 successfully resized.
-----------缩容后查看lv大小,发现已经缩小-------------
[root@linux1 /]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 45.89g
swap centos -wi-ao---- <3.91g
mylv1 myvg -wi-a----- 1.00g
mylv2 myvg -wi-ao---- 4.00g
-------------再次挂载目录,查看之前的文件是否正常----------
[root@linux1 /]# mount /dev/myvg/mylv1 /lv1/
[root@linux1 /]# cat /lv1/lv1
lv1
---------------删除mylv1和mylv2-----------------
[root@linux1 /]# lvremove /dev/myvg/mylv1
Do you really want to remove active logical volume myvg/mylv1? [y/n]: y
Logical volume "mylv1" successfully removed
[root@linux1 /]# lvremove /dev/myvg/mylv2
Do you really want to remove active logical volume myvg/mylv2? [y/n]: y
Logical volume "mylv2" successfully removed
------------再次使用lvs查看,发现mylv1和mylv2已经被删除------------
[root@linux1 /]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 45.89g
swap centos -wi-ao---- <3.91g
[root@linux1 /]#