前言:我的上一篇博文详细介绍了磁盘、格式以及分区知识,里面也涉及了LVM,本文主要实践下LVM和非LVM环境中Linux分区如何扩容和缩小。
分区调整原理:
Linux磁盘分区和磁盘格式紧密相连,想要调整分区大小,也必须调整磁盘格式大小。格式是建立在分区之上的,分区为我们提供空间,而我们真正能直接使用的是格式系统,例如windows下使用的ntfs文件系统一样。而在linux下使用的是ext系列格式或xfs格式的格式系统,所以格式系统只能比分区小,不能比分区大。这就意味着在扩容的时候需要先扩容分区,再对格式进行划分;在缩小的时候需要先缩小格式系统,再对分区进行缩小。这个时候问题来了,ext4格式系统是支持后期扩容和缩小的,但xfs格式系统只支持后期扩容并不支持后期缩小,除非备份整个分区数据后重新删除分区再格式化分配,这对于跟分区来说就不太现实了。
分区调整中LVM相比非LVM有哪些不同之处?
??????LVM中不是根分区都可以在线扩容和缩小,根分区是可以在线扩容,但不可以在线缩小;
非LVM无论哪个分区都不能在线扩容或缩小,均需要先卸载分区。
非LVM只能操作同一块磁盘,LVM可以操作多块磁盘
非LVM:
非LVM中无论什么格式系统扩容或缩小分区均是按这个步骤来:卸载分区--->扩容或缩小分区和格式系统--->重新挂载分区。且在扩容的时候,需要满足此分区相连后面有多余未分配磁盘空间,如果相连磁盘前面有多余空间(比如前一个分区缩小后多出来的未分配空间),这样是无法直接扩容的,只能备份数据删除此分区后调整;在缩小的时候,只能从此分区最后磁盘区往前缩小,不能从此分区磁盘开始位置缩小,可以参考下Linux图形化磁盘管理工具gparted中的分区详情:
①在xfs格式中:
xfs只支持扩容,我做过实验一般/home分区可以在root用户登录时卸载,需要用fuser -mvki /dev/sd4 或losf查看并kill掉关联此分区的进程再卸载,卸载后再对此分区进行扩容,扩容完了重新挂载到home分区即可,而对于/ /var /tmp则无法卸载,我尝试过卸载后会自动重启,不过可以用U盘进入救援模式(rescue)下不挂载此分区(选择skip)进行扩容操作,如案例:https://www.jianshu.com/p/7d23e6d1f313。
②在ext4格式中:
ext4支持扩容和缩小,home分区扩容或缩小均可以在root用户登录做卸载后调整,其他分区必须进救援模式进行扩容或缩小。案例:http://blog.chinaunix.net/uid-21704393-id-430400.html 收费案例:https://download.csdn.net/download/changyanmanman/6248313
延伸:
针对非跟分区,如:/var /home /tmp分区后期其实还有个办法可以进行扩容,加一块硬盘划分区,将它们中的内容同步过去,再将新磁盘这个分区重新挂载成/var /home /tmp。此方法参考:https://www.cnblogs.com/saszhuqing/p/8716644.html
LVM:
LVM在扩容的时候无需卸载分区,步骤为:
LVM在缩小的时候需要卸载lv分区再调整,步骤为: