如何在调整分区大小过程中避免数据丢失?
美国、香港服务器
如何在调整分区大小过程中避免数据丢失?
12-27 来源:
在调整服务器分区大小的过程中,避免数据丢失的核心是 “全流程风险管控”,围绕 “事前备份、事中精准操作、事后校验” 三个核心环节,结合不同工具的特性规避关键风险点。以下是具体可落地的操作指南:
一、 事前准备:从根源降低数据丢失风险
这是最关键的一步,直接决定后续操作的安全性。
强制全量备份数据(核心兜底措施)调整分区前,必须备份目标分区内的所有数据,推荐两种可靠方式:
文件级备份(适合普通数据):用 rsync 或 tar 备份到其他硬盘 / 远程服务器
bash
运行
# 示例:将 /dev/sdb1(挂载到 /data)备份到 /backup 目录
sudo rsync -av --progress /data/ /backup/sdb1_backup_$(date +%Y%m%d)/
# 或打包为压缩文件
sudo tar -zcvf /backup/sdb1_backup_$(date +%Y%m%d).tar.gz /data/
块级备份(适合数据库等特殊数据):用 dd 克隆整个分区(需分区未挂载)
bash
运行
# 卸载分区后执行,将 sdb1 克隆到 sdc1(需 sdc1 容量≥sdb1)
sudo umount /dev/sdb1
sudo dd if=/dev/sdb1 of=/dev/sdc1 bs=1M status=progress
验证备份完整性:备份后随机抽查几个文件,或用 md5sum 对比源文件和备份文件的校验值。
卸载分区并检查文件系统完整性
必须卸载分区:挂载状态下调整分区,会直接损坏文件系统,导致数据丢失
bash
运行
sudo umount /dev/sdb1
# 验证卸载:无输出即成功
mount | grep /dev/sdb1
检查并修复文件系统错误:避免因文件系统损坏,导致调整后无法挂载
bash
运行
# ext4 文件系统
sudo e2fsck -f /dev/sdb1 # -f 强制检查(即使系统认为无错)
# xfs 文件系统
sudo xfs_repair /dev/sdb1
若检查出错误并修复,建议再次备份数据,再进行后续操作。
记录分区关键参数(防止重建分区出错)若用 fdisk 间接调整分区(删除旧分区 + 重建新分区),需记录旧分区的 起始扇区 和 分区类型,这两个参数是数据不丢失的核心:
bash
运行
sudo fdisk -l /dev/sdb
示例输出中需重点记录:
plaintext
设备 起点 终点 扇区 大小 类型
/dev/sdb1 2048 41943039 41940992 20G Linux 文件系统
起点(起始扇区):2048 → 重建分区时必须完全一致
类型:Linux 文件系统(ID=83)→ 重建后需恢复相同类型
二、 事中操作:精准执行,规避核心风险点
不同工具的操作风险不同,需针对性规避错误。
场景 1:用 fdisk 间接调整分区(删除 + 重建)
核心风险是 “起始扇区不一致” 和 “误删其他分区”,需严格遵循以下规则:
只删除目标分区,不碰其他分区
进入 fdisk 后,输入 p 反复确认分区列表,确保删除的是目标分区(如 /dev/sdb1),避免误删系统盘分区(/dev/sda1)。
重建分区时,起始扇区必须与旧分区一致
新建分区时,手动输入旧分区的起始扇区(如 2048),仅修改结束扇区来调整大小:
plaintext
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-1048575999, default 2048): 2048 # 手动输入旧起始扇区
Last sector: +50G # 目标大小
恢复分区类型,保存前再次确认
若旧分区是 swap 等特殊类型,输入 t 切换类型(如 82 对应 swap);
输入 p 查看新分区表,确认 起始扇区、分区号、类型 均正确;
确认无误后再输入 w 保存,禁止盲目保存。
场景 2:用 parted 直接调整分区(更安全)
parted 支持直接调整分区大小(resizepart 命令),无需删除重建,风险更低,操作时需注意:
进入 parted 后先切换为 “不自动同步” 模式
避免操作过程中意外修改分区表:
bash
运行
sudo parted /dev/sdb
(parted) unit s # 以扇区为单位,便于精准调整
(parted) mklabel gpt # 确保是 GPT 分区表(MBR 需注意 2TB 限制)
(parted) set 1 boot off # 非系统分区关闭 boot 标记
调整分区时,起始位置不变,仅修改结束位置
bash
运行
(parted) resizepart 1 # 调整分区 1
End? [41943039s]: 1048575999s # 输入新的结束扇区(扩容)
操作中若报错,立即退出不保存
输入 quit 退出 parted,若提示是否保存修改,选择 No,然后排查问题。
三、 事后校验:确认数据与分区均正常
调整完成后,必须验证分区和数据完整性,再投入使用。
同步文件系统大小(关键步骤)重建分区后,文件系统大小不会自动同步,需用工具扩展 / 缩小文件系统,否则新分区空间无法使用:
ext4 扩容:sudo resize2fs /dev/sdb1(自动扩展到分区最大空间)
xfs 扩容:先挂载分区,再执行 sudo xfs_growfs /data(/data 是挂载点)
ext4 缩容:需先执行 sudo resize2fs /dev/sdb1 10G 缩小文件系统,再调整分区大小(xfs 不支持缩容)。
挂载分区,验证数据完整性
bash
运行
# 临时挂载
sudo mount /dev/sdb1 /data
# 1. 查看分区大小是否符合预期
df -h /data
# 2. 检查文件数量和大小是否与备份前一致
ls -l /data | wc -l
# 3. 打开关键文件(如数据库文件、配置文件),确认内容无乱码
cat /data/important.conf
设置开机自动挂载,再次验证写入 /etc/fstab 后,执行 sudo mount -a 验证配置无误,避免开机无法挂载:
bash
运行
# 获取 UUID
sudo blkid /dev/sdb1
# 写入 fstab
echo "UUID=xxx-xxx /data ext4 defaults 0 0" | sudo tee -a /etc/fstab
# 验证配置
sudo mount -a
四、 额外避坑指南
禁止调整系统盘分区(如 /dev/sda1)
系统盘挂载在 / 目录,无法卸载,调整会导致系统崩溃。若需调整,需用 Live CD/U 盘启动服务器,在离线状态下操作。
xfs 文件系统禁止缩容
xfs 仅支持扩容,不支持缩容,强行缩容会导致数据完全丢失。
操作过程中禁止断电 / 重启服务器
分区表修改过程中断电,会导致分区表损坏,数据无法恢复。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快