## 一、前言:
- 当磁盘总量较大时,一般的默认分区会分配给根目录50G,其余的空间则会全部分配到home目录,这将导致系统无法存放太多的系统文件。除home目录挂载的分区外,其余目录的最大容量为50G,也会产生大量的存储空间无法被有效利用,故而我们需要对文件系统进行重新分区。
- 注意:当前的文件系统类型有多种,不同的文件系统的处理方式也不一样。比较常见的是`xfs`(CentOS默认安装分区类型)以及`ext4`。
## 二、实验背景:
- 磁盘总容量:150GB
- 根目录挂载:50GB
- 家目录挂载:97GB
- 其他挂载:3GB

## 三、系统分区
### 3.1 确认文件系统类型
- 首先需要确认系统采用哪种文件系统
- 命令:`sudo blkid`
- 示例:`ext4`

- 示例:`xfs`

### 3.2 系统类型—xfs
- 查看当前分区情况
- 命令:`df -h`

- 卸载`/dev/mapper/centos-home` 分区挂载
- 命令:`sudo umount /dev/mapper/centos-home`
- **注意**:建议在卸载分区前对home进行目录备份,变更大小将使得该分区不可用

- 缩小逻辑卷,使用 `lvresize` 命令来缩小逻辑卷的大小为目标值(50GB)
- 命令:`sudo lvresize --size 50G /dev/mapper/centos-home`
- **注意-1**:对正常的分区卷使用该命令强行改变分区大小,将会导致该文件分区不可用,故建议先对该卷挂载的目录进行备份处理
- **注意-2**:后续重新挂载该分区报错,可以尝试恢复文件原分区大小来恢复挂载
- **注意-3**:在对该目录文件留有备份或不需要home目录下的文件,建议直接删除该分区,将所有的空间置于闲置,采用该方法来变更逻辑卷大小,后续该逻辑卷也无法重新挂载,将损失50GB的空间未利用。

- 将所有的闲置空间通过`lvextend`分配给根分区
- 命令:`sudo lvextend -l +100%FREE /dev/mapper/centos-root`

- 让系统识别新的根分区挂载
- 命令:`sudo lvextend -l +100%FREE /dev/mapper/centos-root`

- 完成调节根分区!

- 若不对原home分区挂载逻辑卷进行处理,将会导致损失50GB可用空间,故建议删除该分区,将所有空间全部加载到根分区
- 重新挂载分区:`mount /dev/mapper/centos-home`(失败操作,该逻辑卷异常,无法正常挂载)
- 删除分区:`lvremove /dev/mapper/centos-home`
- 查看磁盘详情:`vgdisplay -v`
### 3.3 系统类型—etx4
- 查看当前分区情况
- 命令:`df -h`

- 卸载`/dev/mapper/centos-home` 分区挂载
- 命令:`sudo umount /dev/mapper/centos-home`

- 检查`/dev/mapper/centos-home`逻辑卷
- 命令:`e2fsck -f /dev/mapper/centos-home`

- 压缩`/dev/mapper/centos-home` 逻辑卷到50GB
- 命令:`sudo lvresize --resizefs --size 50G /dev/mapper/centos-home`

- 重新挂载`/dev/mapper/centos-home`逻辑卷
- 命令:`mount /dev/mapper/centos-home`
- **注意**:xfs格式的文件系统在减小逻辑卷大小后,无法直接挂载,而ext4则可以!

- 将所有的闲置空间通过`lvextend`分配给根分区
- 命令:`sudo lvextend -l +100%FREE /dev/mapper/centos-root`

- 让系统识别调整后的分区
- 命令:`xfs_growfs /dev/mapper/centos-root`

- 系统分区调整成功(完美!)
- 注:相较于`xfs`文件系统,`etx4`调整分区更容易,而且调小分区空间后,也不会导致分区出现异常,譬如无法挂载等问题。


Linux磁盘重新分区