virsh命令添加kvm虛擬機共享磁盤

在使用kvm虛擬機的時候,有時候部署一些應用如Oracle RAC、corosync等高可用的時候,往往會用到共享硬盤。比如本人在部署corosync+mysql高可用的時候就遇到了一些小問題(像我們這種折騰達人,肯定不會用nfs做共享存儲),因此記錄一下。

環境:

  • 宿主機當然是linux,否則也用不到kvm
  • 沒有圖形界面,否則直接virt-manager也很快。。

操作過程

新建一塊虛擬盤

root@qujun:~# qemu-img -f raw shared.img 10G
要用raw格式,理論上來說應該qcow2也可以

編寫xml文件

root@qujun:~# vim share-disk.xml

    <disk type='file' device='disk'> 
        //由於我們用的文件,disk的type是file,device字段則指我們想讓這個盤在虛擬機中映射爲什麼設備。
      <driver name='qemu' type='raw' cache='none'/>
            // 驅動是指明我們底層是哪種虛擬化,同時指定磁盤爲raw格式、cache爲none
      <source file='shared.img'/>
            // 磁盤的映射源,有file、block、network、volume等值
      <target dev='vdb' bus='virtio'/>
            // 映射給虛擬機的盤符、使用的驅動,
      <shareable/>
            // 標記此硬盤將於多個虛擬機間共享。
    </disk>

<span style="color:red"> 上面比較重要的是cache要標記爲none、有shareable標記,在最開始的時候我用的qcow2硬盤,並用writeback的cache導致一堆問題。
</span>

準備完之後,使用virsh命令掛載就可以了。
root@qujun:~# virsh attach-device --config Guest1 share-disk.xml

<span style="color:red">由於virtio是熱添加驅動,這時候如果你係統支持硬盤熱添加,就可以在系統中fdisk -l看到一塊vdb的新硬盤啦,我們就可以像真實環境一樣來部署高可用系統了~</span>

參考鏈接:
1、Redhat virsh命令操作手冊
2、virsh xml 詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章