virt-manager、もしくはvirt-installで作成した仮想マシンとディレクトリを共有するにはNFS(Network File System)を使う。
NFSインストール
ホスト
$ sudo apt-get install nfs-common nfs-kernel-server
ゲスト
$ sudo apt-get install nfs-common
ホストの設定
共有するディレクトリを /etc/exports
に書く。
書式: パス マウントを許可するアドレス(オプション)
$ cat /etc/exports
/dir/path 192.168.122.0/24(rw,sync,no_subtree_check,fsid=0)
$ sudo exportfs -rav #設定反映
オプションのfsid=0
は/dir/path
をルートとして扱うという意味。
読み取り専用にしたいときはrw
をro
にすればいい。
ファイアウォールを使っているなら下記の方法で使用するポートを確認して開放する。
$ rpcinfo -p
筆者の環境(ufw)の場合は。
sudo ufw allow from 192.168.122.0/24 to any port 111
sudo ufw allow from 192.168.122.0/24 to any port 2049
sudo ufw allow from 192.168.122.0/24 to any port 48218 proto udp
sudo ufw allow from 192.168.122.0/24 to any port 38309 proto tcp
sudo ufw allow from 192.168.122.0/24 to any port 48900 proto udp
sudo ufw allow from 192.168.122.0/24 to any port 41747 proto tcp
ゲストの設定
とくに設定は必要ないのであとはマウントするだけ。
192.168.1.2
をホストだとすると。
ホストで公開されてるディレクトリを表示。
実行しても応答がない場合はファイアウォールで阻まれている可能性がある。
$ showmount -e 192.168.1.2
ホストで公開されているルートディレクトリをマウント。
/etc/exports
でfsid=0
が設定されているディレクトリがルートになる。
$ sudo mount 192.168.1.2:/ /mnt
再起動しても自動でマウントしたい場合は/etc/fstab
を編集する。
今回の場合は下記の出力の最後の行を追記すればいい。
$ cat /etc/fstab
/dev/sda1 / ext4 errors=remount-ro 0 1
/dev/sda2 none swap sw 0 0
192.168.1.2:/ /mnt nfs4 rsize=8192,wsize=8192,timeo=14,_netdev 0 0