Kensuke Kousaka's Blog

Notes for Developing Software, Service.

XenServerでのNFS経由でのISOマウント

ConoHaのVPSに保存したISOイメージをNFS経由でマウントして,XenServer上のVMを起動・OSインストールということがしたかったが,なかなか詰まったのでメモしておく.

Install and Configure NFS Server

まずはNFSをインストールし,設定を行う.NFSのインストールは以下のコマンドで行う.

$ yaourt -S nfs-utils

次に,NFSで共有したい専用のディレクトリを作成し,権限の設定を行う.

$ sudo mkdir -p /srv/nfs/iso
$ sudo chmod -R 777 /srv/nfs/iso

作成したディレクトリを/mnt以下にマウントする.

$ sudo mkdir -p /mnt/iso
$ sudo chmod -R 777 /mnt/iso
$ sudo mount --bind /mnt/iso /srv/nfs/iso

このサーバを再起動しても自動的にディレクトリが再マウントされるように,/etc/fstabに以下の行を追加する.

/mnt/iso /srv/nfs/iso none bind 0 0

NFSで公開するこのディレクトリに対して,どこからのアクセスを許可するのかを/etc/exportsに追加する.

/srv/nfs/ 192.168.1.10/32(rw,fsid=root,no_subtree_check)
/srv/nfs/iso 192.168.1.10/32(rw,insecure,no_subtree_check,nohide)

この例では,IPアドレス192.168.1.10からのアクセスのみ許可するというようになっている. /etc/exportsの変更を反映するために,以下のコマンドを実行する.

$ sudo exportfs -rav

NFSに関連するサービスに関して,使用するポート番号を固定するために設定を行う./etc/conf.d/nfs-common.confに以下の設定を追加する.

STATD_OPTS="-p 32765 -o 32766 -T 32803"

/run/sysconfig/nfs-utilsに以下の設定を行う.

STATDARGS="-p 32765 -o 32766 -T 32803"

これでNFSに関する設定は完了した.外部ネットワークからNFSにアクセスできるように,ファイアウォールの設定を行う. 筆者はファイアウォールufwを利用しているため,以下のコマンドを実行した.

$ sudo ufw allow 111
$ sudo ufw allow 2049
$ sudo ufw allow 20048
$ sudo ufw allow 32765
$ sudo ufw allow 32803

ファイアウォールの設定ができたら,NFSに関連するサービスの起動を行い,NFS側の準備を完了する.

$ sudo systemctl start rpcbind
$ sudo systemctl enable rpcbind
$ sudo systemctl start nfs-server
$ sudo systemctl enable nfs-server
$ sudo systemctl restart nfs-config
$ sudo systemctl restart rpc-statd

Add ISO SR on XenServer

NFSサーバに保存してあるISOイメージをXenServerで利用するためには,XenServerのコンソールで以下のコマンドを実行してISO SRとしてマウントする.

# xe-mount-iso-sr NFSサーバのIPアドレス:/srv/nfs/iso/

なお,ISOイメージは先ほど構築したNFSサーバの/srv/nfs/iso/に保存しておくといい.

以上でXenServerからNFSサーバに保存したISOイメージを利用してVMの構築ができるはずだ.

Apendix

Add NFS SR on XenServer

NFSサーバをSRとして登録してVMの保存先として利用したい場合,XenServerのコンソールで以下のコマンドを実行することで実現できる. この例では,NFSサーバが/srv/nfs/nfsディレクトリを公開していて,これを利用するような実行例を書いている.

# xe sr-create content-type=user type=nfs \
name-label="NFS Storage" shared=true \
device-config:server=NFSサーバのIPアドレス \ device-config:serverpath=/srv/nfs/nfs

Add local storage SR on XenServer

ローカルで余ったHDDをext3でフォーマットしXenServerのコンソールで以下のコマンドを実行することで,SRに追加してXenServerでVMの保存先として利用できる.

# xe sr-create content-type="Local SR" \
host-uuid=XenServerのUUID(TABで補完できるかも) \
type=ext device-config-device=/dev/sdb1(追加したいHDDのパーティション名,ext3でフォーマットすること) \
shared=false name-label="Local Storage"