更新时间: 2022.04.08 16:34:38
迁移CentOS/RHEL 7所在系统盘至更小的云盘
此操作有风险,建议先对实例创建自定义镜像,保存原始数据 本期实验练习介绍如何把一个根卷迁移到一个更小的云盘上以节省磁盘空间,并导入为镜像。在开始实验前需要先进行如下准备工作:
预计部署时间:60分钟 级别:中级 相关产品:ECS云虚拟机 受众:通用
fdisk /dev/vdb
[root@i-7gr9y1grlnhir5dnwztk /]$ fdisk /dev/vdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x25213bde 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n <----- 创建分区 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p <----- 分区类型为primary 分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048): <---- 设置大小,均为默认值 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 将使用默认值 41943039 分区 1 已设置为 Linux 类型,大小设为 40 GiB 命令(输入 m 获取帮助):w <----- 写入磁盘 The partition table has been altered!
[root@i-7gr9y1grlnhir5dnwztk /]$ mkfs.ext4 /dev/vdb1
[root@i-7gr9y1grlnhir5dnwztk ~]$ blkid /dev/vda1: UUID="223be8ec-241a-4abb-b290-44560b1bc3e5" TYPE="ext4" /dev/vdb1: UUID="9d23014a-9c2f-4fb0-b1af-f071086f07b8" TYPE="ext4" [root@i-7gr9y1grlnhir5dnwztk ~]# tune2fs -U 223be8ec-241a-4abb-b290-44560b1bc3e5 /dev/vdb1
mount /dev/vdb1 /mnt
mkdir /mnt/proc mkdir /mnt/sys mkdir /mnt/dev
mount -o bind /proc/ /mnt/proc/ mount -o bind /sys /mnt/sys/ mount -o bind /dev/ /mnt/dev/
cp -arf /boot/ /mnt/ cp -arf /etc /mnt/ cp -arf /home /mnt/ cp -arf /media /opt /root /srv /tmp /usr /var /mnt cd /mnt // 注意一定要进入/mnt目录后再执行以下命令 ln -s usr/bin bin ln -s usr/lib lib ln -s usr/lib64 lib64 ln -s usr/sbin sbin
chroot /mnt
grub2-install /dev/vdb
rm -rf /var/lib/cloud/
exit
umount /mnt/proc umount /mnt/sys umount /mnt/dev yum reinstall filesystem --installroot=/mnt
mkfs.ext4 /dev/vdc
/dev/vdb
mkdir /mnt1 mount /dev/vdb /mnt1 dd if=/dev/vdb of=/mnt1/disk.img
pip3 install awscli
# aws configure AWS Access Key ID [None]: AKLTZDA1NzI1YTg0NzFiNGU2MWIzZTNiZTBlZTQ2xxx AWS Secret Access Key [None]: Wm1ObE5EaGhNak0xT0Raa05ESTFOV0U1T1daaU9Exxxx Default region name [None]: cn-beijing Default output format [None]: json
# aws s3 mb s3://bucket-name --endpoint-url https://tos-s3-cn-beijing.ivolces.com make_bucket: bucket-name
aws s3 cp /mnt1/disk.img s3://bucket-name/disk.img --endpoint-url https://tos-s3-cn-beijing.ivolces.com
导入镜像
实验名称
实验介绍
关于实验
准备工作
1. 在TOS对象存储控制台创建一个存储桶
2. 在云服务器控制台创建一个操作系统为CentOS 7.9,系统盘为100G,一个数据盘为40G,一个数据盘为50G的云服务器
3. 通过控制台远程连接登陆实例,并开始迁移工作
迁移开始
1. 执行fdisk /dev/vdb 创建分区
2. 执行以下命令格式化文件系统为ext4
3. 修改文件系统UUID和/dev/vda1相同
4. 挂载/dev/vdb1 至/mnt目录
5. 创建所需的文件夹
6. 挂载以下目录
7. 复制文件, 目前只包含了默认目录,如果您还有其他目录请使用相同的命令进行复制即可
8. 使用chroot /mnt跳转到新的操作系统
9. 执行grub2-install /dev/vdb 创建GRUB, 注意这里是/dev/vdb, 不是/dev/vdb1
10. 删除掉当前系统中cloud-init配置
11. 退出chroot模式
12. 卸载/mnt/proc, /mnt/sys/, /mnt/dev,并重新安装filesystem软件包,恢复一些文件夹的权限
13. 为大小为50G的磁盘格式化文件系统
14. 创建挂载点/mnt1, 并把/dev/vdb 的数据dd到/mnt1, 注意这里要把整个设备dd到/mnt1中
15. 登录火山引擎访问控制服务生成一对AccessKey和AccessKey Secret
16. 安装aws cli访问TOS对象存储
17. 配置AccessKey和AccessKey Secret
18. 创建存储桶, 修改bucket-name为对应的存储桶名称。
19. 上传disk.img至存储桶
20. 上传完成后,通过控制台修改文件权限为公共读
21. 点击详情,获取TOS地址
22. 登录镜像控制台,点击导入镜像,输入获取的镜像地址,选择正确的操作系统版本,并点击确定,开始镜像导入
资源释放
1. 删除实验使用的ECS云服务器
2. 云盘默认不会随实例删除,登陆云盘控制台删除相关云盘
3. 登陆镜像控制台,删除导入的镜像