为什么Linux下fdisk删除分区后,再新建分区可以不用格式化直接挂载?
PHPz
PHPz 2017-04-17 16:03:51
0
4
508

我新建了分区/dev/sdb3,并且格式化为ext4

Device     Boot   Start     End Sectors Size Id Type
/dev/sdb1          2048 2099199 2097152   1G 83 Linux
/dev/sdb2       2099200 6293503 4194304   2G 83 Linux
/dev/sdb3       6293504 6313983   20480  10M 83 Linux

/dev/sdb3: UUID="6b300a6f-0579-458a-8000-ed24629f3da0" TYPE="ext4" PARTUUID="81a3aca2-03"

然后我把/dev/sdb3分区删掉,重新新建/dev/sdb3分区,结果不用mke2fs格式化,就能直接挂载该分区,而且还是ext4文件系统,难道删除分区重建不需要重新格式化么?求指导


2016-10-31 18:27:23

还是有点疑惑
例如/dev/sdb3分区
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux
/dev/sdb2 2099200 6293503 4194304 2G 83 Linux
/dev/sdb3 6293504 6313983 20480 10M 83 Linux

我删除/dev/sdb3分区后,重建,size是5M,reboot
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux
/dev/sdb2 2099200 6293503 4194304 2G 83 Linux
/dev/sdb3 6293504 6303743 10240 5M 83 Linux

/dev/sdb3: UUID="6b300a6f-0579-458a-8000-ed24629f3da0" TYPE="ext4" PARTUUID="81a3aca2-03"

我再删除/dev/sdb3分区后,再重建,size是15M,reboot
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux
/dev/sdb2 2099200 6293503 4194304 2G 83 Linux
/dev/sdb3 6293504 6324223 30720 15M 83 Linux

/dev/sdb3: UUID="6b300a6f-0579-458a-8000-ed24629f3da0" TYPE="ext4" PARTUUID="81a3aca2-03"

依然是已分区状态,已经把分区范围变化了,为何还是没变化呢?


2016-10-31 18:34:27
我再再删除/dev/sdb3分区后,再重建,size是15M,reboot
把First sector赋值为6293505,不使用默认值6293504

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 2099199 2097152 1G 83 Linux
/dev/sdb2 2099200 6293503 4194304 2G 83 Linux
/dev/sdb3 6293505 6334463 40959 20M 83 Linux

/dev/sdb3: PARTUUID="81a3aca2-03"

这下就对了
结论:重建分区,如果改变了First sector的序号,就需要格式化;仅仅改变size,则会继续使用原文件系统格式。
PS:感谢各位答主!

PHPz
PHPz

学习是最好的投资!

reply all(4)
Ty80

用栅栏围一块空地,画两个大格子,(分区,格式化)
拿掉栅栏 (删除分区)。但你画的格子在。
在画的两格子外再围上栅栏(又分区),于是你不用画格子了(使用原来的文件系统)。当然你也可以涂掉原来画的,画上3个小格子(格式化为其他文件系统)

Ty80

我的理解是:fdisk删除和创建分区会改变partition table里的描述数据(可查看/dev/sdb第一个sector数据)
因为前面的分区都没变,partition table里对第三个分区描述的起始地址也没有变,只改变大小的话,分区头数据依然是最近一次格式化的数据,依然识别到ext4.

阿神

fdisk仅仅是修改分区表的记录而已,如果你的分区参数和原来一模一样,那个当然可以继续用了,这也是分区表被破坏后找回分区的原理。搜索文件系统的头部然后重建分区表。不过仅限于你的分区开始扇区和总扇区数都不变的情况。如果改变了,比如变小了,那么文件系统的数据就不对了,这个时候需要重新格式化建立新的文件系统结构

迷茫

删除分区仅仅是将MBRGPT中的记录清除,而ext系的文件系统具体信息是由SuperBlock提供的。SuperBlock通常与Boot sector在同一个Block(2k或4k的Block)中,所以如果你填充了对应的分区的前2k字节,就会发现文件系统被损坏。
因此如果Boot sectorSuperBlock所在的区块没有被填充过内容,当下次该区块依然作为first block使用时,就会还原文件系统信息。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!