在平時使用時,為了減少存儲空間和加快網絡傳輸速度,我們總希望能把基礎鏡像做的盡量小,本文介紹如何制作清爽干凈的kvm基礎鏡像。
-
根據自身需求,對系統進行配置:
- 這一步是為了確保系統符合你的需求,比如安裝必要的軟件,配置網絡等。
-
卸載不需要的軟件:
- 使用
yum remove或dnf remove命令卸載不需要的軟件包。例如:bash<button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary copyBtn___l3xJQ css-xox1ca" tabindex="0" type="button"></button>yum remove [package_name] - 確保不要卸載系統運行所必需的軟件。
- 使用
-
對系統緩存進行清理:
- 清理臨時文件和日志可以減少鏡像大小。以下命令可以清理緩存:
bash<button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary copyBtn___l3xJQ css-xox1ca" tabindex="0" type="button"></button>
rm -rf /tmp/* rm -f /etc/udev/rules.d/70-persistent-net.rules rm -f /var/log/wtmp /var/log/btmp /var/log/anaconda/* cd /var/log for i in cron dmesg dmesg.old lastlog maillog messages pm-powersave.log secure Xorg.0.log Xorg.0.log.old Xorg.9.log Xorg.9.log.old do true > $i done dmesg -c echo >/root/.bash_history yum clean all cloud-init clean rm -rf /var/lib/cloud history -c
- 清理臨時文件和日志可以減少鏡像大小。以下命令可以清理緩存:
-
使用 dd 命令將客戶機未使用的磁盤空間用0填滿:
- 這一步確保未使用的磁盤空間被標記為0,從而在轉換為 qcow2 鏡像時不會被錯誤地認為是已使用空間。例如:
bash<button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary copyBtn___l3xJQ css-xox1ca" tabindex="0" type="button"></button>
dd if=/dev/zero of=~/junk rm -f ~/junk
- 這一步確保未使用的磁盤空間被標記為0,從而在轉換為 qcow2 鏡像時不會被錯誤地認為是已使用空間。例如:
-
關機:
- 使用
halt -p命令安全地關閉系統:bash<button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary copyBtn___l3xJQ css-xox1ca" tabindex="0" type="button"></button>halt -p
- 使用
-
在宿主機上,執行鏡像整理:
- 使用
virt-sysprep命令清理鏡像中的臨時文件和日志,確保鏡像是干凈的。如果沒有安裝libguestfs-tools,可以通過以下命令安裝:bash<button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary copyBtn___l3xJQ css-xox1ca" tabindex="0" type="button"></button>yum install libguestfs-tools -y - 然后執行:
bash<button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary copyBtn___l3xJQ css-xox1ca" tabindex="0" type="button"></button>
virt-sysprep -a kvm-base.qcow2
- 使用
-
壓縮并制作新鏡像:
- 使用
qemu-img convert命令將鏡像轉換為壓縮的 qcow2 格式:bash<button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary copyBtn___l3xJQ css-xox1ca" tabindex="0" type="button"></button>qemu-img convert -p -c -O qcow2 kvm-base.qcow2 new.qcow2
- 使用
-
檢查鏡像是否有錯誤:
- 使用
qemu-img check命令檢查新鏡像的完整性:bash<button class="MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary copyBtn___l3xJQ css-xox1ca" tabindex="0" type="button"></button>qemu-img check new.qcow2
- 使用