今日も元気にテクニカル

技術情報書きたいけど本ブログに書きたくないからこんな名前になりました。

ループバック・デバイスの利用

で、ブロックデバイスを手動で作る手段にループバック・デバイスという機能があります。

Linuxキーワード - ループバック・デバイス:ITpro

まず最初に100MBのファイルを作ります。

# dd if=/dev/zero of=./disk bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 1.44443 seconds, 72.6 MB/s

ddとは「ファイルの変換とコピーを行うコマンド」です。まぁこれだけじゃ言葉足らず過ぎるくらい多機能なコマンドだと思います。上記コマンドは「/dev/zero」というファイルを「disk」ファイルに「ブロックサイズ1M」で「100回繰り返し」コピーを行っています。つまり、上記コマンドは「100MBの空ファイルを新規作成する」ことになります。

windowsにはfsutilというコマンドで空ファイル作れます。HDDに0書き込みとかはできないけど…。

次にdiskファイルをext3でフォーマットします。

# mkfs.ext3 disk
mke2fs 1.39 (29-May-2006)
disk is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

最後にmountコマンドでループバック・デバイスとしてマウントします。

#mount -o loop -t ext3 disk /var/tmp/test

マウントされると、/etc/mtabに情報が記録されます。

# cat /etc/mtab
/var/tmp/disk /mnt ext3 rw,loop=/dev/loop0 0 0

アンマウントコマンドは以下の通りです。

# umount -v /var/tmp/disk

終わり。

これに何か意味があるのか?と言われると、良く分かりません(汗 単にパーティション分割をしてるだけのような…。マウントしたイメージファイル内で作業すれば、イメージファイル1つ持ち歩くだけで作業ディレクトリ持ち運べますが。まぁこういう手法を覚えることは重要ですね。