her*_*rve 22 ubuntu amazon-ec2 amazon-ebs
扩大 EC2 实例就像呼吸一样简单(例如,创建一个 AMI,从中启动一个实例,然后更改存储大小)。
但是减少它变得更加困难。我想减小 Amazon Web Services (AWS) EC2 实例 Elastic Block Store (EBS) 根卷大小。网上有几个旧的高级程序。我发现的更详细的版本是一个关于 StackOverflow 问题的一年前的答案:如何减少我的 ebs 卷容量,步骤有相当高的水平:
创建一个所需大小的新 EBS 卷(例如 /dev/xvdg)
启动一个实例,并将两个 EBS 卷附加到它
检查文件系统(原始根卷的):(例如)e2fsck -f /dev/xvda1
最大限度缩小原始根卷:(例如 ext2/3/4)resize2fs -M -p /dev/xvda1
用 dd 复制数据:
选择块大小(我喜欢 16MB)
计算块数(使用 resize2fs 输出中的块数): blocks*4/(chunk_size_in_mb*1024) - 为安全起见,四舍五入
复制数据:(例如)dd if=/dev/xvda1 ibs=16M of=/dev/xvdg obs=16M count=80
在新的(较小的)EBS 卷上调整文件系统的大小:(例如)resize2fs -p /dev/xvdg
检查文件系统(原始根卷的):(例如)e2fsck -f /dev/xvdg
分离您的新 EBS 根卷,并将其附加到您的原始实例
我无法找到详细的分步“如何”解决方案。
我的 EBS 根卷附加到 HVM Ubuntu 实例。
任何帮助将非常感激。
Rub*_*ate 13
新创建的磁盘缺少引导分区,因此需要安装 GRUB 并正确设置一些标志,然后实例才能将其用作根卷。
我的(截至今天,工作)缩小根卷的解决方案是:
背景:我们有一个实例 A,我们要缩小其根卷。我们将此卷称为 VA。我们想将 VA 从 30GB 缩小到 10GB
注意:以下步骤主要来自@bill 的解决方案:
停止要调整大小的实例 (A)。
创建卷 VA 的快照,然后从该快照创建“通用 SSD”卷。我们将这卷称为 VASNAP。
使用 amazon Linux 旋转一个新实例,我们将此实例称为 C。我们将仅使用此实例将 VASNAP 的内容复制到 VB。我们可能也可以使用实例 A 来完成这些步骤,但我更喜欢在独立的机器上完成。
将以下卷附加到实例 C。 /dev/xvdf for VB。/dev/xvdg 用于 VASNAP。
重启实例 C.
通过 SSH 登录到实例 C。
创建这些新目录:
mkdir /source /target
mkfs.ext4 /dev/xvdf1
如果没有错误,请继续执行步骤 11。否则,如果没有/dev/xvdf1
,则需要通过执行以下 i-vii 来创建分区:
i) 如果/dev/xvdf1
由于某种原因不存在,则需要创建它。首先输入:
sudo fdisk /dev/xvdf
.
ii) 输入以下命令擦除磁盘:
wipefs
iii) 通过输入创建一个新分区:
n
iv) 回车p
创建主分区
v) 继续按 Enter 以继续使用默认设置。
vi) 当它再次询问命令时,输入w
写入更改并退出。
vii)/dev/xvdf1
通过执行以下操作验证您是否拥有分区:
lsblk
你应该看到类似的东西:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
??xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
??xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
??xvdg1 202:97 0 250G 0 part
Run Code Online (Sandbox Code Playgroud)
现在继续执行步骤 11。
mount -t ext4 /dev/xvdf1 /target
e2label /dev/xvdf1 /
mount -t ext4 /dev/xvdg1 /source
rsync -vaxSHAX /source/ /target
注意:“/target”后面没有“/”。另外,可能有一些关于符号链接和属性的错误,但调整大小仍然成功
umount /target
返回 AWS 控制台:从实例 C 中分离 VB,并从 A 中分离 VA。
将新大小的卷 (VB) 附加到实例:“/dev/xvda”
启动实例 A,现在它的根设备是 10GB :)
删除实例 B 和 C,以及除 VB 之外的所有卷,VB 现在是实例 A 的根卷。
小智 7
在 AWS 控制台中:
停止要调整大小的实例
创建活动卷的快照,然后从该快照创建“通用 SSD”卷。
创建另一个“通用 SSD”卷到您想要的大小。
将这 3 个卷附加到实例,如下所示:
启动实例。
通过 SSH 登录到新实例。
创建这些新目录:
mkdir /source /target
mkfs.ext4 /dev/xvdf
mount -t ext4 /dev/xvdf /target
e2label /dev/xvdf /
mount -t ext4 /dev/xvdg /source
rsync -ax /source/ /target
注意:“/target”后面没有“/”。另外,可能有一些关于符号链接和属性的错误,但调整大小仍然成功
umount /target
umount /source
返回 AWS 控制台:停止实例,并分离所有卷。
将新大小的卷附加到实例:“/dev/sda1”
启动实例,它应该会启动。
第 10 步很重要:如上所述,用“e2label”标记新卷,否则实例将在 aws 中启动,但不会通过连接检查。
这是另一种方法;
在正在运行的 EC2 实例上附加并安装旧的 EBS 卷。如果您想要复制启动卷,最好在不同的实例上执行此操作,并将旧卷作为数据装载,而不是将该卷用作实时系统。
创建所需大小的新 EBS 卷。
将新卷附加到实例并(小心)在其上格式化新文件系统(例如,使用 mkfs)。安装它。
将旧文件系统内容从旧卷复制到新卷:
rsync -vaxSHAX /oldvol/ /newvol/
Run Code Online (Sandbox Code Playgroud)
卸载新卷并将其与实例分离。
如果您要复制根文件系统,则:
创建新卷的 EBS 快照。
将快照注册为新的 AMI。
归档时间: |
|
查看次数: |
36675 次 |
最近记录: |