
操作场景本文档指导您制作本地或其他平台的 Linux 服务器系统盘镜像。操作步骤准备工作在导出系统盘镜像前请完成以下准备工作。说明本检查列表仅适用于系统盘镜像导出。若您导出的是数据盘镜像可跳过此步骤。检查 OS 分区和启动方式执行以下命令检查 OS 分区是否为 GPT 分区。sudo parted -l /dev/sda | grep Partition Table参数解释parted -l列出所有磁盘分区信息/dev/sda指定要检查的磁盘设备grep Partition Table过滤出分区表类型行若返回 msdos 表示 MBR 分区gpt 表示 GPT 分区。执行以下命令检查操作系统是否以 EFI 方式启动。sudo ls /sys/firmware/efi参数解释/sys/firmware/efiEFI 启动模式的标志性目录结果判断若存在文件请您在导入镜像时选择启动模式为 UEFI若当前选择的启动模式与镜像文件的启动模式不一致可能影响您实例的正常启动。若不存在文件请您在导入镜像时选择启动模式为 Legacy BIOS。详细介绍可参见文档 启动模式 Legacy BIOS/UEFI 最佳实践。检查系统关键文件需检查的系统关键文件包括且不限于以下文件说明请遵循相关发行版的标准确保系统关键文件位置和权限正确无误可以正常读写。需检查以下文件的位置和权限确保符合标准文件路径正确权限检查方法修复方法如异常/etc/grub2.cfg-rw-r--r--ls -l /etc/grub2.cfgsudo chmod 644 /etc/grub2.cfg/etc/fstab-rw-r--r--ls -l /etc/fstabsudo chmod 644 /etc/fstab/etc/shadow-rw-r-----ls -l /etc/shadowsudo chmod 640 /etc/shadow注意事项使用UUID挂载 root 分区参考下文独立检查项禁止在/etc/fstab中挂载非必要硬盘kernel 参数里推荐使用 uuid 挂载 root其它方式如 root/dev/sda可能导致系统无法启动。挂载步骤如下独立检查项UUID 挂载 root 分区编辑/etc/fstabsudo vi /etc/fstab确保 root 分区挂载行格式为UUID实际UUID / ext4 defaults 0 0格式要求无空格UUIDUUID不能写成 UUID UUID文件系统类型需与实际一致如 ext4/xfs验证挂载配置sudo mount -a echo 验证成功卸载软件卸载会产生冲突的驱动和软件包括 VMware tools、Xen tools、Virtualbox GuestAdditions 以及一些自带底层驱动的软件。检查 virtio 驱动云服务器系统内核需要支持 Virtio 驱动包括块设备驱动virtio_blk和网卡驱动virtio_net才能在腾讯云上正常运行。为避免导入自定义镜像后创建的云服务器实例无法启动您需要在导入镜像前检查是否需要在源服务器中检查以及修复镜像中对 Virtio 驱动的支持。操作详情请参考 Linux 系统检查 Virtio 驱动。检查硬件兼容性配置Virtio 驱动检查Cloud-init 主要提供实例首次初始化时自定义配置的能力。如果导入的镜像没有安装 cloud-init 服务基于该镜像启动的实例将无法被正常初始化导致该镜像正常导入失败。安装详情请参考 Linux 系统安装 cloud-init。检查方法lsinitrd /boot/initramfs-$(uname -r).img | grep virtio# 或lsmod | grep virtio标准需存在virtio_blk块设备驱动和virtio_net网卡驱动作用缺失 Virtio 驱动将导致云服务器无法识别磁盘和网络其他硬件变更说明显卡更换为 Cirrus VGA 磁盘设备名变更为vda/vdbVirtio 磁盘 网卡仅保留eth0Virtio 网卡查找分区和大小执行以下命令查看当前操作系统的分区格式判断需要复制的分区以及大小。mount以如下返回结果为例proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)sys on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)dev on /dev type devtmpfs (rw,nosuid,relatime,size4080220k,nr_inodes1020055,mode755)run on /run type tmpfs (rw,nosuid,nodev,relatime,mode755)/dev/sda1 on / type ext4 (rw,relatime,dataordered)securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid5,mode620,ptmxmode000)tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode755)cgroup on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,namesystemd)pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)systemd-1 on /home/libin/work_doc type autofs (rw,relatime,fd33,pgrp1,timeout0,minproto5,maxproto5,direct,pipe_ino12692)systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd39,pgrp1,timeout0,minproto5,maxproto5,direct,pipe_ino12709)debugfs on /sys/kernel/debug type debugfs (rw,relatime)mqueue on /dev/mqueue type mqueue (rw,relatime)hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize2M)tmpfs on /tmp type tmpfs (rw,nosuid,nodev)configfs on /sys/kernel/config type configfs (rw,relatime)tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size817176k,mode700,uid1000,gid100)gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id1000,group_id100)根据/dev/sda1 on / type ext4 (rw,relatime,dataordered)表明根分区/位于/dev/sda1中使用 ext4 文件系统。由于在输出中没有看到类似/boot和/home的挂载点信息我们可以推断它们没有独立的分区而是包含在根分区/dev/sda1中。如果您需要复制整个磁盘包括根分区、/boot和/home您可以复制整个/dev/sda设备。这样您将获得一个完整的磁盘镜像包括 MBR 和所有分区。注意导出的镜像中至少需要包含根分区以及 mbr。如果导出的镜像缺少 mbr将无法启动。在当前操作系统中如果/boot和/home为独立分区导出的镜像还需要包含这两个独立分区。导出镜像根据实际需求选择不同的方式导出镜像。使用平台工具导出镜像使用命令导出镜像使用 VMWare vCenter Converter或 Citrix XenConvert 等虚拟化平台的导出镜像工具。详情请参见各平台的导出工具文档。说明目前腾讯云服务器迁移支持的镜像格式有qcow2vhdrawvmdk。转换镜像格式可选参见 转换镜像使用qemu-img将镜像文件转换为支持的格式。检查镜像说明当您未停止服务直接制作镜像或者其它原因可能导致制作出的镜像文件系统有误因此建议您在制作镜像后检查是否无误。当镜像格式和当前平台支持的格式一致时您可以直接打开镜像检查文件系统。例如Windows 平台可以直接附加 vhd 格式镜像Linux 平台可以使用 qemu-nbd 打开 qcow2 格式镜像Xen 平台可以直接启用 vhd 文件。本文以 Linux 平台为例检查步骤如下依次执行以下命令检查是否已有 nbd 模块。modprobe nbdlsmod | grep nbd返回结果如下则说明已有 nbd 模块。如返回结果为空则请检查内核编译选项CONFIG_BLK_DEV_NBD是否打开。如未开启您需要更换一个包含 NBD 模块的系统或者自行编译内核并打开 CONFIG_BLK_DEV_NBD 选项。检查内核是否支持 NBD 模块查看当前内核配置grep CONFIG_BLK_DEV_NBD /boot/config-$(uname -r)结果判断CONFIG_BLK_DEV_NBDy已编译到内核CONFIG_BLK_DEV_NBDm已编译为模块无输出未启用需更换系统或重新编译内核临时加载 NBD 模块sudo modprobe nbd若报错 Module nbd not found说明内核未包含此模块。依次执行以下命令检查镜像。qemu-nbd -c /dev/nbd0 xxxx.qcow2mount /dev/nbd0p1 /mnt执行qemu-nbd命令后/dev/nbd0就映射了xxx.qcow2中的内容。而/dev/nbd0p1代表该虚拟磁盘的第一个分区若 nbd0p1 不存在或 mount 不成功则很可能是镜像错误。Linux镜像制作成功之后您可以在本地或者其他云平台上先启动云服务器测试镜像文件是否可以使用。导入到腾讯云云服务器请参见 导入镜像概述。