迁移CentOS/RHEL 7至更小的云盘

计算操作系统技术服务知识库
运行环境
  • CentOS/RHEL 7
问题描述

如何迁移CentOS 7至更小的云盘

解决方案
  1. 对当前实例创建镜像进行数据备份,备份方法
  2. 卸载掉当前实例其他数据盘,防止误操作导致数据盘数据丢失
  3. 分别挂载一个20G和25G的云盘至此实例
  4. 执行fdisk /dev/vdx创建分区
[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 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w <----- 写入磁盘
The partition table has been altered!

  1. 执行以下命令格式化文件系统为ext4
[root@i-7gr9y1grlnhir5dnwztk /]$ mkfs.ext4 /dev/vdx1

  1. 修改文件系统UUID和/dev/vda1相同
[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 

  1. 挂载/dev/vdx1 至/mnt目录
mount /dev/vdx1 /mnt
  1. 创建所需的文件夹
mkdir /mnt/proc
mkdir /mnt/sys
mkdir /mnt/dev
  1. 挂载需要的目录
mount -o bind /proc/ /mnt/proc/
mount -o bind /sys /mnt/sys/
mount -o bind /dev/ /mnt/dev/

  1. 复制文件, 目前只包含了默认目录,如果您还有其他目录请使用相同的命令进行复制即可
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
  1. 使用chroot /mnt跳转到新的操作系统
  2. 执行grub2-install /dev/vdx创建GRUB, 注意这里是/dev/vdx, 不是/dev/vdx1
  3. 删除掉当前系统中cloud-init配置
rm -rf /var/lib/cloud/
  1. 退出chroot模式
exit
  1. 卸载/mnt/proc, /mnt/sys/, /mnt/dev,并重新安装filesystem软件包,恢复一些文件夹的权限
umount /mnt/proc
umount /mnt/sys
umount /mnt/dev


yum reinstall filesystem --installroot=/mnt
  1. 为大小为25G的磁盘格式化文件系统
mkfs.ext4 /dev/vdx
  1. 创建挂载点/mnt1, 并把/dev/vdx 的数据dd到/mnt1, 注意这里要把整个设备dd到/mnt1中
mkdir /mnt1
mount /dev/vdx /mnt1
dd if=/dev/vdx of=/mnt1/disk.img

  1. 登录火山引擎访问控制服务生成一对AccessKey和AccessKey Secret
  2. 安装aws cli访问TOS对象存储
 pip3 install awscli
  1. 配置AccessKey和AccessKey Secret
# 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

  1. 创建存储桶, 修改bucket-name为对应的存储桶名称。
# aws s3 mb s3://bucket-name --endpoint-url https://tos-s3-cn-beijing.ivolces.com
make_bucket: terry-upload

  1. 上传disk.img至存储桶
aws s3 cp /mnt1/disk.img s3://bucket-name/disk.img --endpoint-url https://tos-s3-cn-beijing.ivolces.com

  1. 上传完成后,通过控制台修改文件权限为公共读 图片
  2. 点击详情,获取TOS地址 图片
  3. 登录镜像控制台,点击导入镜像,输入获取的镜像地址,选择正确的操作系统版本,并点击确定,开始镜像导入

如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论