如何在Debian上扩展ext4分区大小


26

我有一个具有以下配置的驱动器:

fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000f1b8b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2612    20971520   83  Linux
/dev/sda3           60736       60801      525312   82  Linux swap / Solaris

有478GB的未分配空间,如何在不丢失当前在/ dev / sda1上的数据的情况下将该空间添加到/ dev / sda1?(文件系统是ext4)。

注意:这是一台只有SSH的服务器,没有用于运行gparted之类的GUI的服务器。


我可以对服务器进行网络引导,并在卸载驱动器时使用它。
2013年

SE网站中已多次覆盖该特定项目。最好在发表问题之前多做一点研究。
mdpc

另请参见askubuntu.com/a/937351/621883,尤其是包含growpart和resize2fs的答案对我有用。
klor

Answers:


38

扩大分区:fdisk -u /dev/sda

p 要打印分区表,请记下sda1的编号,开始,结束和类型。

删除它d

用相同的数字(1)重新创建它,开始并键入,但结尾较大(请注意不要与其他分区重叠)。尝试将要对齐的内容对齐到end的兆字节边界上,使其为2048减1的倍数。根据需要更改类型t(对于拥有extXbtrfs文件系统的分区,默认83为)。

然后w写并q退出。

分区表将被修改,但由于某些分区已挂载,内核将无法将其考虑在内。

但是,如果仅扩大了使用中的分区,则应该能够强制内核采用以下新布局:

partx /dev/sda

如果失败,则需要重新启动。系统应该可以正常启动。

然后,调整文件系统的大小,以使其扩展到扩大的分区范围:

resize2fs /dev/sda1

这对于ext4将工作得很好,甚至在现场FS。


我知道这很旧,但是如果删除分区,这会保留数据吗?
加拿大卢克REINSTATE MONICA 2014年

3
@CanadianLuke,是的,删除fdisk中的分区只会修改分区表。如果您重新创建相同的大小,则将不会有任何更改。除非缩小分区并在分区中间创建另一个逻辑或扩展分区,否则数据永远不会更改,在这种情况下,该扩展/逻辑分区的分区记录将被写入那里的某些数据。
斯特凡Chazelas

这对于ntfs分区(具有现有卷和数据)也非常有用。
肯尼·埃维特

这听起来很合理,但是如果我有从Linux分区的末尾开始的Extended,Linux LVM和Linux swap / Solaris分区怎么办?我应该删除这些分区吗?我担心在这种情况下,文件系统将无法启动,因为例如可能在同一开始和结束时都使用Linux LVM。而且我也不想丢失数据。
青色

@cyan用一个ext4 FS调整LVM逻辑卷的大小,或者调整用作LVM物理卷的分区的大小,对于不同的过程来说都是不同的问题。
斯特凡Chazelas

7

挂载分区时,您不能安全地进行此操作,这意味着您需要引导其他分区并从那里进行操作。

gparted是一个很好的,简单的GUI。在我们删除的评论交流中,您提到它由于“无法访问显示”而无法启动-这意味着您不在X中;由于它是一个GUI,没有它就无法工作。

当然,如果没有其他分区可以使用,则需要实时CD或其他东西-我认为它们通常与gparted一起提供。最好的选择可能是实际的gparted live CD,它看起来具有合理的最新稳定版本(并且将适合CD,因为“ live CD”正迅速成为“ live DVD”,这很好。)

我从来没有gparted造成问题,但当然要先备份您的重要提示。


我无法使用gparted,因为我只有SSH访问权限(这是无头服务器)。我可以卸载HDD,因为系统未在/ dev / sda上运行。
2013年

1
如果您没有对系统的物理访问权限,因此无法有效地卸载和更改分区,那么我认为您不走运,或者至少进入了非常粗略的领域-例如,您可以fdisk在安装后尝试使用,选择(x)角,(c)hange缸数。但是我没有这样做,只有在绝对没有其他选择的情况下,才会这样做。
goldilocks 2013年

我只是说我可以卸载该分区。我什至可以对整个服务器进行netboot并从另一台服务器进入,就像使用Live CD(没有GUI)一样。
2013年

@Seb:我不好,对不起。
goldilocks 2013年

2

我知道这是一个非常老的问题,但是许多人正在寻找解决方案。

对于此示例,您具有以下典型情况。开头是单个分区,最后是交换分区。这样做不好,因为交换可能会很重,而旋转磁盘的末端是其中最慢的部分。我建议什么?

  1. 在开始时创建启动分区。为什么一开始?因为许多工具都无法解决2TB以上大容量磁盘的问题。引导分区之后应该是交换分区。这是为了提高性能。其余磁盘应用于其他分区。

但是这种情况呢?我不建议扩展sda1。我建议在sda1和sda2之后创建其他分区,分别以/home和挂载/usr。在该目录上存储了最多的用户和系统数据,并且可以安全地将数据从该目录移动到新分区。

  1. 但。(第二个“ but”),如果您仍想保留当前结构,则应首先删除交换分区。您应该进行交换,在中进行标记/etc/fstab。如果swapon告诉您(请参见man)不使用交换,则可以使用分区工具(fdisk或类似工具)将其删除。

    如果没有此分区,则可以扩大sda1。使用fdisk你应该先打印分区。这是为了记住它从哪里开始。其次,使用“ d”键删除分区。不要惊慌,什么也不会写入硬盘:)。打印后,您看到磁盘上没有分区。

    接下来创建新分区,但是要小心。查看原始分区从哪个扇区开始。写相同的数字。在那之后看完。fdisk提示您输入最后一个可用扇区。使用计算器,然后在您的头脑中分配所需的交换量(以千字节为单位)。将其乘以2,然后从fdisk提示的最后一个扇区号中减去该数字。创建分区。打印它(它仍然在fdisk临时存储器中),一切正常。

    按下“ w”键后,这会将新分区写入驱动器。您将看到全部同步的信息,或者同步失败。如果失败,则可以调用partx / dev / sda命令进行同步。如果仍然失败,则应重新引导系统。重新引导后,您已经准备了较大的分区,但是该分区上的文件系统仍然较小。你应该成长。EXT4可以随时增长:),resize2fs /dev/sda1用于此目的。

    您不需要重新安装重启等。最后,您应该恢复交换分区。只需再次使用fdisk,将新分区创建为swap。写入“ w”后,将还原设备sda2。使用对其准备交换结构mkswap /dev/sda2,删除要交换的注释/etc/fstab,最后执行swapon -a。使用swapon或top命令查看,交换已激活。

我知道,这是很长的解释。我希望任何人都可以使用。注意,我认为xfs文件系统要好得多,不幸的是,此fs不支持在没有临时复制到备用位置的情况下进行缩小,但是很少使用缩小。很好,xfs很少占用自己的元数据,并且与ext4相比在许多方面都更快。

另一个提示是,最好将一些LVM用作分区的中间层。之后,任何调整大小都变得容易得多。性能是可比的,当然,您可以混合使用HDD管理。您可以在常见的原始分区和LVM中使用。


非常感谢slm进行的语言更正:D
Znik
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.