AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 509468
Accepted
mimipc
mimipc
Asked: 2013-05-21 23:49:56 +0800 CST2013-05-21 23:49:56 +0800 CST 2013-05-21 23:49:56 +0800 CST

如何扩展 ext4 分区和文件系统?

  • 772

我有一个 400GB 的磁盘和一个 320GB 的 ext4 分区。我想扩大 ext4 分区以使用剩余空间(80GB 可用空间)。

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

我怎么能这样做?

我见过有人在使用resize2fs,但我不明白它是否会调整分区大小。

另一种解决方案是使用fdisk但我不想删除我的分区和丢失的数据。我怎样才能在不丢失任何文件的情况下简单地增加分区?

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

centos
  • 10 10 个回答
  • 380887 Views

10 个回答

  • Voted
  1. Best Answer
    Flup
    2013-05-22T00:03:17+08:002013-05-22T00:03:17+08:00

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

    1. 运行parted,或者gparted如果您更喜欢 GUI,并调整分区大小以使用额外空间。我更喜欢gparted它,因为它为您提供了一个很好的图形表示,与您在问题中绘制的图形非常相似。

    2. resize2fs /dev/whatever

    3. e2fsck /dev/whatever(只是想看看你是否安全)

    4. 重新挂载你的分区。

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

    • 94
  2. Chris
    2013-05-22T00:01:35+08:002013-05-22T00:01:35+08:00

    是的,如果您的分区已经排序,您可以在线增长 EXT4 fs。分区排序了吗?你有LVM吗?

    sudo resize2fs /dev/drive_to_grow
    

    fdisk将调整您的分区大小,是的,但是如果这是一个根分区(或者实际上是任何已安装的分区),则必须先卸载它。所以离线最有可能!

    对于与磁盘/fs 操作相关的任何事情,我强烈建议进行备份,并且经过测试、易于理解的恢复过程。

    • 34
  3. Chris Stryczynski
    2020-06-13T05:15:10+08:002020-06-13T05:15:10+08:00

    使用growpart和resize2fs示例:

    $ 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.
    
    • 24
  4. WSR
    2017-02-27T14:53:04+08:002017-02-27T14:53:04+08:00

    请注意,在某些 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 - 我们需要将其调整为全部可用空间的主分区。

    最简单的方法:

    apt-get -y install parted
    parted /dev/vda unit s print all # print current data for a case
    parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
    parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
    partprobe /dev/vda # re-read partition table
    resize2fs /dev/vda5 # get your space
    
    • 12
  5. JTW
    2014-12-06T14:27:17+08:002014-12-06T14:27:17+08:00

    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
    
    • 3
  6. 200_success
    2013-05-21T23:55:16+08:002013-05-21T23:55:16+08:00

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

    • 2
  7. Chuck A
    2015-12-05T19:20:21+08:002015-12-05T19:20:21+08:00

    只是为了向仍在阅读此主题的任何人阐明我是如何做到这一点的。
    如果它是您要调整大小的启动分区,那么您必须从 bootcd 或 bootusb“救援”驱动器启动,这只是一个 Live Linux。这允许您在要更改的驱动器以外的机器上运行 Linux。

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

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

    如果要更改不是“根”分区 (/) 的挂载分区,例如 /home 是不同的分区,则无需使用救援映像。如果是最后一个分区,则尤其如此。
    sda1 = boot
    sda2 = /
    sda3 = /home
    未使用空间- 或
    -
    sda1 = /
    sda2 = /home
    未使用空间

    当我从较小的驱动器或 SSD 拍摄图像并将其移动到较大的 SSD 时,就会遇到这种情况。

    在这种情况下,您只需要在扩展 /home 时卸载它。但是要卸载 /home,您需要确保您没有登录到主目录位于其中的任何用户帐户。由于“root”用户的主目录直接在系统root /下,如/root,如果你能登录到root,那么你就可以卸载/home

    我注销了 GUI(KDE/Gnome/等)会话并使用 [CTRL] + [ALT] + [F1] 调出一个 shell 会话。
    如果您刚刚退出用户登录,Linux 可能需要 20-30 秒才能完成关闭任何文件,因此您可能会在尝试卸载 /home 时遇到错误。
    1. umount /home(如果它失败长达 30 秒,我会重试此命令,然后去查看其他会话,看看我是否在某处“cd /home/xxx”。)
    2. parted /dev/sda
    a。resize x(x = 你想要调整大小的分区,使用“p”获取分区列表)
    b。输入调整大小的最后一个扇区=“-1”(负1表示从磁盘末尾开始1个扇区)
    c。q (quits parted)
    3 resize2fs /dev/sda"x" (x = 要调整大小的分区。这也会重新挂载文件系统)
    4. df -m(我检查 /home 以确认它已调整大小)
    我从未使用此方法丢失文件或损坏驱动器。

    祝你好运

    • 2
  8. shodanshok
    2020-02-10T08:44:21+08:002020-02-10T08:44:21+08:00

    公认的答案有些过时:在线调整​​ ext4 文件系统的大小比离线更好,因为在线扩展代码路径比离线扩展代码路径更常用。

    更困难的事情可能是扩展底层分区,除非您使用 LVM并且您的卷组中有可用空间。要在线扩展分区,可以使用fdisk或parted; 然后,您必须运行kpartx <device>以通知内核更改。如果使用 LVM,您需要在卷pvresize之前调整大小的分区lvresize。

    最后,您可以发布resize2fs您的文件系统。

    • 2
  9. poige
    2013-05-22T00:00:42+08:002013-05-22T00:00:42+08:00

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

    • 1
  10. Patrick McTiernan
    2020-02-10T07:11:40+08:002020-02-10T07:11:40+08:00

    我被要求在运行 CentOS 7 的戴尔服务器上增加一个安装为 /scratch 的磁盘,而不打扰当前用户。这是 RAID 0 磁盘上的 XFS 分区,带有普通的 GPT 磁盘标签。这将以几乎完全相同的方式用于 ext4 分区 - 稍后见。

    这就是我在不卸载、重新启动或中断系统操作的情况下执行此操作的方法。我刚刚使用了 Linux 命令(和戴尔的 RAID 工具):

    1. 物理 RAID 卷的增长是通过向服务器添加两个新磁盘并使用 OpenManage Server Administrator 工具将它们添加到现有 RAID 卷来完成的。这需要几天时间才能完成,但不需要进一步的人工操作。在重建 RAID 磁盘期间,服务器继续以较低的磁盘速度工作。
    2. 以块为单位的磁盘大小从 15623782400 增加到 23435673600(512 字节)块,但值/sys/block/sdb/size仍处于较低值。这已使用以下命令更正: echo 1 > /sys/block/sdb/device/rescan
      使磁盘驱动程序更新其对磁盘大小和形状的了解。这似乎是一个宣传不佳的功能:我从名字就猜到了它的作用!
    3. 我跑去parted编辑磁盘标签并将其在磁盘末尾的副本移动到新的磁盘末尾。幸运的是,它在没有鼓励的情况下准确地猜到了我想做什么并提示了我。首先是磁盘标签的副本: 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
      然后是磁盘标签中反映的磁盘大小: 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”才能退出并更正磁盘标签(及其副本)。这解决了大部分必须解决的问题,无需任何艰苦的思考或工作。
    4. 我不得不编辑分区大小来填充磁盘,但是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。否则,那是行不通的。我很幸运地使用了两个具有相同起始块约定的工具,但我确实首先检查了初始起始块。
    5. 由于不支持命名分区,因此我此时还使用parted了与以前相同的名称来为分区命名。fdisk一个小细节。
    6. 我使用partprobe /dev/sdb(并partprobe /dev/sdb1采取了很好的措施)让操作系统再次读取分区表。我认为只有第一个命令才真正有所作为。
    7. 最后,我xfs_growfs -d /scratch只用了 1.6 秒就将分区增长到最终大小,填满了新增长的磁盘。

    这也适用于 ext4 卷:唯一的区别是使用resize2fs /dev/sdb1而不是xfs_growfs -d /scratch- 以及为 ext4 使用正确的分区类型编号而不是 xfs。fdisk 命令可以列出常见磁盘系统的类型号,包括 ext4。

    • 1

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve