一、LVM简介
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制.Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
二、基本术语
- 物理卷(Physical Volume,PV):指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元;
- 卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷);
- 逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
从上面的定义我们可以了解到:逻辑卷(LV)是建立在卷组(VG)上的,而卷组(VG)则是建立在物理卷(PV)上的。
从中还可以作更深一层的理解:LVM的可伸缩性无非是建立在卷组(VG)和逻辑卷(LV)的可伸缩性的基础上的:
– 只要存在尚未使用的磁盘或者分区,就可以动态的扩展卷组(VG)的大小;
– 只要卷组(VG)中存在尚未分配的空间,就可以动态的扩展逻辑卷的大小。
从以上二点出发就可以达到动态调整分区大小的目的。
因为本文中很多的命令都是以上述术语的缩写开头,因此了解各个缩写对命令的记忆和使用是非常有帮助的。
三、基本命令
示例中的 vg1
和 lv1
分别为物理卷组名
和逻辑卷名
,可自行替换成任意名称。
分类 | 命令 | 说明 | 示例 |
---|---|---|---|
PV | pvcreate | 创建物理卷 | pvcreate /dev/sdb1 |
PV | pvdisplay | 显示已创建的物理卷的详细信息 | |
PV | pvs | 显示已创建的物理卷的汇总信息 | |
PV | pvremove | 删除物理卷 | pvremove /dev/sdb1 |
VG | vgcreate | 创建卷组 | pvcreate vg1 /dev/sdb1 /dev/sdb2 … |
VG | vgdisplay | 显示已创建的卷组的详细信息 | |
VG | vgs | 显示已创建的卷组的汇总信息 | |
VG | vgextend | 扩展卷组 | vgextend vg1 /dev/sdb3 … |
VG | vgreduce | 收缩卷组 | vgreduce vg1 /dev/sdb5 |
VG | vgremove | 删除卷组 | vgremove vg1 |
LV | lvcreate | 创建逻辑卷 | lvcreate -L 1000M -n lv1 vg1 |
LV | lvdisplay | 显示已创建的逻辑卷的详细信息 | |
LV | lvs | 显示已创建的逻辑卷的汇总信息 | |
LV | lvresize | 重设逻辑卷大小 | lvresize -L 1000M /dev/vg1/lv1 |
LV | resize2fs | 更新逻辑卷信息(ext4) | resize2fs /dev/vg1/lv1 |
LV | lvremove | 删除逻辑卷 | lvremove /dev/vg1/lv1 |
LV | xfs_growfs | 更新逻辑卷信息(xfs) | xfs_growfs /dev/vg1/lv1 |
LV | e2fsck | 检查逻辑卷错误(ext4) | e2fsck -f /dev/vg1/lv1 |
四、实验的操作环境
- 虚拟机:VirtualBox 5.6.2
- 操作系统:CentOS 7.4
- 磁盘:二块:一块安装操作系统(/dev/sda),容量为20GB; 另一块用于进行lvm分区操作(/dev/sdb),容量为10GB
- 因为CentOS 7.4默认没有安装支持上述命令的软件包,因此需要提前安装
lvm2
软件包,具体命令为:yum install -y lvm2
五、创建LVM
lvm2
软件包,具体命令为:yum install -y lvm2
在这里我带着大家从一块全新的磁盘开始,一步步创建LVM分区。
流程
先介绍一下流程,以便大家从总体上对创建LVM有一个了解。
1. 对新磁盘进行分区操作(fdisk
);
2. 逐一变更分区类型为Linux LVM
(Hex代码为:8e
);
3. 针对每个分区创建物理卷(pvcreate
);
4. 创建卷组(vgcreate
);
5. 创建逻辑卷(lvcreate
);
6. 格式化(mkfs.ext4
/mkfs.xfs
),并挂载(mount
)。
(一)、磁盘分区及分区类型更改
使用命令fdisk
对需要进行LVM操作的磁盘/dev/sdb
进行分区
fdisk /dev/sdb
- 1
输入n
进行分区,一共分五个分区,前三个是主分区,后二个分区在扩展分区里,每个分区2GB。以下只列出第一个分区的操作:
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (4196352-20971519,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-20971519,默认为 20971519):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB
输入p
打印分区完成后的情况:
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x231b271d
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 12584959 2097152 83 Linux
/dev/sdb4 12584960 20971519 4193280 5 Extended
/dev/sdb5 12587008 16781311 2097152 83 Linux
/dev/sdb6 16783360 20971519 2094080 83 Linux
分区完成后除了扩展分区(上图的Extended)外,需要变更所有分区的磁盘类型:原类型为Linux
,变更后为Linux LVM
。这里只列出针对第一个分区的操作:
命令(输入 m 获取帮助):t
分区号 (1-6,默认 6):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
输入p
打印分区类型变更后的情况:
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x231b271d
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 8e Linux LVM
/dev/sdb2 4196352 8390655 2097152 8e Linux LVM
/dev/sdb3 8390656 12584959 2097152 8e Linux LVM
/dev/sdb4 12584960 20971519 4193280 5 Extended
/dev/sdb5 12587008 16781311 2097152 8e Linux LVM
/dev/sdb6 16783360 20971519 2094080 8e Linux LVM
以上操作完成后,输入w
将操作写入磁盘,完成分区:
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
(二)、创建物理卷
针对新创建的分区创建物理卷,这是创建LVM的第一步。使用如下命令对每一个分区进行操作:
pvcreate /dev/sdb1
- 1
其他分区的操作类似,这里就不逐一介绍了。
创建完物理卷后,有二种查看的方法:
1、详细信息:pvdisplay,这里只列出第一个分区的信息:
[root@localhost ~]# pvdisplay
"/dev/sdb1" is a new physical volume of "2.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID SCIOKN-i2fO-PylF-CJGI-T8Yw-e2dH-BYX0xq
2、汇总信息:pvs
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 2.00g 2.00g
/dev/sdb3 lvm2 --- 2.00g 2.00g
/dev/sdb5 lvm2 --- 2.00g 2.00g
/dev/sdb6 lvm2 --- <2.00g <2.00g
(三)、创建卷组
创建物理卷完成后,就需要将物理卷加入到特定的卷组。
下面的操作将前二个分区/dev/sdb1
和/dev/sdb2
加入到名称为gv1
的卷组中:
[root@localhost ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
Volume group "vg1" successfully created
- 1
- 2
查看卷组也有二种方法进行查看:详细信息和汇总信息:
1、详细信息:
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg1
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 3.99 GiB
PE Size 4.00 MiB
Total PE 1022
Alloc PE / Size 0 / 0
Free PE / Size 1022 / 3.99 GiB
VG UUID N2mK2P-tvev-bex2-LX4C-1DIs-nFci-Ay5e8H
2、汇总信息:
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 3.99g 3.99g
(四)、创建逻辑卷
创建卷组完成后,我们就可以在卷组上创建逻辑卷。使用下面的命令,我们在卷组vg1
上创建一个名称为lv1
、大小为1GB的逻辑卷:
[root@localhost ~]# lvcreate -L 1G -n lv1 vg1
Logical volume "lv1" created.
查看逻辑卷也有二种方法进行查看:详细信息和汇总信息:
1、详细信息:
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID LaLTid-eLAG-DNlq-h4fT-Xiia-PTDG-HnXL3i
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-11-08 09:27:21 +0800
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
2、汇总信息:
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 1.00g
(五)、格式化逻辑卷并挂载
使用下面的命令,对逻辑卷lv1
进行格式化:
[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1
格式化完成后,将该逻辑卷挂载到目录/mnt
上:
[root@localhost ~]# mount /dev/vg1/lv1 /mnt
查看挂载后的情况:
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 17G 1.5G 15G 10% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 6.6M 490M 2% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 976M 115M 795M 13% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg1-lv1 976M 2.6M 907M 1% /mnt
(六)、设置开机自动挂载分区
1、查看逻辑卷的UUID:
[root@localhost ~]# blkid
/dev/sda1: UUID="ee8a3a12-cb3e-4890-b255-4b706a718600" TYPE="ext4"
/dev/sda2: UUID="5863f890-3eb8-41a5-8239-4f41f48299bd" TYPE="ext4"
/dev/sda3: UUID="f7c02dd9-73e9-4a26-8da7-a2ca29f58747" TYPE="swap"
/dev/sdb1: UUID="2l1Llw-yFjj-YwbF-TtiN-P0XI-i7W8-9Lq4CF" TYPE="LVM2_member"
/dev/sdb2: UUID="h3uEZx-gw1W-1PMM-PPVT-dAuQ-zf1i-3RZThD" TYPE="LVM2_member"
/dev/sdb3: UUID="aFBSn0-0hwb-Mklg-vCKU-nhmF-lk1k-0uP9Ns" TYPE="LVM2_member"
/dev/sdb5: UUID="5kT4gk-6TRC-2jCj-Sbb5-HAeo-P0CE-cJZzm8" TYPE="LVM2_member"
/dev/sdb6: UUID="57LR2H-Kaua-vY0v-QgbQ-9Eej-qHJe-zXsVvf" TYPE="LVM2_member"
/dev/mapper/vg1-lv1: UUID="11262806-d796-4f49-8f08-897181e8ec33" TYPE="ext4"
最后一行就是逻辑卷的信息,把该行的UUID复制出来,不含引号。
2、编辑fstab:
在最后添加一行,输入如下内容:
UUID=11262806-d796-4f49-8f08-897181e8ec33 /mnt ext4 defaults 0 0
然后保存退出(:wq
),重启后查看结果,如果能正常挂载就没有问题了。
以上便完成的了LVM的创建和挂载的全部流程。
六、卷组扩容
我们上一节创建LVM
中创建了五个分区,但只使得了其中二个分区,在这一节中,我们要把剩余的三个分区加入到卷组vg1
中,对其进行扩容。下面的流程只针对新加入的磁盘或者分区,因此这里对流程1-3步的操作就不再做介绍了,具体的操作方法可参照创建LVM
。
流程
- 创建新的磁盘分区(fdisk);
- 变更分区类型为
Linux LVM
(Hex代码为:8e
);
- 创建物理卷(
pvcreate
);
- 扩展卷组(
vgextend
);
扩展卷组
Linux LVM
(Hex代码为:8e
);pvcreate
);vgextend
);使用如下命令将剩余的三个分区加入到卷组vg1
[root@localhost ~]# vgextend vg1 /dev/sdb3 /dev/sdb5 /dev/sdb6
Volume group "vg1" successfully extended
查看扩展后的卷组:
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 5 1 0 wz--n- 9.98g 8.98g
已经完了卷组的扩容。
七、卷组缩容
如果想要对卷组缩容,实际上就是要把加入的卷组的物理卷从卷组中移除。
这时需要注意的是:如果要移除的物理卷,已经被使用的话,移除操作可能会对文件系统造成操作。因此移除操作应针对未被使用的物理卷。
(一)、确认物理卷使用情况
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a-- <2.00g 0
/dev/sdb2 vg1 lvm2 a-- <2.00g 0
/dev/sdb3 vg1 lvm2 a-- <2.00g <1.99g
/dev/sdb5 vg1 lvm2 a-- <2.00g <2.00g
/dev/sdb6 vg1 lvm2 a-- <2.00g <2.00g
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a-- <2.00g 0
/dev/sdb2 vg1 lvm2 a-- <2.00g 0
/dev/sdb3 vg1 lvm2 a-- <2.00g <1.99g
/dev/sdb5 vg1 lvm2 a-- <2.00g <2.00g
/dev/sdb6 vg1 lvm2 a-- <2.00g <2.00g
只有PFree
等于PSize
,也就是说没有被使用的物理卷,还能被列入考虑范围。根据上面命令的执行结果,只有/dev/sdb5
和/dev/sdb6
二个可以被移除。
查看卷组的使用情况:
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 5 0 0 wz--n- 5.99g 9.98g
(二)、卷组缩容
[root@localhost ~]# vgreduce vg1 /dev/sdb5 /dev/sdb6
Removed "/dev/sdb5" from volume group "vg1"
Removed "/dev/sdb6" from volume group "vg1"
查看结果:
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 3 1 0 wz--n- <5.99g <1.99g
可以看到VFree
的容量已经减少了,到此完成了卷组缩容
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2017-12/149610p2.htm
八、逻辑卷扩容(ext4格式)
流程
- 卸载逻辑卷(
umount
)
- 重设逻辑卷(
LV
)大小(lvresize
);
- 检测磁盘(
e2fsck
);
- 重设文件系统大小(
resize2fs
);
- 重新挂载逻辑卷(
mount
)
(一)、卸载逻辑卷
- 卸载逻辑卷(
umount
) - 重设逻辑卷(
LV
)大小(lvresize
); - 检测磁盘(
e2fsck
); - 重设文件系统大小(
resize2fs
); - 重新挂载逻辑卷(
mount
)
(一)、卸载逻辑卷
使用如下命令卸载掉挂载在/mnt
上的逻辑卷:
[root@localhost ~]# umount /mnt
(二)、重设逻辑卷大小
使用下面的命令,将逻辑卷lv1
的大小从1GB扩容至3GB:
[root@localhost ~]# lvresize -L 3G /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 1.00 GiB (256 extents) to 3.00 GiB (768 extents).
Logical volume vg1/lv1 successfully resized.
查看逻辑卷信息:
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 3.00g
(三)、检测磁盘
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/65536 files (0.0% non-contiguous), 12955/262144 blocks
(四)、重设文件系统大小
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/65536 files (0.0% non-contiguous), 12955/262144 blocks
因为重设逻辑卷的大小后,文件系统的大小并没有一起进行改变,因此还需要针对文件系统进行一次操作。
[root@localhost ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 786432 (4k) blocks.
The filesystem on /dev/vg1/lv1 is now 786432 blocks long.
(五)、重新挂载逻辑卷,并查看信息:
逻辑卷大小进行变更后,并不需要对逻辑卷重新进行格式化,直接挂载便可使用。
[root@localhost ~]# mount /dev/vg1/lv1 /mnt
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 17G 1.5G 15G 10% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 6.6M 490M 2% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 976M 115M 795M 13% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg1-lv1 3.0G 3.0M 2.8G 1% /mnt
九、逻辑卷扩容(xfs格式)
流程
- 重设逻辑卷(
LV
)大小(lvresize
);
- 重设文件系统大小(
xfs_grows
).
xfs扩容不需要进行逻辑卷卸载.
(一)、查看所要操作的逻辑卷的文件系统是否是xfs
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 ext4 17G 1.5G 15G 10% /
devtmpfs devtmpfs 488M 0 488M 0% /dev
tmpfs tmpfs 497M 0 497M 0% /dev/shm
tmpfs tmpfs 497M 6.6M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 ext4 976M 115M 795M 13% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg1-lv1 xfs 3.0G 33M 3.0G 2% /mnt
(二)、重设逻辑卷大小
- 重设逻辑卷(
LV
)大小(lvresize
); - 重设文件系统大小(
xfs_grows
).
xfs扩容不需要进行逻辑卷卸载.
(一)、查看所要操作的逻辑卷的文件系统是否是xfs
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 ext4 17G 1.5G 15G 10% /
devtmpfs devtmpfs 488M 0 488M 0% /dev
tmpfs tmpfs 497M 0 497M 0% /dev/shm
tmpfs tmpfs 497M 6.6M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 ext4 976M 115M 795M 13% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg1-lv1 xfs 3.0G 33M 3.0G 2% /mnt
(二)、重设逻辑卷大小
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 ext4 17G 1.5G 15G 10% /
devtmpfs devtmpfs 488M 0 488M 0% /dev
tmpfs tmpfs 497M 0 497M 0% /dev/shm
tmpfs tmpfs 497M 6.6M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 ext4 976M 115M 795M 13% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg1-lv1 xfs 3.0G 33M 3.0G 2% /mnt
将逻辑卷从3GB扩容到4GB:
[root@localhost ~]# lvresize -L 4G /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 3.00 GiB (768 extents) to 4.00 GiB (1024 extents).
Logical volume vg1/lv1 successfully resized.
(三)、重设文件系统大小
[root@localhost ~]# xfs_growfs /dev/vg1/lv1
meta-data=/dev/mapper/vg1-lv1 isize=512 agcount=4, agsize=196608 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=786432, 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 786432 to 1048576
[root@localhost ~]# xfs_growfs /dev/vg1/lv1
meta-data=/dev/mapper/vg1-lv1 isize=512 agcount=4, agsize=196608 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=786432, 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 786432 to 1048576
查看结果:
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 ext4 17G 1.5G 15G 10% /
devtmpfs devtmpfs 488M 0 488M 0% /dev
tmpfs tmpfs 497M 0 497M 0% /dev/shm
tmpfs tmpfs 497M 6.6M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 ext4 976M 115M 795M 13% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg1-lv1 xfs 4.0G 33M 4.0G 1% /mnt
十、逻辑卷缩容(ext4格式)
这里需要注意几点:
1. 缩容操作只针对ext4
文件系统,xfs
文件系统不支持缩容;
2. 缩容流程的第2-3步是扩容流程的第3-4步。总体的操作思路是:扩容操作先改变逻辑卷大小,再重设文件系统大小;而缩容操作是先重设文件系统大小,再改变逻辑卷大小;在重设文件系统之前,必须先进行磁盘检测。
流程
- 卸载逻辑卷(
umount
)
- 检测磁盘(
e2fsck
);
- 重设文件系统大小(
resize2fs
);
- 重设逻辑卷(
LV
)大小(lvresize
);
- 重新挂载逻辑卷(
mount
)
(一)、卸载逻辑卷
umount
)e2fsck
);resize2fs
);LV
)大小(lvresize
);mount
)使用如下命令卸载掉挂载在/mnt
上的逻辑卷:
[root@localhost ~]# umount /mnt
(二)、检测磁盘
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/196608 files (0.0% non-contiguous), 21308/786432 blocks
(三)、重设文件系统大小
[root@localhost ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg1/lv1: 11/196608 files (0.0% non-contiguous), 21308/786432 blocks
将逻辑卷lv1
的文件系统大小缩至2GB
[root@localhost ~]# resize2fs /dev/vg1/lv1 2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 524288 (4k) blocks.
The filesystem on /dev/vg1/lv1 is now 524288 blocks long.
(四)、重设逻辑卷大小
[root@localhost ~]# lvresize -L 2G /dev/vg1/lv1
WARNING: Reducing active logical volume to 2.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
Size of logical volume vg1/lv1 changed from 3.00 GiB (768 extents) to 2.00 GiB (512 extents).
Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# lvresize -L 2G /dev/vg1/lv1
WARNING: Reducing active logical volume to 2.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
Size of logical volume vg1/lv1 changed from 3.00 GiB (768 extents) to 2.00 GiB (512 extents).
Logical volume vg1/lv1 successfully resized.
由于缩容操作可能会对现有的数据造成损坏,因此该操作会需要用户进行确认一次。
(五)、挂载分区并查看信息
[root@localhost ~]# mount /dev/vg1/lv1 /mnt
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 17G 1.5G 15G 10% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 6.6M 490M 2% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 976M 115M 795M 13% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg1-lv1 2.0G 9.0M 1.8G 1% /mnt
十一、删除操作
[root@localhost ~]# mount /dev/vg1/lv1 /mnt
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 17G 1.5G 15G 10% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 6.6M 490M 2% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 976M 115M 795M 13% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/vg1-lv1 2.0G 9.0M 1.8G 1% /mnt
如果不需要使用lvm,就涉及到逻辑卷、卷组、物理卷的删除操作,下面我来一下进行介绍。
(一)、删除逻辑卷
查看现有的逻辑卷:
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 4.00g
先卸载逻辑卷:
[root@localhost ~]# umount /mnt
使用lvremove
命令进行删除操作:
[root@localhost ~]# lvremove /dev/vg1/lv1
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
Logical volume "lv1" successfully removed
查看执行结果:
[root@localhost ~]# lvs
由于这里我只有lv1
这一个逻辑卷,所以删除后,执行查看,没有任何结果返回。
(二)、删除卷组
查看现有的卷组:
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 3 0 0 wz--n- <5.99g <5.99g
使用vgremove
命令来进行删除操作:
[root@localhost ~]# vgremove vg1
Volume group "vg1" successfully removed
查看执行结果:
[root@localhost ~]# vgs
由于这里我只有vg1
这一个卷组,所以删除后,执行查看,没有任何结果返回
(三)、删除物理卷
查看现有的物理卷:
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 2.00g 2.00g
/dev/sdb3 lvm2 --- 2.00g 2.00g
/dev/sdb5 lvm2 --- 2.00g 2.00g
/dev/sdb6 lvm2 --- <2.00g <2.00g
下面使用pvremove
命令来进行删除/dev/sdb6
:
[root@localhost ~]# pvremove /dev/sdb6
Labels on physical volume "/dev/sdb6" successfully wiped.
查询执行结果:
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 2.00g 2.00g
/dev/sdb2 lvm2 --- 2.00g 2.00g
/dev/sdb3 lvm2 --- 2.00g 2.00g
/dev/sdb5 lvm2 --- 2.00g 2.00g
/dev/sdb6
已经从物理卷中删除了。如果将剩余物理卷逐一删除,就可以将磁盘恢复到创建lvm
之前的状态了。当然,你如果要重新分区的话,还要使用fdisk
命令来进行相关操作。
十二、LVM容灾
LVM从本质上说只是一种解决运维过程中出现的指定分区容量耗尽问题的解决方案。虽然卷组的操作与raid操作十分类似,但是如果仔细分析就会发现LVM根本不存在容灾的功能。如果物理卷所在分区或者磁盘出现问题,可能会导致整个LVM出现问题且不可恢复。因此在日常运维过程中还是需要将LVM建立在raid5或者raid10的基础之上,同时日常定期的备份工作也是万万不可缺少的。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149610.htm