
操作場景本文檔指導(dǎo)您制作本地或其他平臺的 Linux 服務(wù)器系統(tǒng)盤鏡像。操作步驟準(zhǔn)備工作在導(dǎo)出系統(tǒng)盤鏡像前請完成以下準(zhǔn)備工作。說明本檢查列表僅適用于系統(tǒng)盤鏡像導(dǎo)出。若您導(dǎo)出的是數(shù)據(jù)盤鏡像可跳過此步驟。檢查 OS 分區(qū)和啟動方式執(zhí)行以下命令檢查 OS 分區(qū)是否為 GPT 分區(qū)。sudo parted -l /dev/sda | grep Partition Table??參數(shù)解釋??parted -l列出所有磁盤分區(qū)信息/dev/sda指定要檢查的磁盤設(shè)備grep Partition Table過濾出分區(qū)表類型行若返回 msdos 表示 MBR 分區(qū)gpt 表示 GPT 分區(qū)。執(zhí)行以下命令檢查操作系統(tǒng)是否以 EFI 方式啟動。sudo ls /sys/firmware/efi參數(shù)解釋??/sys/firmware/efiEFI 啟動模式的標(biāo)志性目錄??結(jié)果判斷??若存在文件請您在導(dǎo)入鏡像時選擇啟動模式為 UEFI若當(dāng)前選擇的啟動模式與鏡像文件的啟動模式不一致可能影響您實(shí)例的正常啟動。若不存在文件請您在導(dǎo)入鏡像時選擇啟動模式為 Legacy BIOS。詳細(xì)介紹可參見文檔 啟動模式 Legacy BIOS/UEFI 最佳實(shí)踐。檢查系統(tǒng)關(guān)鍵文件需檢查的系統(tǒng)關(guān)鍵文件包括且不限于以下文件說明請遵循相關(guān)發(fā)行版的標(biāo)準(zhǔn)確保系統(tǒng)關(guān)鍵文件位置和權(quán)限正確無誤可以正常讀寫。需檢查以下文件的位置和權(quán)限確保符合標(biāo)準(zhǔn)文件路徑正確權(quán)限檢查方法修復(fù)方法如異常/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注意事項(xiàng)使用UUID掛載 root 分區(qū)參考下文獨(dú)立檢查項(xiàng)禁止在/etc/fstab中掛載非必要硬盤kernel 參數(shù)里推薦使用 uuid 掛載 root其它方式如 root/dev/sda可能導(dǎo)致系統(tǒng)無法啟動。掛載步驟如下獨(dú)立檢查項(xiàng)UUID 掛載 root 分區(qū)編輯/etc/fstabsudo vi /etc/fstab確保 root 分區(qū)掛載行格式為UUID實(shí)際UUID / ext4 defaults 0 0??格式要求??無空格UUIDUUID不能寫成 UUID UUID文件系統(tǒng)類型需與實(shí)際一致如 ext4/xfs驗(yàn)證掛載配置sudo mount -a echo 驗(yàn)證成功卸載軟件卸載會產(chǎn)生沖突的驅(qū)動和軟件包括 VMware tools、Xen tools、Virtualbox GuestAdditions 以及一些自帶底層驅(qū)動的軟件。檢查 virtio 驅(qū)動云服務(wù)器系統(tǒng)內(nèi)核需要支持 Virtio 驅(qū)動包括塊設(shè)備驅(qū)動virtio_blk和網(wǎng)卡驅(qū)動virtio_net才能在騰訊云上正常運(yùn)行。為避免導(dǎo)入自定義鏡像后創(chuàng)建的云服務(wù)器實(shí)例無法啟動您需要在導(dǎo)入鏡像前檢查是否需要在源服務(wù)器中檢查以及修復(fù)鏡像中對 Virtio 驅(qū)動的支持。操作詳情請參考 Linux 系統(tǒng)檢查 Virtio 驅(qū)動。檢查硬件兼容性配置Virtio 驅(qū)動檢查Cloud-init 主要提供實(shí)例首次初始化時自定義配置的能力。如果導(dǎo)入的鏡像沒有安裝 cloud-init 服務(wù)基于該鏡像啟動的實(shí)例將無法被正常初始化導(dǎo)致該鏡像正常導(dǎo)入失敗。安裝詳情請參考 Linux 系統(tǒng)安裝 cloud-init。檢查方法lsinitrd /boot/initramfs-$(uname -r).img | grep virtio# 或lsmod | grep virtio標(biāo)準(zhǔn)需存在virtio_blk塊設(shè)備驅(qū)動和virtio_net網(wǎng)卡驅(qū)動作用缺失 Virtio 驅(qū)動將導(dǎo)致云服務(wù)器無法識別磁盤和網(wǎng)絡(luò)其他硬件變更說明顯卡更換為 Cirrus VGA 磁盤設(shè)備名變更為vda/vdbVirtio 磁盤 網(wǎng)卡僅保留eth0Virtio 網(wǎng)卡查找分區(qū)和大小執(zhí)行以下命令查看當(dāng)前操作系統(tǒng)的分區(qū)格式判斷需要復(fù)制的分區(qū)以及大小。mount以如下返回結(jié)果為例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)根據(jù)/dev/sda1 on / type ext4 (rw,relatime,dataordered)表明根分區(qū)/位于/dev/sda1中使用 ext4 文件系統(tǒng)。由于在輸出中沒有看到類似/boot和/home的掛載點(diǎn)信息我們可以推斷它們沒有獨(dú)立的分區(qū)而是包含在根分區(qū)/dev/sda1中。如果您需要復(fù)制整個磁盤包括根分區(qū)、/boot和/home您可以復(fù)制整個/dev/sda設(shè)備。這樣您將獲得一個完整的磁盤鏡像包括 MBR 和所有分區(qū)。注意導(dǎo)出的鏡像中至少需要包含根分區(qū)以及 mbr。如果導(dǎo)出的鏡像缺少 mbr將無法啟動。在當(dāng)前操作系統(tǒng)中如果/boot和/home為獨(dú)立分區(qū)導(dǎo)出的鏡像還需要包含這兩個獨(dú)立分區(qū)。導(dǎo)出鏡像根據(jù)實(shí)際需求選擇不同的方式導(dǎo)出鏡像。使用平臺工具導(dǎo)出鏡像使用命令導(dǎo)出鏡像使用 VMWare vCenter Converter或 Citrix XenConvert 等虛擬化平臺的導(dǎo)出鏡像工具。詳情請參見各平臺的導(dǎo)出工具文檔。說明目前騰訊云服務(wù)器遷移支持的鏡像格式有qcow2vhdrawvmdk。轉(zhuǎn)換鏡像格式可選參見 轉(zhuǎn)換鏡像使用qemu-img將鏡像文件轉(zhuǎn)換為支持的格式。檢查鏡像說明當(dāng)您未停止服務(wù)直接制作鏡像或者其它原因可能導(dǎo)致制作出的鏡像文件系統(tǒng)有誤因此建議您在制作鏡像后檢查是否無誤。當(dāng)鏡像格式和當(dāng)前平臺支持的格式一致時您可以直接打開鏡像檢查文件系統(tǒng)。例如Windows 平臺可以直接附加 vhd 格式鏡像Linux 平臺可以使用 qemu-nbd 打開 qcow2 格式鏡像Xen 平臺可以直接啟用 vhd 文件。本文以 Linux 平臺為例檢查步驟如下依次執(zhí)行以下命令檢查是否已有 nbd 模塊。modprobe nbdlsmod | grep nbd返回結(jié)果如下則說明已有 nbd 模塊。如返回結(jié)果為空則請檢查內(nèi)核編譯選項(xiàng)CONFIG_BLK_DEV_NBD是否打開。如未開啟您需要更換一個包含 NBD 模塊的系統(tǒng)或者自行編譯內(nèi)核并打開 CONFIG_BLK_DEV_NBD 選項(xiàng)。檢查內(nèi)核是否支持 NBD 模塊查看當(dāng)前內(nèi)核配置grep CONFIG_BLK_DEV_NBD /boot/config-$(uname -r)結(jié)果判斷??CONFIG_BLK_DEV_NBDy已編譯到內(nèi)核CONFIG_BLK_DEV_NBDm已編譯為模塊無輸出未啟用需更換系統(tǒng)或重新編譯內(nèi)核臨時加載 NBD 模塊??sudo modprobe nbd若報錯 Module nbd not found說明內(nèi)核未包含此模塊。依次執(zhí)行以下命令檢查鏡像。qemu-nbd -c /dev/nbd0 xxxx.qcow2mount /dev/nbd0p1 /mnt執(zhí)行qemu-nbd命令后/dev/nbd0就映射了xxx.qcow2中的內(nèi)容。而/dev/nbd0p1代表該虛擬磁盤的第一個分區(qū)若 nbd0p1 不存在或 mount 不成功則很可能是鏡像錯誤。Linux鏡像制作成功之后您可以在本地或者其他云平臺上先啟動云服務(wù)器測試鏡像文件是否可以使用。導(dǎo)入到騰訊云云服務(wù)器請參見 導(dǎo)入鏡像概述。