[Linux] ファイルをブロックデバイスとして利用する

任意のファイルをブロックデバイスとして利用できるループデバイス(ループバックデバイス)という機能があります。この機能により任意のファイルをディスクのように扱うことができ、任意のフィアルシステムとしてマウントできるようになります。ちょっとした検証目的で異なるファイルシステムを気軽に作成したい場合などに便利です。

目次

 
それでは、任意のファイルをブロックデバイスとして利用する手順を紹介していきます。

1. ブロックデバイスとして利用するファイルを用意する

ddコマンドでブロックデバイスとして利用するファイルを用意します。この例では100MBのファイルを用意しています。

$ dd if=/dev/zero of=testdev bs=1M count=100

2. フォーマットを行う

作成したファイルを利用したいファイルシステムでフォーマットします。この例ではxfsにフォーマットしています。

$ mkfs.xfs testdev
meta-data=testdev                isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

3. マウント先のディレクトリを作成する

マウント先のディレクトリを作成します。マウント先としたい任意のディレクトリを作成してください。

$ sudo mkdir /mnt/testdir

4. マウントする

フォーマットしたファイルをループデバイスとしてマウントします。マウントはmountコマンドのオプションでloopを指定することで、空いているloopデバイスを利用してマウントしてくれます。

$ sudo mount -o loop -t xfs testdev /mnt/testdir

5. マウント状態を確認する

マウントしたディレクトリのファイルシステムを確認してみます。dfコマンドの-Tオプションでファイルシステムのタイプを表示しています。

$ df -T /mnt/testdir
Filesystem     Type 1K-blocks  Used Available Use% Mounted on
/dev/loop0     xfs      98980  5472     93508   6% /mnt/testdir

ループデバイスとして正常にマウントできました。
 
以上、ループデバイスの利用方法の紹介でした。