新しいiSCSIスタックの導入

FreeBSD 10にはカーネルで動作する新しいiSCSIターゲット/イニシエータの実装が追加された点も注目される。iSCSIターゲットとしてもiSCSIイニシエータとしても動作可能で、カーレベルレベルでネイティブに動作する。FreeBSDはストレージでの利用要求が高いので、そうした要望に応える形での実装になっている。FreeBSD Foundationの支援のもとで開発された成果物。

データの共有が必要であればFreeBSDにはすでにNFSが存在するが、iSCSIはそこよりも低レベルでのデータ共有を可能にする。NFSはファイルシステムレベルでのデータの共有になるが、iSCSIはブロックデバイスレベルでのデータの共有となる。iSCSIターゲットとして動作する場合にはストレージを提供する側になるし、iSCSIイニシエータとして動作する場合にはiSCSIターゲットからディスクを持ってきて利用することになる。接続したディスクは/dev/da0といった形で使えるようになり、USB HDDを接続したような感覚で使用できる。

設定ファイルの書き方や利用方法などはFreeBSDハンドブックの\28.13. iSCSI Initiator and Target Configurationにまとまっている。ZFS、iSCSI、NFS4、各種アプリケーションなどFreeBSD 10はストレージシステムのオペレーティングシステムに必要になる多くの機能がそろっている。

UFSのオンライン growfs(8)

これまで要望が多かったUFSの動的な拡張もリビジョン243246のコミットで実施できるようになった。これまで静的にUFSファイルシステムの領域を拡張することはできたが、FreeBSD 10からは読み書き可能な状態でマウントされたUFSであっても動的にサイズを広げることが可能になる。

この機能はUFSに新しく追加された書込のサスペンド機能を使って実装されている。growfs(8)が領域を拡大し終わるまで書込処理がサスペンドされる。こうした機能は特に仮想環境での使用が想定されている。仮想ディスクイメージは固定されたサイズで提供されており、後から領域を広げたいことがある。FreeBSD 10からはgrowfs(8)を使うことでこれを実現できるようになる。

動作の高速さや消費するメモリ量の少なさなどから、仮想環境で動作する場合にはファイルシステムとしてはZFSよりもUFSの方が活用されるケースが多い予想される。オンラインでgrowfs(8)が利用できるようになることで、特にこれまでUFSで弱いとされてきた機能が補われることになる。