对于普通的分区,扩展度不高,一旦分区格式化完成,很难灵活的再增加
或者减少分区大小。为了解决这个问题,可以使用LVM(逻辑卷)。基本
过程是把物理磁盘或者分区初始化称为物理卷(PV),然后把PV加入
VG(卷组),最后在VG上划分逻辑的分区(LVM),LVM可以当做普通的
分区进行格式化和挂载。
LVM:可以动态调整分区大小
PV:物理卷
VG:卷组
LV:逻辑卷
PV
pvcreate 将实体partition创建成为PV
pvscan 搜寻目前系统里面任何具有PV的磁盘
pvdisplay 显示出目前系统上面的PV状态
pvremove 将PV属性移除,让该partition不具有PV属性
PV创建格式:pvcreate 磁盘目录{分区}
VG
vgcreate 创建VG
vgscan 搜寻目前系统上面是否有VG存在
vgdisplay 显示目前系统上面的VG状态
vgextend 在VG内增加额外的PV
vgreduce 在VG内移除PV
vgchange 设置VG是否启动
vgremove 删除一个VG
VG创建格式:vgcreate [-s N[mgt]] VG名称 PV名称
选项与参数:
-s 后面接PE的大小,单位可以是m g t(大小写都可)
·与PV不同的是,VG的名称是自定的,PV的名称是partition的设备文件名,VG的名称可自取
例:vgcreate -s 16M vgbdqn /dev/sdb{5..7}
LV
lvcreate:创建LV
lvscan:查询系统上面的LV
lvdisplay:显示系统上面的LV状态
lvextend:在LV里面增加容量
lvreduce:在LV里面减少容量
lvremove:删除一个LV
lvresize:对LV进行容量大小的调整
创建LV格式:
lvcreate [-L N[mgt]] [-n LV名称] VG名称
lvcreate [-l N] [-n LV名称] VG名称
选项与参数:
-L:后面写容量,容量的单位可以是M G T等,要注意的是,最小单位为PE,因此这个数量必须要是PE的倍数,若不相符,系统会自行计算最相近的容量
-l:后面可以接PE的“个数”,而不是数量。若要这么做,得要自行计算PE数
-n:后面接的就是LV的名称
格式化
格式化LV,这里注意一点,LV的平成必须使用全名。如/dev/vg/lv
例:mkfs.xfs /dev/vgbdqn/lvbdqn
挂载
创建挂载目录
mkdir /bdqn/yis -p
将lvbdqn挂载到 新建的目录下
mount /dev/vgbdqn/lvbdqn /bdqn/yjs
重新加载
mount -a
LVM扩展
XFS格式的扩容
LVM最大的特点就是弹性调整磁盘容量大小,如果我们要扩展LV的容量的话,需要怎么做。
如果VG空间够的话,直接LVextend就可以,如果VG空间不够的话,就要扩容VG容量。想要扩容VG的容量,前提就是有足够的物理卷,物理卷我们这里是虚拟机,直接添加,到公司以后就是购买硬盘。当物理磁盘添加成功之后,就是转化成PV,然后,用VGextend把创建好的PV加进来。
如果VG空间足够,想要扩展LV,直接就是LVextend,然后lvresize直接添加。
还有一种关于文件系统的增大与缩小,比如说ext2 3 4这个家族,还有xfs。
举例:
首先我们要考虑的是VG空间是否够
vgdisplay vgbdqn
确定了VG空间够用,那么我们直接来扩展
lvresize -L +500M /dev/vgbdqn/lvbdqn
注意的是大写的L后面直接跟容量大小,也可以小l后面跟PE的倍数
lvscan
df -hT /bdqn/yjs
LV是扩大了,但我们再看,挂载目录下文件系统的容量并没有增加,那么我们需要一条命令,让系统重新加载一下文件系统的大小。
xfs_info /bdqn/yjs
xfs_growfs /bdqn/yjs
xfs_info /bdqn/yjs
df -hT /bdqn/yjs
(目前的XFS文件系统中,并没有缩小文件系统容量的设计!EXT4文件系统有缩小的功能)
ext4格式的扩容
mkfs.ext4 /dev/testvg/testlv
mount /dev/testvg/testlv /mnt/lvtest/
df -h /mnt/lvtest/ -T
lvresize -L +500M /dev/testvg/testlv
df -h /mnt/lvtest/ -T
从上面步骤来看,ext4格式和xfs格式一样,如果LV扩容之后,挂载的目录仍没办法直接识别到新的空间,在ext4格式扩容之后,磁盘中源存储的文件不受影响
lvresize -L +200M /dev/testvg/testlv
//执行之前需要umount
umount /mnt/lvtest
e2fsck -f /dev/testvg/testlv
resize2fs /dev/testvg/testlv
mount /dev/testvg/testlv /mnt/lvtest/
df -hT /mnt/lvtest/
ext4格式缩容
(必须先缩减逻辑卷的逻辑边界,再缩减物理边界)
1、不能在线缩减,得先卸载;
2、确保缩减后的空间大小依然能存储原有的所有数据;
3、在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态。
[root@base ~]# lvs
LV VG Attr LSize Pool Origin Data%
Meta% Move Log Cpy%Sync Convert
bdqnlv bdqnvg -wi-a----- 9.00g
现在,将上述LV空间缩容至8G
[root@base ~]# umount /mnt/bdqn/
//对lv强制执行文件系统检测
[root@base ~]# e2fsck -f /dev/vgbdqn/lvbdqn
e2fsck 1.42.9 (28-Dec-2013)
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/vgbdqn/lvbdqn: 11/557056 files (0.0% non-contiguous),
76969/2228224 blocks
//使用resize2fs对lv逻辑卷的逻辑边界空间大小调整为缩减后的大小
[root@base ~]# resize2fs /dev/vgbdqn/lvbdqn 7G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vgbdqn/lvbdqn to 1835008
(4k) blocks.
The filesystem on /dev/vgbdqn/lvbdqn is now 1835008 blocks
long.
//使用lvreduce对lv逻辑卷的物理边界进行缩减
[root@base ~]# lvreduce -L 7G /dev/vgbdqn/lvbdqn
WARNING: Reducing active logical volume to 7.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgbdqn/lvbdqn? [y/n]: y
Size of logical volume vgbdqn/lvbdqn changed from 8.50
GiB (544 extents) to 7.00 GiB (448 extents).
Logical volume vgbdqn/lvbdqn successfully resized.
//然后继续对lv进行挂载操作
[root@base ~]# mount /dev/vgbdqn/lvbdqn /mnt/LVM2/
[root@base ~]# df -hT /mnt/LVM2/
Filesystem Type Size Used Avail Use%
Mounted on
/dev/mapper/vgbdqn-lvbdqn ext4 6.8G 37M 6.4G 1%
/mnt/LVM2