许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。
LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。
LVM的配置过程也很简单,并不是很难,为此,我画了一张图文并茂的解析图,解析了LVM创建的整个过程。更详细的理论知识还请参看一些教程或者去Google哦!
![](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/dad43119befc4d21a011ba8ba1fa140a.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![clip_image002 clip_image002](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/2499687b96234dfc84961dd89c796ef5.jpeg?x-oss-process=image/resize,w_1400/format,webp)
实验环境:
![clip_image001 clip_image001](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/6a6d67354cc842f9ab38339384454576.png?x-oss-process=image/resize,w_1400/format,webp)
![clip_image003 clip_image003](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/cf515223fca0427c9f80d41d48507094.jpeg?x-oss-process=image/resize,w_1400/format,webp)
首先从空的硬盘sdb上创建两个分区sdb1 1G,sdb2 2G. 为接下来做LVM做准备.
![clip_image004 clip_image004](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/5e667e3aba0a430fa1b48b616d705a61.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![clip_image006 clip_image006](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/19947ede2d3e4ea790e83c2a15eb3386.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![clip_image008 clip_image008](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/dfb0671e915942b1884b2a11c7ea2241.jpeg?x-oss-process=image/resize,w_1400/format,webp)
为了后期便于维护管理,记得给分区加上标示,这样即使你不在的情况下,别人看到标示了就不会轻易动这块区域了. LVM的标识是8e,设置完成后记得按w保存
![clip_image010 clip_image010](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/a8d1b85c57a04cd3a7789e859f84b15c.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![clip_image012 clip_image012](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/ef3eda3d937540ea801abfa7dbce52d1.jpeg?x-oss-process=image/resize,w_1400/format,webp)
一、创建逻辑卷
将新创建的两个分区/dev/sdb1 /dev/sdb2转化成物理卷,主要是添加LVM属性信息并划分PE存储单元.
![clip_image014 clip_image014](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/2cdc28ebab9046eda74c9f8add6795e2.jpeg?x-oss-process=image/resize,w_1400/format,webp)
创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组.可以看出默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。
![clip_image016 clip_image016](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/2cf278e82b4e45ae832c86a3adf1501a.jpeg?x-oss-process=image/resize,w_1400/format,webp)
从物理卷vgdata上面分割500M给新的逻辑卷lvdata1.
![clip_image018 clip_image018](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/302db3588da148f387cd0bd9bff726c8.jpeg?x-oss-process=image/resize,w_1400/format,webp)
使用mkfs.ext4命令在逻辑卷lvdata1上创建ext4文件系统.
![clip_image020 clip_image020](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/dee4ee41f9284ed587f10972ce36f9e9.jpeg?x-oss-process=image/resize,w_1400/format,webp)
将创建好的文件系统/data1挂载到/data1上.(创建好之后,会在/dev/mapper/生成一个软连接名字为”卷组-逻辑卷”)
![clip_image022 clip_image022](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/b9386a36b42648459f34f692179731f6.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![clip_image024 clip_image024](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/04bc2e09a60a45b6a4dfb7a8eae810a8.jpeg?x-oss-process=image/resize,w_1400/format,webp)
便于以后服务器重启自动挂载,需要将创建好的文件系统挂载信息添加到/etc/fstab里面.UUID可以通过 blkid命令查询.
![clip_image026 clip_image026](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/a47662ce1e1a441d8337e18b32115e6a.jpeg?x-oss-process=image/resize,w_1400/format,webp)
为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷data1,然后使用mount –a 使内核重新读取/etc/fstab,看是否能够自动挂载.
![clip_image028 clip_image028](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/39d0e8b2815b4fa7821a99c990490747.jpeg?x-oss-process=image/resize,w_1400/format,webp)
二、逻辑卷lvdata1不够用了,如何扩展。
给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令lvextend –L +500M /dev/vgdata/lvdata1或者lvextend –l 2.5G /dev/vgdata/lvdata1 给lvdata1增加500M空间(lvdata1目前是2G空间)设置完成之后,记得使用resize2fs命令来同步文件系统。
![clip_image030 clip_image030](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/b670f08239b94af0bbdc5cf9ff2144db.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![clip_image032 clip_image032](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/6dcc757e5668492d949afda178850be9.jpeg?x-oss-process=image/resize,w_1400/format,webp)
三、当卷组不够用的情况下,如何扩大卷组
重新从第二块硬盘上创建一个分区sdb3,具体操作步骤省略。并将创建好的分区加入到已经存在的卷组vgdata中。通过pvs命令查看是否成功。
![clip_image034 clip_image034](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/e2962482a58541919d4e1a668013303e.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![clip_image036 clip_image036](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/9c0d8607c5da48d58e2e1a462eb87b4f.jpeg?x-oss-process=image/resize,w_1400/format,webp)
四、当硬盘空间不够用的情况下,如果减少逻辑卷的空间释放给其他逻辑卷使用。
减少逻辑卷空间,步骤如下
1、 先卸载逻辑卷data1
2、 然后通过e2fsck命令检测逻辑卷上空余的空间。
3、 使用resize2fs将文件系统减少到700M。
4、 再使用lvreduce命令将逻辑卷减少到700M。
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。
![clip_image038 clip_image038](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/747947558b7949ee95df980db17e0ccf.jpeg?x-oss-process=image/resize,w_1400/format,webp)
完成之后,就可以通过mount命令挂载重新使用了。
![clip_image040 clip_image040](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/ebb9d4758ac44f559914013428efcc1c.jpeg?x-oss-process=image/resize,w_1400/format,webp)
五、如果某一块磁盘或者分区故障了如何将数据快速转移到相同的卷组其他的空间去。
1、通过pvmove命令转移空间数据
2、通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去。
3、通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。
4、手工拆除硬盘或者通过一些工具修复分区。
![clip_image042 clip_image042](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/817f9475866848b8a7a8a2d011fa3bab.jpeg?x-oss-process=image/resize,w_1400/format,webp)
![clip_image044 clip_image044](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/56ba2b79bdf24e9a88f8595d0d8c36b1.jpeg?x-oss-process=image/resize,w_1400/format,webp)
六、删除整个逻辑卷
1、先通过umount命令卸载掉逻辑卷lvdata1
2、修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来。
3、通过lvremove 删除逻辑卷lvdata1
4、通过vgremove 删除卷组vgdata
5、通过pvremove 将物理卷转化成普通分区。
![clip_image046 clip_image046](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/a9949dbbcdc64d46b61ceb49ae5a29f4.jpeg?x-oss-process=image/resize,w_1400/format,webp)
删除完了,别忘了修改分区的id标识。修改成普通Linux分区即可。
![clip_image048 clip_image048](https://ucc.alicdn.com/yw5v4qd5o6oou/developer-article604669/20241020/2b23f60f7177435c8c14c8cb11983c2e.jpeg?x-oss-process=image/resize,w_1400/format,webp)
总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。