我正在尝试在 Ubuntu 18 实例上缩小 AWS 上的 EBS 卷大小,但它无法启动。
以下是我采取的步骤:
- 停止实例
- 创建启动驱动器的快照
- 从此快照创建卷(VS)
- 创建一个具有较小尺寸(VN)的新空卷
- 将 VS 附加到 /dev/sda1 (2TB)
- 将 VN 附加到 /dev/sdf (200GB)
- 启动实例
- 在VN上创建分区
- sudo fdisk /dev/nvme0n1
- 擦拭
- sudo fdisk /dev/nvme0n1
- 输入“n”、“p”,按回车键直到提示输入新命令,然后按“w”
- 使用 ext4 文件系统格式化 VN 的主分区
- mkfs.ext4 /dev/nvme0n1p1
- 创建挂载目录
- mkdir /mnt/新卷
- 越通社
- sudo mount /dev/nvme0n1p1 /mnt/新卷
- 更改 VN 的 e2label 以匹配 VS 中的 e2label
- 使用 blkid 命令检查
- sudo e2label /dev/nvme0n1p1 cloudimg-rootfs
- 复制内容:
- rsync -vaxSHAX / /mnt/新卷
- 卸载 VN
- sudo umount /mnt/新卷
- 更改 VN 的 UUID 以匹配 VS
- 使用 blkid 命令检查
- sudo e2fsck -f /dev/nvme0n1p1
- sudo tune2fs -U VS_UUID /dev/nvme0n1p1
然后,当我停止实例、分离所有卷、将 VN 附加到 /dev/sda1 并启动实例时,它无法启动。
实例的屏幕截图显示了三行
SeaBIOS(版本 1.6702.14-g...)机器 UUID ec2f1...从硬盘 0 启动...
请注意,屏幕截图中的 UUID 与 VS 和 VN 的原始 UUID 不同。
有什么想法吗?谢谢!
答案1
我想到了!
第 4 步导致了这个问题。相反,我
创建并启动具有相同操作系统和所需较低卷大小 (VN) 的新实例。停止实例并分离卷 VN。
那么步骤8-12就不再需要了。
答案2
您是否在与要缩小的可用区相同的可用区中创建了具有新卷大小的新实例?我之所以问这个问题,是因为我遇到了同样的问题,但这些是我采取的步骤。
通过停止实例,在与实例相同的可用区域中创建卷的快照。
使用快照在与要减少的卷相同的可用区域中创建相同大小的新卷。
创建一个空白的新卷,其大小与您想要调整旧卷的大小相同。
将两个卷附加到实例,然后重新启动实例。
输入以下命令记下新的卷标签
sudo lsblk -e7
安装 hwinfo 后使用检查卷信息
sudo hwinfo --disk --short
。sudo mkfs -t ext4 /dev/xvdf
通过输入并将sudo mkfs -t ext4 /dev/xvdg
xvdf 和 xvdg 替换为卷名称来为两个新卷创建文件系统,如果在较新的发行版(如 nitro 系统)上,请记下新名称。创建两个挂载目录并挂载两个卷:
sudo mkdir /mnt/small sudo mount /dev/xvdf /mnt/small sudo mkdir /mnt/snap sudo mount /dev/xvdg1 /mnt/snap
将 xvdf 和 xvdg 替换为卷的名称,并记下新名称(如果在较新的发行版(如 nitro 系统)上)。
将文件同步到
sudo rsync -ahaxxsp /mnt/snap/ /mnt/small
卸载较小的卷
sudo umount /dev/xvdf
停止实例并分离所有卷。
附加小卷(您想要的小卷大小)并附加到块设备名称,从原始块设备名称,通常为
/dev/sda1
。重新启动实例并验证一切是否正常运行。
执行此操作后,实例仍处于循环中并卡在初始化状态。