我在 Amazon EC2 实例上运行 Ubuntu Server 16.04 LTS。我确实扩展了其中一个附加卷,并尝试在我的终端中执行此操作。由于我已经有一个旧大小的分区,我认为告诉它很容易:“继续从你的父母设备中获取所有空间”。
正如你在图片上看到的,我的设备有xvdb
18G,旧大小的分区有xvdb1
10G
根据德国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
- 确定包含要扩展的分区的设备。使用该
lsblk
命令列出附加到实例的所有设备和分区。 - 如果分区已挂载,请卸载它。使用lsblk 命令中
umount
的值运行该命令。MOUNTPOINT
parted
在设备上运行该命令(而不是设备上的分区)。记得在lsblk
输出的名称中添加 /dev/ 前缀。- 将 的测量值更改
parted units
为 的扇区unit s
。 - 如果您收到奇怪的错误信息您可以输入
ignore
。 - 检查输出中磁盘的总大小、分区表类型、分区编号、分区的起始点以及任何标志(例如启动)。对于 gpt 分区表,记下分区的名称;对于 msdos 分区表,记下类型字段(主或扩展)。这些值将在接下来的步骤中使用。您可以通过命令打印所有这些信息
print
。 - 删除使用上一步中的编号的分区的分区条目。例如:
rm partitionNumber
。 - 创建一个延伸到卷末尾的新分区。(对于 msdos 分区表示例)注意上面分区 1 的起点和分区类型。对于 msdos 示例,起点为 2048s,分区类型为主。使用主分区类型、分区 1 的起点和 100% 运行 mkpart 命令以使用所有可用空间。示例:
mkpart primary 2048s 100%
。 - 再次运行打印命令来验证您的分区。
- 检查之前存在的任何标志是否仍然存在于您扩展的分区中。在某些情况下,引导标志可能会丢失。如果在扩展分区时从分区中删除了标志,请使用以下命令添加该标志,替换您的分区号和标志名称。例如,以下命令将引导标志添加到分区 1。例如:
set 1 boot on
。 - 运行
quit
命令退出parted
。 检查文件系统以确保没有错误(这是扩展文件系统之前所必需的)。注意前面命令中的文件系统类型
print
。根据您的文件系统类型选择以下命令之一;如果您使用的是其他文件系统,请查阅该文件系统的文档以确定正确的检查命令。对于 ext3 或 ext4 文件系统:
sudo e2fsck -f /dev/partitionName
对于 xfs 文件系统:
sudo xfs_repair /dev/partitionName
如果您有一个非根分区,只需重新安装它,一切都应该正常工作。
问候,Megajin