close
文章出處

kvm上的Linux虛擬機使用virtio磁盤

 

系統:centos6.6  64位

網上的文章比較少,怎麼將Linux虛擬機的磁盤改為使用virtio磁盤

因為centos6或以上系統已經包含了virtio驅動,所以不需要再執行下面語句加載內核模塊

modprobe virtio  virtio_pci  virtio_blk  virtio_net

mkinitrd  --with  virtio  --with  virtio_pci   --with  virtio_blk   --with  virtio_net   -f  boot/initrd-$(uname -r).img  $(uname -r)

 

 

這里說一下具體方法

在物理機上先生成一臺虛擬機


1、安裝一臺Linux機器
qemu-img create -f qcow2 /data/kvmimg/gzxtest04.qcow2 30G

virt-install --name=gzxtest04 --ram 4096 --vcpus=8 --autostart --hvm \
--disk path=/data/kvmimg/gzxtest04.qcow2,size=60,format=qcow2 \
--cdrom /data/download/CentOS-6.6-x86_64-bin-DVD1.iso \
--graphics vnc,listen=0.0.0.0,port=5907 \
--network bridge=br0,model=e1000 --force --connect qemu:///system

 

2、啟動虛擬機并安裝好centos6.6系統

 

3、安裝好系統之后,使用poweroff命令關閉虛擬機

 

4、先備份虛擬機的xml文件

virsh dumpxml gzxtest04 > ~/gzxtest04.xml  

 

5、修改虛擬機的xml文件

virsh edit gzxtest04

<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/data/kvmimg/gzxtest04.qcow2'/>
<target dev='hda' bus='ide'/>
<alias name='ide0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>

修改為
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none' io='native'/>
<source file='/data/kvmimg/gzxtest04.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>

其實就是刪除address type這一行,在driver name這一行添加io='native',dev='hda' 改為vda, bus='ide' 改為virtio

 

6、啟動虛擬機

virsh start gzxtest04

 

7、在虛擬機里可以看到原來是hdx的分區已經全部變為vdx

 

8、在虛擬機里修改grub設備映射表

sed -i  "s/hda/vda"  /boot/grub/device.map 

 

大功告成

 

 

背景知識
KVM虛擬機磁盤的緩存模式
1、默認,不指定緩存模式的情況下,1.2版本qemu-kvm之前是writethough,1.2版本之后qemu-kvm, centos虛擬機默認的緩存模式就是none
2、writethough:使用O_DSYNC語義
3、writeback:不是O_DSYNC語義也不是O_DIRECT語義,虛擬機數據到達宿主機頁面緩存page cache就給虛擬機返回寫成功報告,頁面緩存機制管理數據的合并寫入宿主機存儲設備
4、none:使用O_DIRECT語義,I/O直接在qemu-kvm用戶空間緩存和宿主機存儲設備之間發生,要求I/O方式設置為aio=native,不能使用宿主機的page cache,相當于直接訪問磁盤,有優越性能
5、unsafe:跟writeback一樣,但是不能發出刷盤指令,只有在虛擬機被關閉時候才會將數據刷盤,不安全
6、directsync:同時使用O_DSYNC語義和O_DIRECT語義

緩存模式的數據一致性
writethough、none、directsync
能保證數據一致性,有一些文件系統不兼容none或directsync模式,這些文件系統不支持O_DIRECT語義

writeback
不能保證數據一致性,在數據報告寫完成和真正合并寫到存儲設備上一個時間窗口期,這種模式在宿主機故障時候會丟失數據,因為數據還存在在宿主機的page cache里


unsafe
不保證數據一致性,忽略刷盤指令,只有在虛擬機被關閉時候才會將數據刷盤,不安全

 

 

參考文章:https://easyengine.io/tutorials/kvm/enable-virtio-existing-vms/

 

 

如有不對的地方,歡迎大家拍磚o(∩_∩)o 

本文版權歸作者所有,未經作者同意不得轉載。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 AutoPoster 的頭像
    AutoPoster

    互聯網 - 大數據

    AutoPoster 發表在 痞客邦 留言(0) 人氣()