马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
把一块盘的一堆小分区并成一个大分区,听起来是改几行配置的事,其实动的是磁盘分区表——删错一个分区号,数据就没了。这篇用 Ubuntu 22.04 LTS 的实操过程,把"看分区 → 卸载 → fdisk 删建 → 格式化 → 挂上"整条链路走一遍,顺带把分区表输出怎么看讲清楚,免得面对满屏的 sda1 sda2 sda3 时心里没底。
一、先看懂 fdisk 的输出
动手前先打印分区表:
sudo fdisk -l
输出里两块关键内容:一块盘的总体信息(容量、磁盘标签类型、标识符),以及下面的分区列表。以一块 447G 的盘为例,大概是这个样子:
Disk /dev/sda:447.13 GiB,937703088 个扇区
磁盘标签类型:dos
磁盘标识符:0xb729ad70
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 * 2048 1126399 1124352 549M 7 HPFS/NTFS/exFAT
/dev/sda2 1126400 124657224 123530825 58.9G 7 HPFS/NTFS/exFAT
/dev/sda3 124657664 125837311 1179648 576M 27 隐藏的 NTFS
/dev/sda4 125841345 937697984 811856640 387.1G f W95 扩展 (LBA)
/dev/sda5 125841408 937695565 811854158 387.1G 7 HPFS/NTFS/exFAT
怎么读这张表:
- 列依次是设备名、是否启动标志、起始扇区、末尾扇区、扇区数、大小、分区类型 ID。
Id 是分区类型码:7 常见于 NTFS/exFAT(Windows 数据分区),27 是 Windows 的恢复环境,f 表示扩展分区。
- 扩展分区(
f)本身不能直接用,它里面装的是逻辑分区,比如 sda5。
- 有
* 的是启动分区,重做系统时要留意别删。
- 再往下看第二块盘
/dev/sdb,标签类型是 gpt,分区是 sdb1(EFI 系统,512M)和 sdb2(931G Linux 文件系统)。GPT 环境下 EFI 分区不能动,删了就起不来了。
二、卸载目标分区
要合并的分区如果正挂着,必须先卸掉,否则 fdisk 会拒绝改动:
sudo umount /dev/sda1
sudo umount /dev/sda2
sudo umount /dev/sda3
sudo umount /dev/sda4
sudo umount /dev/sda5
要是提示 target is busy,说明还有进程占用。先查是谁:
lsof +D /mnt
sudo fuser -vm /dev/sda2
把相关进程停掉再 umount。实在停不掉,用 sudo umount -l /dev/sda2 做延迟卸载兜底。注意:正在跑的服务的数据目录千万别这么折腾,生产上先停服务再动盘。
三、用 fdisk 重建分区
进入交互模式(下面以操作 /dev/sda 为例):
sudo fdisk /dev/sda
第 1 步:看一眼现状
命令(输入 m 获取帮助):p
确认分区列表和预期一致再继续,这里多花 10 秒能省后面几小时。
第 2 步:删掉不要的分区
命令(输入 m 获取帮助):d
分区号 (1-5, 默认 5): 1
分区 1 已删除。
对要合并掉的小分区逐个执行 d,按提示输入编号。这里要特别提醒:分区被删掉以后,文件系统的索引也没有了,除非提前备份,否则很难恢复。
第 3 步:新建一个大分区
输入 n,按提示选分区类型(主分区或逻辑分区):
- 一个磁盘最多 4 个主分区,而且要占用分区号,所以想留余地通常建 3 个主分区 + 1 个扩展分区,扩展分区里再放逻辑分区。
- 逻辑分区数量不受 4 个主分区的限制。
- 后两步提示输入起始和末尾扇区号,不是直接填空间大小——想省事就一路回车用默认值,默认会自动填满剩下的空间,这也正是"合并"的实质:删掉小分区,剩下来的连续空间用一个新分区吃掉。
第 4 步:写入
命令(输入 m 获取帮助):w
输入 w 才会真正写分区表;只做查看不写就退出,好处是什么都不会变。
四、格式化新分区
分区表改完,新分区还是"裸"的,得格式化成可用的文件系统。Linux 下默认选 ext4:
sudo mkfs.ext4 /dev/sda2
如果刚删了又建了同号分区,建议先 sudo fdisk -l 复核设备名,避免格式碰到别的分区。原来分区里的数据并没有"自动合并"过来——合并的是空间,不是文件,老数据得靠备份恢复进去。
五、挂上去验证
建挂载点、手动挂一次看看能不能用:
sudo mkdir /data
sudo mount /dev/sda2 /data
df -h
ls /data
确认没问题后,为了重启也生效,把 UUID 写进 fstab(UUID 比设备名稳,重启后设备顺序可能变):
sudo blkid /dev/sda2
sudo nano /etc/fstab
按 UUID=xxxx /data ext4 defaults 0 2 的格式加一行,服务器场景建议参数带上 nofail,盘不在时系统也能正常起来:
UUID=xxxx-xxxx /data ext4 defaults,nofail 0 2
写完用 sudo mount -a 验证配置无误,再重启一次复核。
六、这张表里有几个坑要避开
- EFI 分区(
sdb1 那类 512M 的 FAT 分区)千万别删,GPT 分区表的机器靠它启动。
- Windows 恢复分区(类型码 27)是给系统自愈用的,删掉以后出问题没法进恢复环境。
- 扩展分区(
f)不能单独格式化,要对里面的逻辑分区操作。
- 删了分区不等于磁盘空了,删完立刻断电保护也比等三天再回头强,操作完第一时间做一次全盘备份。
- 合并大分区的常见目标是/data、/home 这类目录,动手前先确认这个目录里没有正在写入的服务。
七、小结
整个流程可以压成一句口诀:看(fdisk -l)→ 卸(umount)→ 删建(fdisk 的 d 和 n)→ 格式(mkfs.ext4)→ 挂(mount)→ 写 fstab。真正危险的地方只有两处:删错了分区号、以及 panic 时直接 w 落盘。分区操作前留一份 sudo fdisk -l > fdisk-bak.txt 和完整备份,是这个操作唯一可靠的保险。
qidao123.com企服评测-应用市场 编辑提示
本文操作步骤适用于 Ubuntu 22.04 LTS 及其同源发行版。磁盘分区属于高风险操作,请务必提前备份数据、在测试环境先验证,生产系统建议安排维护窗口执行。更多服务器运维经验可到 qidao123.com 企服评测-应用市场 查看。
|