如何将非根分区调整到其父设备空间

如何将非根分区调整到其父设备空间

我在 Amazon EC2 实例上运行 Ubuntu Server 16.04 LTS。我确实扩展了其中一个附加卷,并尝试在我的终端中执行此操作。由于我已经有一个旧大小的分区,我认为告诉它很容易:“继续从你的父母设备中获取所有空间”。

正如你在图片上看到的,我的设备有xvdb18G,旧大小的分区有xvdb110G

在此处输入图片描述

根据德国Ubuntu 维基我需要使用resize2fs文件系统ext2, ext3 and ext4

但是如果我尝试使用resize2fs -p /dev/xvdb1 18G它,它会返回此错误:

The containing partition (or device) is only 2621184 (4k) blocks.
You requested a new size of 4718592 blocks.

我知道我的分区是使用 创建的mkfs,并且给定的大小已设置在那里,这意味着目前不能超过该大小。新添加的设备大小尚未格式化,因此无法使用。这意味着我应该删除该分区,生成一个具有更大大小的新分区,然后从备份中恢复我的数据,对吗?即便如此,这感觉还是有点不对劲……

我希望有一种很好的方法来动态扩展分区,而无需删除它并使用新大小恢复它(即使这意味着可能存在硬件错误)。我希望有人知道一个不错的方法来做到这一点。请记住,我仅限于终端,并且正在运行其他进程,这意味着我不能每次更改某些内容时都重新启动。

PS.: 这个问答也没什么帮助。

问候,Megajin

答案1

好的,我找到了自己的解决方案。如果有人遇到与我相同的问题,以下是解决方案:

来自 Amazon Docs 的原始解决方案(包括根分区):http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/storage_expand_partition.html

  1. 确定包含要扩展的分区的设备。使用该lsblk命令列出附加到实例的所有设备和分区。
  2. 如果分区已挂载,请卸载它。使用lsblk 命令中umount的值运行该命令。MOUNTPOINT
  3. parted在设备上运行该命令(而不是设备上的分区)。记得在lsblk输出的名称中添加 /dev/ 前缀。
  4. 将 的测量值更改parted units为 的扇区unit s
  5. 如果您收到奇怪的错误信息您可以输入ignore
  6. 检查输出中磁盘的总大小、分区表类型、分区编号、分区的起始点以及任何标志(例如启动)。对于 gpt 分区表,记下分区的名称;对于 msdos 分区表,记下类型字段(主或扩展)。这些值将在接下来的步骤中使用。您可以通过命令打印所有这些信息print
  7. 删除使用上一步中的编号的分区的分区条目。例如:rm partitionNumber
  8. 创建一个延伸到卷末尾的新分区。(对于 msdos 分区表示例)注意上面分区 1 的起点和分区类型。对于 msdos 示例,起点为 2048s,分区类型为主。使用主分区类型、分区 1 的起点和 100% 运行 mkpart 命令以使用所有可用空间。示例:mkpart primary 2048s 100%
  9. 再次运行打印命令来验证您的分区。
  10. 检查之前存在的任何标志是否仍然存在于您扩展的分区中。在某些情况下,引导标志可能会丢失。如果在扩展分区时从分区中删除了标志,请使用以下命令添加该标志,替换您的分区号和标志名称。例如,以下命令将引导标志添加到分区 1。例如:set 1 boot on
  11. 运行quit命令退出parted
  12. 检查文件系统以确保没有错误(这是扩展文件系统之前所必需的)。注意前面命令中的文件系统类型print。根据您的文件系统类型选择以下命令之一;如果您使用的是其他文件系统,请查阅该文件系统的文档以确定正确的检查命令。

    对于 ext3 或 ext4 文件系统:sudo e2fsck -f /dev/partitionName

    对于 xfs 文件系统:sudo xfs_repair /dev/partitionName

如果您有一个非根分区,只需重新安装它,一切都应该正常工作。

问候,Megajin

相关内容