
操作場景本文檔指導您制作本地或其他平臺的 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鏡像制作成功之后您可以在本地或者其他云平臺上先啟動云服務器測試鏡像文件是否可以使用。導入到騰訊云云服務器請參見 導入鏡像概述。