ファイルシステムが格納されたファイルを作ってみた
2010/02/02
mkswapコマンドで、スワップ領域として利用する元としてファイルが指定できる。
50MBのスワップとして利用できるファイルを作成し、利用する一連の動作を実際にやってみた。
スワップ領域として利用するファイルの作成
# dd if=/dev/zero of=/tmp/swp bs=1M count=50 50+0 記録始め 50+0 記録終わり 52428800 バイト (52 MB) コピー終了, 0.109074 s, 481 MB/s
ファイルをスワップ領域として利用できるようにする
# mkswap /tmp/swp スワップ空間バージョン 1 を設定します、サイズ = 51196 KiB no label, UUID=b1e1f86f-1d8b-4fbf-9015-3b7543cb6730
/tmp/swpをスワップ領域として利用する
# swapon /tmp/swp
現在のスワップ領域に関する情報を表示
# swapon -s Filename Type Size Used Priority /dev/sda5 partition 4200956 0 -1 /tmp/swp file 51192 0 -2
で、本題
スワップファイルだけではなく、同じようにファイルシステムもファイルの中に作れるのではないか?(仮想ディスクとして扱うことができるのではないか?)
やってみた
先ほどと同様にファイルシステムを作成するための空ファイルを作成します。
# dd if=/dev/zero of=/tmp/virtualdisk bs=1M count=100 100+0 記録始め 100+0 記録終わり 104857600 バイト (105 MB) コピー終了, 0.199313 s, 526 MB/s
ext3ファイルシステムを作成します。
# mkfs.ext3 -b 4096 -c -m 0 /tmp/virtualdisk mke2fs 1.41.4 (27-Jan-2009) /tmp/virtualdisk is not a block special device. Proceed anyway? (y,n) y Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 25600 inodes, 25600 blocks 0 blocks (0.00%) reserved for the super user First data block=0 Maximum filesystem blocks=29360128 1 block group 32768 blocks per group, 32768 fragments per group 25600 inodes per group Checking for bad blocks (read-only test): done Writing inode tables: done Creating journal (1024 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 21 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
途中でブロックスペシャルデバイスではないと言われていますが、作成することはできました。
マウントポイントを作り、マウントしてみます。
# mkdir /tmp/vdisk # mount -t ext3 -o defaults,loop /tmp/virtualdisk /tmp/vdisk/
何事もなくマウントできました。すげー。
mountコマンドと、dfコマンドで現在のマウント状況を表示してみます。
# mount 中略 /dev/loop0 on /tmp/vdisk type ext3 (rw) # df -h ファイルシステム サイズ 使用 残り 使用% マウント位置 中略 /dev/loop0 97M 4.1M 93M 5% /tmp/vdisk
この後実際に書き込んだりしてみましたが、問題なくファイルの作成とかもできてしまいました。Linuxすげー。