缩小ext4分区:fdisk将不允许在同一个起始块重新创建分区


2

上次我缩小分区时,就像删除它并从同一个起始扇区重新创建它一样简单。但是这一次,fdisk将不允许从扇区63重新创建分区,它至少会强制2048。

请注意,我正在使用无头服务器,并且gparted不是一个选项,因为它是一个GUI。

  • 为什么这个行为来自fdisk?
  • 使用2048会导致数据丢失吗?
  • 缩小分区的任何变通方法或解决方案?

root@ubuntulive:~# fdisk -u=sectors /dev/sda

Command (m for help): p

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0ab2afe6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   104872319    52436128+  83  Linux
/dev/sda2       104872320   113274314     4200997+  83  Linux
/dev/sda3       113274315   312576704    99651195   83  Linux

Command (m for help): d
Partition number (1-4): 1

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-312581807, default 2048): 63
Value out of range.
First sector (2048-312581807, default 2048):  
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104872319, default 104872319): 52436159

Command (m for help): p

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0ab2afe6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    52436159    26217056   83  Linux
/dev/sda2       104872320   113274314     4200997+  83  Linux
/dev/sda3       113274315   312576704    99651195   83  Linux

Answers:


1

为什么这个行为来自fdisk?

某些硬盘型号的性能

使用2048会导致数据丢失吗?

如果它是根分区,它无论如何都不能启动

任何解决方法或缩小分区的解决方案?

使用parted而不是fdisk。小心,与fdisk不同,在飞行中分开写入更改

(parted) p                                                                
Model: ATA Hitachi HTS72501 (scsi)
Disk /dev/sda: 160041885696B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End            Size           Type     File system     Flags
 1      32256B        53694627839B   53694595584B   primary  ext4            boot
 2      53694627840B  57996449279B   4301821440B    primary  linux-swap(v1)
 3      57996449280B  160039272959B  102042823680B  primary  xfs

(parted) rm 1
(parted) mkpart primary 32256B 28998224639B                               
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore                                                     
(parted) p                                                                
Model: ATA Hitachi HTS72501 (scsi)
Disk /dev/sda: 160041885696B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End            Size           Type     File system     Flags
 1      32256B        28998224895B   28998192640B   primary  ext4
 2      53694627840B  57996449279B   4301821440B    primary  linux-swap(v1)
 3      57996449280B  160039272959B  102042823680B  primary  xfs

警告 !!

我认为ext4不会碎片那么多(实际上它只有0.1%的非连续块)所以我没有运行resize2fs。

起初我做到了,无法再次挂载/ dev / sda1。(好笑之后)我重新创建了初始大小的分区,运行e2fsck并决定运行resize2fs再次尝试分手之前它运行了。

请记住,我们只是使用parted / fdisk编辑分区表,而不是更改任何物理数据。

这是一个无头服务器,重启后它不会ping。我决定不再重启到救援模式,因为这可能会中断启动时间fsck,所以我去睡觉了。第二天早上我发现服务器备份了。


为我工作 - 但我需要用unit B第一个命令来显示确切的位置。
tuomassalo 2015年

1

缩小分区的任何解决方案?

使用默认的start sector(2048)和正确的end sector 重新创建分区。请记住,在您编写分区表之前,此更改仍处于暂挂状态,因此它并不重要63。接着给该命令x

x   extra functionality (experts only)

现在m打印(除其他外):

b   move beginning of data in a partition

使用b,您将被允许输入63。返回主菜单r。此时p应该将您63视为开始部门。如果一切正常,请将更改写入磁盘w


0

您可以使用GParted同时调整文件系统和分区的大小。恕我直言,这通常是最好的解决方案,因为它留下了较少的人为错误的空间。但是,请注意,如果你在GParted中使用MiB对齐(也许即使你没有),它可能会试图改变分区的开始到扇区2048.这将导致大量额外的数据移动,这是耗时且有风险的。OTOH,如果它是一个启动盘并且你想安装更新版本的GRUB,这可能是合乎需要的 - 现在某些版本需要MBR之后的空间比你现在拥有的62个空间要多。(不过,您可以继续使用旧版GRUB或LILO与当前磁盘。)

如果必须使用fdisk,请尝试使用旧版本(或至少旧版本fdisk)。较新版本fdisk似乎没有提供一种方法来指定一个小到你想要使用的起始扇区,虽然这是完全合法的,直到最近才是标准(2 - 3年前的Linux;最高的Windows XP for Windows )。但是要注意单位 - fdisk默认情况下,旧版本使用了虚构的“柱面”值。这些值是不精确的,而零碎的变化fdisk意味着您可能无法获得某些中间版本所期望的行为。


感谢您的反馈意见 !我无法在无头服务器上使用gparted。
jpic

0

我也遇到了无法保留原始启动块的问题。我用过cfdiskcfdisk可以做得对,然后更容易fdisk!只需选择“调整大小”并输入磁盘空间量。当您对配置感到满意时,请“写入”。而已!正如您所看到的,它没有动态写入的缺点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.