vagrant-libvirtでゲストOS間の共有ディスクを作成する

Table of Content

広告

はじめに

クラスタシステム構築にあたって、実機確認の前に仮想マシンで色々と評価したいと考えておりました。

libvirt単独で共有ディスクを構成できるのは分かっておりましたが、別記事で構築したvagrant-libvirt(vagrant-libvirtでKVMマシンをvagrantで手軽に作る)で簡単に構築できると良いなぁと思い…

こちらを色々と見たところ、「Additional Disks」の項で出来そうな雰囲気なのでやってみました。

Vagrantfile定義

今回の構成は以下のような感じで作成したいと思います。

20201016_vagrant_shared

Vagrantで仮想マシンを2台作成し、providerの定義で共有ディスクを指定します。
ネットワークはクラスタ構成用のために作成してあるだけなので、本記事では特に使用しません。

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
    config.vm.box = "centos/8"

    config.vm.define :node1 do |node|
        node.vm.hostname = "node1"
        node.vm.network :public_network, :ip => "192.168.10.10", :dev => "br0"
        node.vm.network :private_network, :ip=> "192.168.200.10"
    end

    config.vm.define :node2 do |node|
        node.vm.hostname = "node2"
        node.vm.network :public_network, :ip => "192.168.10.11", :dev => "br0"
        node.vm.network :private_network, :ip => "192.168.200.11"
    end

    config.vm.provider "libvirt" do |libvirt|
      libvirt.memory = 2048
      libvirt.cpus = 2
      libvirt.storage :file,
        :size => "5G",
        :path => "shared_disk.img",
        :allow_existing => true,
        :shareable => true,
        :type => "raw",
        :cache => "writethrough"
    end
 end

作成できたら起動します。

$ vagrant up

共有ディスクの確認

node1側でパーティションの作成、ファイルシステムの作成を行い、テストデータを書き込みます。

$ vagrant ssh node1
[vagrant@node1 ~]$ sudo -i
[root@node1 ~]# parted --script /dev/vdb "mklabel msdos"
[root@node1 ~]# parted --script /dev/vdb "mkpart primary 0% 100%"
[root@node1 ~]# parted /dev/vdb print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  5369MB  5368MB  primary  xfs

[root@node1 ~]# mkfs.xfs /dev/vdb1
[root@node1 ~]# mount /dev/vdb1 /mnt
[root@node1 ~]# cat <<EOF >/mnt/test.txt
TEST TEXT
EOF
[root@node1 ~]# ls -al /mnt
total 4
drwxr-xr-x.  2 root root  22 Oct 16 11:26 .
dr-xr-xr-x. 18 root root 255 Oct 16 11:22 ..
-rw-r--r--.  1 root root  10 Oct 16 11:26 test.txt
[root@node1 ~]# cat /mnt/test.txt
TEST TEXT
[root@node1 ~]# umount /mnt
[root@node1 ~]# exit
[vagrant@node1 ~]$ exit

node2側でパーティションの再認識、テストデータの確認を行い、node1側で書き込んだ内容が表示できるか確認します。

$ vagrant ssh node2
[vagrant@node2 ~]$ sudo -i
[root@node2 ~]# partprobe /dev/vdb
[root@node2 ~]# parted /dev/vdb print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  5369MB  5368MB  primary  xfs

[root@node2 ~]# mount /dev/vdb1 /mnt
[root@node2 ~]# ls -al /mnt
total 4
drwxr-xr-x.  2 root root  22 Oct 16 11:26 .
dr-xr-xr-x. 18 root root 255 Oct 16 11:29 ..
-rw-r--r--.  1 root root  10 Oct 16 11:26 test.txt
[root@node2 ~]# cat /1mnt/test.txt
TEST TEXT
[root@node2 ~]# umount /mnt
[root@node2 ~]# exit
[vagrant@node2 ~]$ exit

最後に

VirtualBoxだとホスト側か別途仮想マシンを立ててiSCSIターゲットの構築が必要ではないでしょうか。vagrant-libvirtでここまでできるとは思いませんでした。