FreeBSD - The Power To Serve

FreeBSDプロジェクトは次期メジャーアップグレードバージョンへ向けて開発を進めている「FreeBSD 11.0-CURRENT」において新しい疑似デバイスファイル「/dev/full」を導入した(リビジョン265132)。/dev/fullは書き込みが実施されると常にエラーENOSPCを返す疑似デバイスファイル。エラーENOSPCは対象のデバイスにディスクスペースの空きが存在せずフルの状態になっていることを示している。

$ echo try > /dev/full
echo: write error on stdout
$ dd if=/dev/zero of=/dev/full bs=1 count=1
dd: /dev/full: No space left on device
1+0 records in
0+0 records out
0 bytes transferred in 0.000161 secs (0 bytes/sec)
$

/dev/fullはディスクの空き容量がなくなった場合のソフトウェアの動作をチェックするといった目的で使用できる。動作チェックさせたいソフトウェアのデータの書き込み先を/dev/fullにすることで、ディスクに空き容量がない場合のソフトウェアの動作をチェックできる。

/dev/fullに対して読み込みを実施した場合、要求した分だけNULL文字(0x00)が読み込まれる仕組みになっている。

$ dd if=/dev/full bs=6 count=1 2> /dev/null | hexdump
0000000 0000 0000 0000
0000006
$ dd if=/dev/zero bs=6 count=1 2> /dev/null | hexdump
0000000 0000 0000 0000
0000006
$

読み込むとNULL文字が出てくる挙動は/dev/zeroと同じ。/dev/nullや/dev/zeroはUNIX系のオペレーティングシステムでよく使われる疑似デバイスファイルだが、こうした疑似デバイスファイルに新しく/dev/fullが追加されたことになる。