在Linux系统中,压缩分区通常是为了释放未使用的磁盘空间,以便将空间分配给其他分区或用于其他用途,这一过程需要谨慎操作,尤其是涉及系统分区时,需提前备份数据以防数据丢失,以下是压缩分区的详细步骤和注意事项。
准备工作
- 备份数据:压缩分区存在一定风险,尤其是系统分区,务必提前通过
rsync
或tar
等工具备份重要数据。 - 查看分区信息:使用
lsblk
或fdisk -l
命令查看当前磁盘分区布局,确认需要压缩的分区名称(如/dev/sda2
)、文件系统类型(如ext4、xfs)及挂载点。 - 卸载分区:压缩分区前必须卸载目标分区,若为系统分区(如根分区),需通过Live CD/USB启动系统进行操作,使用
umount /dev/sdXn
命令卸载,若提示“设备忙”,可尝试fuser -km /mnt/point
强制结束占用进程。
压缩分区步骤
检查并修复文件系统(针对ext4/xfs等)
为确保文件系统完整性,需先对分区进行检查。
- ext4文件系统:
e2fsck -f /dev/sdXn # -f强制检查,即使分区未挂载
- xfs文件系统:
xfs_repair -n /dev/sdXn # -n仅检查不修复,若发现问题需修复时去掉-n
调整文件系统大小
压缩分区需先缩小文件系统,再调整分区表,否则可能导致文件系统损坏。
- ext4文件系统:
使用resize2fs
命令将文件系统缩小到目标大小(如缩小至10GB):resize2fs /dev/sdXn 10G
若不指定大小,
resize2fs
会自动缩小至文件系统当前使用的最小空间。 - xfs文件系统:
XFS文件系统不支持在线缩小,需先卸载分区后使用xfs_growfs
(实际为缩小工具,需通过xfs_admin
调整参数),操作较复杂,建议优先使用ext4或使用LVM管理分区。
调整分区表
使用fdisk
或parted
工具调整分区大小,注意保留分区起始位置,仅修改结束位置。
-
以fdisk为例(适用于MBR/GPT分区表):
fdisk /dev/sdX
进入交互界面后:
- 输入
p
查看当前分区布局,记录目标分区的起始柱面(如2048); - 输入
d
删除目标分区; - 输入
n
创建新分区,起始柱号与原分区一致(2048),结束柱号根据目标大小计算(可通过sudo fdisk -l /dev/sdX
查看柱面大小与总柱面数,手动计算); - 输入
w
保存分区表。
- 输入
-
以parted为例(推荐用于GPT分区表):
parted /dev/sdX
进入交互界面后:
- 输入
print
查看分区信息,记录目标分区的Start(如1048kB)和File system; - 输入
resizepart <分区号> <目标大小>
(如resizepart 2 10G
); - 输入
quit
退出。
- 输入
重新挂载与验证
调整分区表后,重新挂载分区并验证文件系统是否正常:
mount /dev/sdXn /mnt/point # 重新挂载 df -hT /mnt/point # 查看分区大小是否正确 e2fsck -f /dev/sdXn # 再次检查文件系统(ext4)
注意事项
- 文件系统兼容性:并非所有文件系统都支持缩小,如NTFS需使用
ntfsresize
(需安装ntfs-3g工具),Btrfs支持在线调整但操作复杂,建议优先选择ext4。 - 分区对齐:调整分区时需保持4KB对齐(SSD必须),否则可能影响性能,可通过
parted
的align-check optimal <分区号>
验证。 - 系统分区风险:若压缩根分区()或引导分区,建议通过Live CD/USB操作,避免系统崩溃。
常用工具对比
工具 | 用途 | 适用场景 | 注意事项 |
---|---|---|---|
lsblk /fdisk |
查看分区布局 | 所有分区类型 | fdisk 不支持GPT分区大于2TB |
e2fsck |
检查/修复ext4文件系统 | ext4分区 | 需卸载分区或使用-f 强制 |
resize2fs |
调整ext4文件系统大小 | ext4分区 | 缩小前需卸载分区 |
parted |
调整分区表(支持GPT/MBR) | 所有分区类型,尤其大容量 | 操作前需确认分区起始位置 |
相关问答FAQs
Q1:压缩分区前必须卸载吗?
A1:是的,压缩分区(尤其是调整文件系统大小时)必须卸载目标分区,若为系统分区(如根分区),需通过Live CD/USB启动系统后操作,否则可能导致文件系统损坏或数据丢失,部分工具(如xfs_growfs
)要求严格卸载,不可在线操作。
Q2:压缩分区后,未使用的空间会自动合并到相邻分区吗?
A2:不会,压缩分区后,释放的空间会以“未分配”状态存在于磁盘末尾,需手动通过fdisk
/parted
创建新分区或扩展相邻分区(若相邻分区为LVM逻辑卷,可直接扩展),若需自动合并,建议使用LVM(逻辑卷管理)管理磁盘,支持在线调整分区大小。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25600.html