端末ROMの空き容量を0(端末ROM使用量をフル)にする方法です。
空き容量が0になるとストレージへのファイルIOやデータベースの更新操作時等、
さまざまな場面で実行時例外がスローされます。
ハイスペックな端末の場合は気にならない問題かもしれませんが、そうではな
い端末ももちろんあります。
この問題に対応する/しないを決めた上でアプリケーションを設計・実装しましょう。
まずは、端末のファイルシステムのブロックサイズを調べます。
※下記はAndroid4.0のエミュレータで検証
# df /data -実行結果- Filesystem Size Used Free Blksize /data 64M 7M 56M 4096
実行結果より、ブロックサイズは4096Byteとわかります。
実行結果の見方は下記
- Size:ROMの総容量
- Used:ROMの使用量
- Free:ROMの空き容量
- Blksize:ファイルシステムのブロックサイズ
次に、サイズ指定でファイルを生成します。
サイズは ブロックサイズ*個数 で指定します。
下記は1000ブロックのdummyファイルを作成するコマンドです。
- bs:ブロックサイズを指定します
- count:作成するブロック数を指定します
- of:ファイルパスを指定します
# dd if=/dev/zero of=/data/dummy bs=4096 count=1000 -実行結果- 1000+0 records in 1000+0 records out 4096000 bytes transferred in 0.260 secs (15753846 bytes/sec)
上記をみると 4096*1000 で4096000Byte(4MB)のdummyファイルが作成されたこ
とがわかります。
dfデータでもう一度空き容量を見てみましょう。
# df /data Filesystem Size Used Free Blksize /data 64M 11M 52M 4096
Freeが56M→52Mに減っていることがわかります。
※ワンポイント
一気に空き容量0となるようにdummyファイルを作成してもよいですが、
そうなると一切のファイルIOができなくなってしまいます。
試験する際は、一時的に空き容量を少し回復できるようにファイルパスを変えて
2段階でdummyファイルを作成することをお勧めします。
例)
// 空き容量回復用のファイルdummy1を作成
# dd if=/dev/zero of=/data/dummy1 bs=4096 count=1000
// 空き容量を無くす用のファイルdummy2を作成
# dd if=/dev/zero of=/data/dummy2 bs=4096 count=99999999
少しだけ空き容量を作成したい場合はdummy1を削除すればOKです。
以上です。