はじめに
ext4でフォーマットされたルート領域のみの仮想VMで、どうしてもXFSの追加デバイスが必要になったため、以下の方法を用いて構築した。なお、OSは、Ubuntu 14.04を用いている。
ちなみに、自分は、OpenStack Swiftを構築する際にルート領域とは別デバイスが必要になったため、今回このような手法をとった。そのため、以下の方法はdevstackのソースコードをベースにしている。
XFSパッケージのインストール
xfsprogs
というパッケージが必要になる。
$ sudo apt-get install -y xfsprogs
ループバックデバイスとなるファイルの作成
ファイルを配置するディレクトリの作成と、touch
によるファイル作成を行う。
$ sudo mkdir -p /srv/node/images
$ sudo touch /srv/node/images/file.img
truncate
コマンドによりSparseファイルを作成する。
$ sudo truncate -s 50G /srv/node/images/file.img
ファイルシステムのフォーマット
XFSでフォーマットする
$ sudo /sbin/mkfs.xfs -f -i size=1024 /srv/node/images/file.img
meta-data=/srv/node/images/file.img isize=1024 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
fileコマンドで確認すると以下のとおりになる。
$ file /srv/node/images/file.img
/srv/node/images/file.img: SGI XFS filesystem data (blksz 4096, inosz 1024, v2 dirs)
マウント
マウント先のディレクトリを作成する。
$ sudo mkdir -p /mnt/loop0
マウントする。
$ sudo mount -t xfs -o loop,noatime,nodiratime,nobarrier,logbufs=8 /srv/node/images/file.img /mnt/loop0
df
コマンドで確認する。
$ df -h | grep loop0
/dev/loop0 50G 33M 50G 1% /mnt/loop0