Linux parted问题:指定分区边界失效
一、问题背景
博主在一次使用parted工具进行分区时遇到了指定分区边界失效的问题
下面是一块20GB的磁盘,并已为剩余的1GB空间全部划分为扩展分区:
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: Number Start End Size Type File system Flags1 1049kB 525MB 524MB primary xfs boot2 525MB 19.9GB 19.3GB primary xfs3 19.9GB 20.4GB 524MB primary linux-swap(v1)4 20.4GB 21.5GB 1098MB extended lba
下面我想将这一扩展分区再划分为两个大小差不多的逻辑分区,于是先划分第一块逻辑分区:
(parted) mkpart logical 20.4GB 21.0GB
然而结果并不是我指定的边界大小:
4 20.4GB 21.5GB 1098MB extended lba5 20.4GB 21.5GB 1097MB logical # 占满整个扩展分区!
它竟然将全部扩展分区都分给了这个逻辑分区,这并不是我想要的结果。
查询资料后发现,核心原因是:结束位置
21.0GB
未被严格执行,分区工具因扇区对齐或参数识别问题自动调整到扩展分区的结束边界。
二、解决方案:精确分配
将空间单位进一步精确到MB,再进行分区。
1. 删除错误的逻辑分区
(parted) rm 5 # 删除编号为5的逻辑分区
(parted) print # 确认扩展分区恢复空闲空间
2. 用MB单位显示分区大小
(parted) unit MB
(parted) print
Number Start End Size Type File system Flags4 20377MB 21475MB 1098MB extended lba
3. 计算结束位置,重新创建逻辑分区
20377MB + 512MB = 20889MB
(parted) mkpart logical 20377MB 20889MB
(parted) print
Number Start End Size Type File system Flags4 20377MB 21475MB 1098MB extended lba5 20377MB 20889MB 512MB logical
OK了
三、经验总结
在使用parted工具分区时,要尽量精确磁盘的起始位置,使用MB或KB为单位
扇区对齐陷阱:结束位置21.0GB
可能因未对齐512B扇区被自动调整为合法值(如21.5GB
)。使用MiB
单位可规避此问题。