如何使用命令行扩展 ext4 分区大小?

如何使用命令行扩展 ext4 分区大小?

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

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。

答案1

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

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

删除它:d

n使用具有相同数字 (1) 的命令重新创建它,开始并键入,但使用更大的数字结尾(注意不要与其他分区重叠)。尝试在兆字节边界上对齐事物结尾,使其成为 2048 的倍数减 1。如果需要,可使用 更改类型t(对于保存extXbtrfs文件系统的分区,默认值83即可)。

然后w开始写作并q退出。

分区表将被修改,但内核将无法考虑到这一点,因为某些分区已安装。

但是,如果仅扩大了正在使用的分区,您应该能够强制内核采用新的布局:

partx /dev/sda

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

然后,调整文件系统的大小,使其扩展到扩大的分区范围内(可能位于/sbin):

resize2fs /dev/sda1

即使ext4在实时 FS 上也能正常工作。

答案2

扩展 ext4 分区非常容易成长部分

  1. 备份当前分区表

    sfdisk -d /dev/sdb > sdb_partition_bak.dmp
    
  2. 执行试运行看看会发生什么变化。如果你没有这个工具。跑步apt-get 安装 cloud-utils

    growpart -N /dev/sdb 1
    
  3. 如果一切都好的话

    growpart /dev/sdb 1
    
  4. 调整文件系统大小。可能需要 10 秒

    resize2fs /dev/sdb1
    
  5. 检查新尺寸

    df -h
    

答案3

当分区已安装时,您无法安全地执行此操作,这意味着您需要引导其他一些分区并从那里执行此操作。

gparted是一个用于此目的的漂亮、简单的 GUI。在我们删除的评论交流中,您提到它不会启动,因为“无法访问显示”——这意味着您不在 X 中;因为它是一个 GUI,没有它就无法工作。

当然,如果你没有其他分区可以使用,你需要一张 Live CD 之类的东西——我思考它们通常带有 gparted。你最好的选择可能是实际的gparted 现场 CD,它看起来有一个相当新的最新稳定版本(并且适合光盘,这很好,因为“live CD”正在迅速变成“live DVD”)。

我从来没有遇到过 gparted 造成的问题,但当然首先要备份你的重要内容。

话虽如此,引用来自以下内容的内容man resize2fs可能会引起您的兴趣:

resize2fs 程序将调整 ext2、ext3 或 ext4 文件系统的大小。它可用于放大或缩小设备上未安装的文件系统。如果文件系统已挂载,则可以使用它来扩展已挂载的文件系统的大小,假设内核和文件系统支持在线调整大小。 (现代 Linux 2.6 内核将支持使用 ext3 和 ext4 挂载的文件系统在线调整大小;ext3 文件系统将需要使用启用了 resize_inode 功能的文件系统。)

但请记住,这是关于文件系统扩展这是一个不同的操作分区扩展(必须在文件系统扩展之前完成)。因此,如果您可以获得任何工具来在安装分区时扩展分区,确保保持完全相同的起始块,您可以就地扩展 rootfs。

答案4

我发现parted比删除并重新创建分区更简单、更安全fdisk

sudo parted /dev/sda
print
resizepart

要调整第一个分区的大小以填充磁盘,resizepart 1 -1.我有交换空间,所以必须从命令行开始swapoff -a,然后rmparted.为了避免这个问题,我创建了一个交换文件而不是交换分区(即https://unix.stackexchange.com/a/238784/103025)。

相关内容