KVM 虛機(jī)鏡像擴(kuò)容和壓縮的操作
KVM鏡像操作
qemu-img命令
創(chuàng)建鏡像 qemu-img create
# 創(chuàng)建一個(gè)設(shè)備空間大小為10G的鏡像 qemu-img create -f qcow2 centos7-guest.qcow2 10G # 基于backing_file創(chuàng)建大小為20G的鏡像, 使用-b參數(shù), -F用于指定backing_file的格式 qemu-img create -F qcow2 -b /path/to/backing-kvm.img -f qcow2 /path/to/target.qcow2 20G # 基于backing_file創(chuàng)建大小為20G的鏡像, 使用-o參數(shù), 都在-o參數(shù)內(nèi)指定 qemu-img create -f qcow2 -o backing_file=/path/to/rhel6u3.img,backing_fmt=qcow2,size=20G /path/to/target.qcow2
關(guān)于backing_file的說明
If the option backing_file is specified, then the image will record only the differences from backing_file. No size needs to be specified in this case. backing_file will never be modified unless you use the "commit" monitor command (or qemu-img commit).
查看鏡像信息 qemu-img info
qemu-img info rhel6u3.img
轉(zhuǎn)換鏡像格式 qemu-img convert
使用-f指定源文件格式, 用-O指定目標(biāo)文件格式
qemu-img convert -f raw -O qcow2 centos.img centos.qcow2 qemu-img convert -f qcow2 -O raw centos.qcow2 centos.raw
縮小鏡像實(shí)際占用的磁盤大小
在虛機(jī)中進(jìn)行文件相關(guān)的操作(復(fù)制, 解壓)后, 即使刪除了文件, 虛機(jī)依然占用文件空間, 如果要減小空間占用, 可以通過如下的方式
Linux虛機(jī)端
Linux虛機(jī)端, trim a device and free all unused storage on the underlying device
fstrim -av
將未使用的空間用0填充, 因?yàn)閯h除的文件依然存在, 如果不寫零, 無法回收這些空間. 這一步會(huì)將虛機(jī)預(yù)設(shè)的空間全部填充, 取決于磁盤性能, 可能會(huì)很慢
dd if=/dev/zero of=/mytempfile # 刪除產(chǎn)生的文件 rm -f /mytempfile
Windows虛機(jī)端
對(duì)于Win7/2008R2 及以上版本會(huì)自動(dòng)裁剪(trim), 可以通過下面命令查看是否開啟
fsutil behavior query DisableDeleteNotify
上面應(yīng)當(dāng)會(huì)輸出0, 否則使用下面的命令設(shè)置
fsutil behavior set DisableDeleteNotify 0
然后執(zhí)行下面的命令
- 整理碎片, 用windows自帶的或者第三方工具例如 Defraggler or UltraDefrag.
- 使用SDelete(推薦)或者Eraser, 將空閑空間填充0
使用SDelete
- 下載 SDelete 保存到 C:\windows\system32\
- 運(yùn)行下面的命令填零
sdelete -z
- 如果有多個(gè)分區(qū), 例如 E:, 使用
sdelete -z e:
壓縮虛機(jī)鏡像
在宿主機(jī)進(jìn)行操作
qemu-img convert -O qcow2 vm_pbc.qcow2 vm_pbc_shrink.qcow2
帶壓縮參數(shù), 會(huì)比較慢
qemu-img convert -O qcow2 -c vm_pbc.qcow2 vm_pbc_shrink.qcow2
virt-filesystems命令
查看鏡像的磁盤大小
virt-filesystems --long --parts --blkdevs -h -a c7guest1.qcow2c Name Type MBR Size Parent /dev/sda1 partition 83 8.0G /dev/sda /dev/sda device - 8.0G -
virt-resize命令
將舊鏡像中的文件系統(tǒng)擴(kuò)充到新鏡像中, 用于調(diào)整虛機(jī)磁盤大小
# 創(chuàng)建一個(gè)50G容量的qcow2空白鏡像 qemu-img create -f qcow2 /data/images/win2012-50gb.qcow2 50G # 將鏡像擴(kuò)充到新鏡像中去, 通過--expand指定需要擴(kuò)張的分區(qū) virt-resize --expand /dev/sda2 /data/images/win2012.qcow2 /data/images/win2012-50gb.qcow2
此時(shí)只是將在虛機(jī)磁盤上增加了可用空間, 但是未體現(xiàn)到文件系統(tǒng), 啟動(dòng)虛機(jī)后, 在虛機(jī)中擴(kuò)充分區(qū)大小
# 查看分區(qū) df -h # 查看分區(qū)對(duì)應(yīng)的磁盤大小, 能看出來/dev/vda1已經(jīng)增長(zhǎng), 但是未體現(xiàn)到df -h的輸出中 fdisk -l # 如果/dev/vda1格式是xfs xfs_growfs /dev/vda1 # 如果/dev/vda1格式是ext2,3,4 resize2fs /dev/vda1
對(duì)鏡像進(jìn)行擴(kuò)容操作
下面的例子演示了如何將vm_n01.qcow2這個(gè)鏡像擴(kuò)容到40G
# 先檢查鏡像的分區(qū)結(jié)構(gòu), 以便后面對(duì)指定的分區(qū)進(jìn)行擴(kuò)容 virt-filesystems --long --parts --blkdevs -h -a vm_n01.qcow2 # 更名 mv vm_n01.qcow2 vm_n01.qcow2.bak # 用原名創(chuàng)建一個(gè)40G的空白鏡像 qemu-img create -f qcow2 vm_n01.qcow2 40G # 將舊鏡像導(dǎo)入到空白鏡像 virt-resize --expand /dev/sda1 vm_n01.qcow2.bak vm_n01.qcow2 # 檢查導(dǎo)入后的新鏡像 virt-filesystems --long --parts --blkdevs -h -a vm_n01.qcow2 # 刪除舊鏡像 rm vm_n01.qcow2.bak
用新鏡像導(dǎo)入創(chuàng)建虛機(jī)后
# 查看分區(qū) df -h # 查看分區(qū)對(duì)應(yīng)的磁盤大小, 能看出來/dev/vda1已經(jīng)增長(zhǎng), 但是未體現(xiàn)到df -h的輸出中 fdisk -l # 如果/dev/vda1格式是xfs xfs_growfs /dev/vda1 # 如果/dev/vda1格式是ext2,3,4 resize2fs /dev/vda1
遇到e2fsck版本太低的問題centos7自帶的e2fsck版本過低, 運(yùn)行resize報(bào)錯(cuò)
virt-resize: error: libguestfs error: resize2fs: e2fsck 1.42.9 (28-Dec-2013) /dev/sda1 has unsupported feature(s): metadata_csum e2fsck: Get a newer version of e2fsck!
解決: 編譯最新版本
# 需要預(yù)先安裝 wget gcc-c++ sudo wget https://mirrors.edge.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.46.4/e2fsprogs-1.46.4.tar.gz sudo tar xvf e2fsprogs-1.46.4.tar.gz sudo cd e2fsprogs-1.46.4 sudo ./configure sudo make sudo make install sudo yum -y install libguestfs-xfs
使用RAW格式對(duì)鏡像擴(kuò)容
Ubuntu20.04 Focal Cloudimage擴(kuò)容, 參考 https://www.cnblogs.com/milton/p/15382673.html
# resize原始鏡像 qemu-img resize focal-server-cloudimg-amd64-50g.qcow2 50G # 轉(zhuǎn)換為raw格式鏡像 qemu-img convert -f qcow2 -O raw focal-server-cloudimg-amd64-50g.qcow2 focal-server-cloudimg-amd64.raw # 重命名以防混淆 mv focal-server-cloudimg-amd64.raw focal-server-cloudimg-amd64-50g.raw # 運(yùn)行parted parted focal-server-cloudimg-amd64-50g.raw ######################## 開始 GNU Parted 3.1 Using /data/backup/vm_images/focal-server-cloudimg-amd64-50g.raw Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the disk is smaller. Fix, by moving the backup to the end (and removing the old backup)? Fix/Ignore/Cancel? Fix Warning: Not all of the space available to /data/backup/vm_images/focal-server-cloudimg-amd64-50g.raw appears to be used, you can fix the GPT to use all of the space (an extra 100245504 blocks) or continue with the current setting? Fix/Ignore? Fix Model: (file) Disk /data/backup/vm_images/focal-server-cloudimg-amd64-50g.raw: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 14 1049kB 5243kB 4194kB bios_grub 15 5243kB 116MB 111MB fat32 boot 1 116MB 2361MB 2245MB ext4 (parted) resizepart Partition number? 1 End? [2361MB]? 53.7G 1 116MB 53.7GB 53.6GB ext4 (parted) q ########################### 結(jié)束 # 查看raw格式的分區(qū)大小是否正確 virt-filesystems --long --parts --blkdevs -h -a focal-server-cloudimg-amd64-50g.raw Name Type MBR Size Parent /dev/sda1 partition - 50G /dev/sda /dev/sda14 partition - 4.0M /dev/sda /dev/sda15 partition - 106M /dev/sda /dev/sda device - 50G - # 轉(zhuǎn)回qcow2格式 qemu-img convert -f raw -O qcow2 focal-server-cloudimg-amd64-50g.raw focal-server-cloudimg-amd64-50g-resized.qcow2 # 再次檢查 virt-filesystems --long --parts --blkdevs -h -a focal-server-cloudimg-amd64-50g-resized.qcow2
參考
- Shrink Qcow2 Disk Files https://pve.proxmox.com/wiki/Shrink_Qcow2_Disk_Files
到此這篇關(guān)于KVM 虛機(jī)鏡像操作, 擴(kuò)容和壓縮的文章就介紹到這了,更多相關(guān)KVM 虛機(jī)鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
kvm虛擬化學(xué)習(xí)筆記(一)之kvm虛擬化環(huán)境安裝的步驟
這篇文章主要介紹了kvm虛擬化學(xué)習(xí)筆記(一)之kvm虛擬化環(huán)境安裝的步驟,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2016-12-12詳解kvm部署三個(gè)虛擬機(jī)實(shí)現(xiàn) WordPress 實(shí)驗(yàn)
這篇文章主要介紹了詳解kvm部署三個(gè)虛擬機(jī)實(shí)現(xiàn) WordPress 實(shí)驗(yàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11Ubuntu 18.04 LTS安裝KVM虛擬機(jī)的方法步驟
這篇文章主要介紹了Ubuntu 18.04 LTS安裝KVM虛擬機(jī)的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06