- 要求されたブロックに最も近いブロックを選択する
- シリンダグループが満杯だったら別のシリンダグループを求める
- 近いところから探し、見つからなければ別のところから探していく
ブロックのサイズは比較的大きいので、ブロックをさらにフラグメントごとに分けて、割り当てていく
- すでに割り当てられているブロックに余裕があれば、そこに新しいデータを格納
- 余裕がなければ別のブロックにデータを格納
ブロックの割り当てが終了すると、システムはブロックの内容を保持するバッファを確保して、ブロックをディスクに書き出す準備をする
- ffs_balloc()
- ffs_blkpref()
適当なサイズのフラグメントがフラグメントの要約情報になければ、割り当て関数は割り当てマップから探そうとする。
高速化のためにテーブル参照型のアルゴリズムを使う。
空間最適ポリシー フラグメント化を最小限にするメリットとフラグメントのコピー回数を最大化するというデメリットがある。
領域ではなく時間によって最適化するようにファイルシステムを設定することも可能であるが、過剰にフラグメント化されることもありうる。