アプリケーションの動作テストにおいて、DiskFullで落ちる状態をテストしたいと要望を頂きました。
Linuxの場合、quotaやLVMやら、それらしいものがあるのですが、結構面倒です。AWSの場合、極小のファイルシステムといってもEBSの最小単位は1GBなので、空き容量たった1KBとかをつくろうとした場合、約1GBをダミーデータで埋めてやらねばなりません。
そんな時にloopマウントです。原理としては、swapファイルシステムを、ディスクパーティション上ではなく、ファイルシステム上に作成して、swaponするのと同じです。これをext4などのファイルシステムで同じことをすれば良いというわけです。
# dd if=/dev/zero of=/root/testext4.fs bs=1M count=2# mke2fs /root/testext2.fs
# mkdir /media/testfs
# mount -o loop /root/testexts.fs /media/testfs
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/xvda1 7.8G 1.5G 6.3G 19% /
devtmpfs 486M 88K 486M 1% /dev
tmpfs 499M 0 499M 0% /dev/shm
/dev/loop0 2.0M 21K 1.9M 2% /media/testfs
イマドキ ext2 なんて古いよねーと言われそうですが、 ext3 以降はジャーナリングファイルシステムのせいで1MB位取られます。ので、ここで ext3-4を使うのは悪手です。後は3MBぐらいのファイルをddでつくって、cpすれば出来ないことが確認できます。
参考