我有一个400GB的磁盘,带有一个320GB的ext4分区。
我想扩展ext4分区以使用剩余空间(80GB的可用空间)。
/>我该怎么做?

我见过人们使用resize2fs,但是我不知道它是否会调整分区的大小。

另一种解决方案是使用fdisk但我不想删除分区并丢失数据。

注意:我说的是没有LVM的未装载数据分区,并且有备份,但是我想避免花费一些时间恢复时。

评论

我已经知道并回答了这种类型的问题。您在这里查阅过档案吗?

#1 楼

您必须先卸载分区。如果您无法卸载它(例如它是您的根分区或系统需要运行的其他东西),请改用System Rescue CD之类的东西。


运行partedgparted首选GUI,并调整分区大小以使用额外的空间。我更喜欢gparted,因为它可以为您提供一个很好的图形表示,非常类似于您在问题中绘制的图形表示。
resize2fs /dev/whatever
e2fsck /dev/whatever(只是为了确定您是否安全)
重新安装分区。

虽然我从未见过失败,但请先备份您的数据!

评论


resize2fs手册页显示:如果已挂载文件系统,则可以使用它来扩展已挂载文件系统的大小,前提是内核支持在线调整大小。 (在撰写本文时,Linux 2.6内核支持使用ext3和ext4挂载的文件系统的在线调整大小。)但是,调整已挂载文件系统的大小是更危险的操作,因为在运行很少执行的代码时内核很容易冻结或崩溃,从而使文件系统处于不良状态。

– 200_success
13年5月21日在15:12

没错-但是您不想弄乱安装了文件系统的分区表。这就是为什么我从卸载fs开始的原因。

– Flup
13年5月21日在15:15

对于ext4,在RHEL 5上可能是resize4fs。

–扎克·汤普森(Zac Thompson)
2014年9月4日在20:04



只要您满足以下条件,就可以用根文件系统扩展分区了:1.您无需更改起始扇区号。 2.更改分区表后,请重新启动,然后再执行下一步。

–卡巴斯德
15年3月27日在11:23

parted拒绝在CentOS 6上调整ext4分区的大小。

– reinierpost
16-09-27在14:39

#2 楼

是的,如果已经对分区进行了排序,则可以在线扩展EXT4 fs。您对分区进行了排序吗?你有LVM吗?第一。

与磁盘/ fs操作相关的所有内容,我强烈建议您进行备份,测试以及充分理解的恢复过程。

评论


如果使用fdisk,请确保检查使用的是MBR,而不是GPT(例如,混合MBR)。

– stek29
16-10-4在14:54

在我的debian XEN服务器上,我使用lvextend + 40G / dev / vg0 / volumeName调整了逻辑卷的大小,然后以root身份登录vm,然后输入resize2fs / dev / xvda2,这将运行的根文件系统扩展到新的最大值。我不确定是否需要这样做,但是在执行此操作后我重新启动了虚拟机。一切似乎都很好。

–rubo77
17-9-6上午0:43



@ rubo77不,不需要重新启动,

–克里斯
17年9月11日在16:05

#3 楼

请注意,在某些VDS服务器上,您可能具有非主根分区,并且需要首先调整扩展分区容器的大小。

例如,您刚刚升级了计划,并具有以下内容:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4


/ dev / vda2-是您的扩展容器。
和/ dev / vda5-我们需要调整主分区的大小以充分利用可用空间。

最简单的方法:

评论


真正帮助我的是,看到您可以将END设置为负数。通常,您不知道调整大小后的分区的确切Linux大小-您也不知道如何设置resizepart的END参数。将其设置为-1s会将分区大小调整为最大。

– srigi
18年7月2日在20:27

错误:无效的令牌-1s

– starbeamrainbowlabs
19年7月24日在18:11

在使用growpart时,此方法(首先扩展主要的vda2,然后扩展扩展的vda6)也可以使用。

–雷米
20/11/17在8:17

#4 楼

Parted在Centos的ext4上不起作用。我必须使用fdisk删除并重新创建分区,该分区(我已验证)可以在不丢失数据的情况下正常工作。我按照http://geekpeek.net/resize-filesystem-fdisk-resize2fs/上的步骤进行操作。简而言之,它们在这里:

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w


评论


欢迎来到服务器故障!请总结答案中的步骤,以防止链接腐烂。

– 200_success
2014年12月6日在2:28

使用此过程,但使用gdisk创建分区。这使我可以保存数据并创建一个大于2TB的分区

–pcnate
16/09/18'3:11

#5 楼

parted可以resize分区及其文件系统。

评论


谢谢,我使用的是图形界面,它不支持分区大小调整。我已经在cli程序中看到了该选项,但是您能告诉我如何确保在不丢失数据的情况下使用它吗?调整NUMBER START END的大小时,START和END是扇区号吗?我怎么知道

–mimipc
13年5月21日在8:00

始终建议您在执行任何危险操作(如调整分区大小)之前先备份数据。 parted支持选择单位-例如,对于扇区使用后缀,对于字节使用B或GB,对于设备大小的百分比使用%,对于圆柱体使用cyl。

– 200_success
13年5月21日在8:06

#6 楼

growpartresize2fs为例:
$ growpart /dev/sda 1
CHANGED: partition=1 start=2048 old: size=39999455 end=40001503 new: size=80000991,end=80003039
$ resize2fs /dev/sda1
resize2fs 1.45.4 (23-Sep-2019)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 5
The filesystem on /dev/sda1 is now 10000123 (4k) blocks long.


评论


这对我在CE7上有效

–弗雷德·弗林特
1月8日20:27

#7 楼

您可以使用fdiskcfdisk修改(或重新创建)分区(只要确保您不会更改其开始边界),然后重新启动并使用resize2fs。但是总的来说,最好使用LVM-2而不是MBR / GPT,因为它允许您在不重新启动内核的情况下进行那些更改。

#8 楼

公认的答案有些过时:调整ext4文件系统的大小最好是在线而不是离线进行,因为在线扩展代码路径比离线更常用。扩展基础分区,除非您正在使用LVM,并且卷组中有可用空间。要在线扩展分区,可以使用fdiskparted;然后,您必须运行kpartx <device>来将更改通知内核。如果使用LVM,则需要先调整大小的分区,然后再调整卷的大小。

最后,可以发布pvresize文件系统。

#9 楼

只是为了阐明我如何为仍在读取此线程的任何人执行此操作。 。这使您可以在要进行更改的驱动器之外的其他计算机上运行Linux。

在这种情况下,我认为最好的“救援” cd或usb应该是可引导的gparted USB或CD。要扩展的分区是最后一个分区,但是您已从该分区启动,无法卸载它。
sda1 =引导(或交换)
sda2 =交换(或引导)
sda3 = /
未使用的空间


如果要扩展的分区不是最后一个分区,则必须使用gparted引导映像来移动或调整分区的大小。
sda1 = boot
sda2 = /(要扩展的分区不是最后一个)
sda3 = swap
未使用的空间

如果要更改不是“根”分区的已安装分区(/),就像/ home是一个不同的分区一样,则无需使用应急映像。如果是最后一个分区,则尤其如此。 = /
sda2 = / home
未使用的空间

这是我从较小的驱动器或SSD拍摄图像并将其移至较大的SSD时遇到的情况。

在这种情况下,只需在扩展/ home时将其卸载。但是要卸载/ home,您需要确保您没有登录到home目录位于其中的任何用户帐户。由于“ root”用户的主目录位于/ root下的系统root /下,因此,如果您可以登录到root,则可以卸载/ home我注销GUI(KDE / Gnome /等等)会话,并使用[CTRL] + [ALT] + [F1]来启动Shell会话。文件,因此尝试卸载/ home时可能会出错。
1. umount / home(如果该命令在30秒钟内失败,我会重试此命令,然后再转到其他会话中查看我是否在某个地方“ cd / home / xxx”。)
2。分开了/ dev / sda
调整x大小(x =要调整大小的分区,使用“ p”获取分区列表)
b。输入最后一个调整大小的扇区=“ -1”(负1表示从磁盘末尾开始的1个扇区)
c。 q(分开)
3 resize2fs / dev / sda“ x”(x =要调整大小的分区。这也会重新挂载文件系统)
4。 df -m(我检查/ home确认其大小已调整)
我从未使用此方法丢失文件或损坏驱动器。

祝你好运

评论


但是,您没有备份。

–鹿猎人
2015年12月5日,9:21

#10 楼

我被要求在不中断当前用户的情况下,在运行CentOS 7的Dell服务器上增加以/ scratch形式安装的磁盘。这是RAID 0磁盘上带有常规GPT磁盘标签的XFS分区。这将以几乎完全相同的方式适用于ext4分区-稍后请参见。我只是使用Linux命令(和Dell的RAID工具):通过向服务器添加两个新磁盘并使用OpenManage Server Administrator工具将其添加到服务器中来完成物理RAID卷的增长。现有的RAID卷。这花费了几天的时间来完成,但是没有人的进一步努力。在重建RAID磁盘期间,服务器继续以较低的磁盘速度工作。
以块为单位的磁盘大小已从15623782400增长到23435673600(512字节)块,但/sys/block/sdb/size的值仍为较低的价值。使用以下命令已更正了该问题: echo 1 > /sys/block/sdb/device/rescan
以使磁盘驱动程序更新其有关磁盘大小和形状的知识。这似乎是一个不好宣传的功能:我猜它的名字了!
我运行parted编辑disklabel并将其副本在磁盘末尾移动到新的磁盘末尾。幸运的是,它准确地猜出了我想在没有鼓励的情况下要做什么,并提示了我。首先是disklabel的副本:
Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the disk is smaller. Fix, by moving the backup to the end (and removing the old backup)? Fix/Ignore/Cancel? F
,然后磁盘大小反映在disklabel中:
Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 7811891200 blocks) or continue with the current setting? Fix/Ignore? F
所以我必须两次输入“ F”,然后“ q”退出,磁盘标签(及其副本)已更正。这样就修复了大部分需要修复的内容,而无需进行任何认真的思考或工作。
我必须编辑分区大小来填充磁盘,但是parted不允许我在磁盘仍然挂载时执行此操作-所以我改用fdisk fdisk /dev/sdb d 1 n 1 (defaults were correct for full size of disk) t 1 11 (That's Microsoft basic data - which is the same as xfs). w
请注意,我已经确定它使用了正确的起始程序段号2048。否则,它将无法正常工作。我很幸运地使用了两个具有相同起始块约定的工具,但是我确实先检查了起始块。 parted不支持命名分区。一个较小的细节。
我使用fdisk(和partprobe /dev/sdb作为很好的措施)使OS再次读取分区表。我认为只有第一个命令真正起作用了。
最后,我用partprobe /dev/sdb1花费了1.6秒的时间将分区增长到最终大小,填充了新增长的磁盘。还将与ext4卷一起使用:唯一的区别是使用xfs_growfs -d /scratch而不是resize2fs /dev/sdb1-并对ext4而不是xfs使用正确的分区类型编号。 fdisk命令可以列出常见磁盘系统(包括ext4)的类型号。