KVM支持的虛擬磁盤類型
raw
這並非是一種真正的磁盤格式,而是代表虛擬機所使用的原始鏡像;它並不存儲元數據,因此可以作為保證虛擬機兼容性的候選方案,然而也正因為
它不存儲元數據,因此不能支持某些高級特性,比如快照和壓縮等。
格式簡單,容易轉換為其他格式;需要文件系統的支持才能支持sparse file
cow copy-on-write格式,曇花一現
qcow QEMU早期的copy-on-write格式,過渡性方案
qcow2
按需進行分配磁盤空間,不管文件系統是否支持
支持快照、壓縮、加密
當虛擬機出現問題,如何拷貝出里面的數據?沒有開機的情況下,如何掛在硬盤文件?
首先我們找到虛擬機的磁盤文件存放位置,存儲池位於哪里,此處以/var/lib/libvit/image/ 為例
1 # cd /var/lib/libvirt/images/ 2 [root@kvm images]# qemu-img info rhel6.6.qcow2 3 image: rhel6.6.qcow2 4 file format: qcow2 5 virtual size: 9.0G (9663676416 bytes) 6 disk size: 1.7G 7 cluster_size: 65536 8 Format specific information: 9 compat: 1.1 10 lazy refcounts: true
格式的轉換:
qemu-img convert -f qcow2 -O raw rhel7.qcow2 rhel7.img
qemu-img convert -f 源格式 -O 目標格式 源磁盤 目標磁盤
raw格式磁盤掛載:
kpartx -av rhel7.img ------執行后會把rhel7.img映射為幾個文件
在/dev/mapper/下 為loop0p1(boot) loop0p2 rhel-root(/) rhel-swap(swap)
將其分別掛載就可以拷貝其中的數據
kpartx -d rhel7.img -----刪除換回映射
qcow2格式磁盤掛載
必須要在內核里添加nbd模塊
思路:qcow2先轉換為raw格式,以raw格式去操作
1.查看現有磁盤鏡像格式與轉換
(1) 查看磁盤格式
# qemu-ing info kvmname.img
raw格式需要轉換成qcow2
(2)關閉虛擬機並轉換磁盤
#virsh shutdown kvmname
(3)轉換磁盤格式
# qemu-img convert -f raw -O qcow2 kvmname1.img kvmname2.qcow2
-f 源鏡像格式
-O 目標鏡像格式
查看轉換格式后,已經轉換成了qcow2,這里是拷貝一份,並將格式轉化成qcow2
# qemu-img info kvmname2.qcow2
qemu-img create -f qcow2 /data/test1.qcow2 10G
1.給虛擬機在線添加磁盤
(1)查看現有磁盤
# virsh domblklist kvmname
(2)創建一塊qcow2虛擬磁盤
# qemu-img create -f qcow2 test_add.qcow2 5G
(3)添加虛擬磁盤
# virsh attach-disk kvmname /path/test_add.qcow2 vdb
此時添加的在重啟之后會消失,需要將新添加的磁盤配置保存到配置文件中
# virsh dumpxml kvmname
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data/test02_add01.qcow2'/>
<target dev='vdb' bus='virtio'/>
<alias name='virtio-disk1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
# virsh edit kvmname
修改虛擬機的配置文件(/etc/libvirt/qemu/)可以根據已復制發磁盤定義新的虛擬機
qemu-img概述
qemu-img是一個功能強制磁盤鏡像管理工具
qemu-img --help
check 檢查完整性
create 創建鏡像
commit 提交更改
compare 比較
convert 轉換
info 獲得信息
map 映射
snapshot 快照管理
rebase 在已有的鏡像的基礎上創建新的鏡像
resize 調整大小
amend 修訂鏡像格式選項
qcow2格式選項
backing_file 指定后端鏡像文件
backing_fmt 設置后端鏡像的鏡像格式
cluster_size 設置鏡像中的簇大小,取值在512到2M之間,默認值為64K
preallocation 設置鏡像文件空間的預分配模式
encryption 用於設置加密