【ハウツー】
![]() |
FreeBSD - The Power To Serve |
24日(協定世界時)、FreeBSD開発者であるJeff Roberson氏によって開発ブランチへある機能がマージされた。UFS2にジャーナリング機能を追加するコードだ。開発者の間ではSoft-Updates Journaling、またはSUJと呼ばれている。FreeBSD UFSでもっとも改善が望まれていた機能であり、FreeBSD 9の目玉機能になるとみられている。以降でその概要と実際の利用方法を紹介する。
これまでUNIX系のOSではUFS(UNIX File System)と呼ばれるファイルシステムがデフォルトで採用されてきた。ZFSなどの次世代ファイルシステムが普及しつつあるが、長い実績があるUFSを使いつづけるシステムも多い。BSD系OSでは今でもUFSがデフォルトのファイルシステムとして採用されている。
最初のUFSはシンプルな構造になっている。ディスクの情報を保持するスーパーブロック、ディレクトリやファイルの情報を保持するinodeブロック、実際のデータを保持するデータブロックに分かれている。これに対してその時々に応じた改善と拡張が実施されてきた。主な取り組みは次のとおり。こうした改善に、さらに独自機能を追加するためのフィールドの追加などが実施されている。
| 課題 | BSD UFSでの取り組み |
|---|---|
| スラッシングの発生 | ディスクサイズが増えるとinodeブロックとデータブロックの間をヘッダがいったりきたりするスラッシングがボトルネックになってきた。これに対して4.2BSDでシリンダグループを導入。シリンダグループはinodeブロックとデータをある程度のサイズでグループ化したもので、処理を局所化してスラッシングを軽減する効果を持たせている。またシリンダグループにスーパーブロックのコピーを配置することで故障時の復旧にも役立たせている。 |
| データの断片化 | ディスクサイズの増加にともなってデータが断片化するようになった。これに対してはブロックサイズを引き上げることで対応。ブロックサイズを引き上げると利用できないディスク領域が発生してスペースの無駄になるため、ブロックをフラグメントに分割して利用することでこれに対処。性能とスペースの両方の課題に対応。 |
| 課題 | FreeBSD UFSでの対応 |
|---|---|
| 大容量ディスクの登場 | ブロックポインタを64ビットに拡張して対応。64ビット化したあとのFreeBSD UFSはUFS2と呼ばれることが多い。 |
| ビルドやPorts Collectionなど大量にある小さいファイルの扱い | Soft Updatesと呼ばれるメタデータ操作の順序を工夫した機能を追加。ビルドのように小さいファイルを生成しては直ぐに削除するようなケースや、大量のファイルの削除などで大幅な高速化を実現。 |
| スナップショットの必要性 | Soft Updatesの導入と同時にスナップショット機能も実現。 |
| fsck(8)のボトルネック | スナップショットをとっておき、背後でfsck(8)を実行するという方法で回避。 |
UFSの最大の問題点として指摘されるものが、fsck(8)にかかる時間の長さだ。ソフトウェアの不具合やハードウェアの不具合でシステムが予期せぬシャットダウンやフリーズに見舞われた場合、UFSはマウントする前にファイルシステムの整合性をチェックして修復する処理を実施する必要がある。このfsck(8)には長い時間がかかる。利用するディスクサイズが大容量になり、そこに保持されるファイル数が多くなると、fsck(8)に数時間という長い時間がかかるようになる。システムが起動するまでに何時間も待たなければならないというのは問題だし、ストレージのサイズによっては日という単位で時間がかかることもある。
システムがクラッシュしたあとの起動に数時間もかかっては困る。こうした場合、ジャーナル機能を追加することで対処することが多い。UFSやUFSとよく似たファイルシステムではジャーナル機能を追加することでこれに対処している。ジャーナルを追加するとクラッシュが発生しても記録されているログにしたがって復旧すればよく、全体をチェックする必要がなくなる。復旧が高速になる。
FreeBSDのUFSはこれとは異なり、バックグラウンドfsck(8)を採用することでこの問題に対処した。クラッシュしたあとの起動時にファイルシステムのスナップショットを取り、背後でそのスナップショットに対してfsck(8)を実施するという方法だ。この方法でクラッシュ後にfsck(8)の完了を待たずにシステムが起動するようになった。しかし、バックグラウンドfsck(8)の実行中はシステムがきわめて重くなるという問題が残っていた。
なおSUJの登場以前であっても、FreeBSDのUFS2はGEOMのジャーナル機能と組み合わせることでジャーナリング機能を提供してはいる。しかしデフォルトで採用されるといった位置づけにはなく、SUJの導入後にはUFS2にとってはあまり重要な機能ではなくなる見通し。
SUJはUFSにジャーナル機能を提供するものだが、ほかのジャーナリングと違ってチェックに必要になるメタデータの操作のみを記録するという特徴がある。fsck(8)ではファイルシステムの整合性をチェックするが、このとき必要になるデータのみを記録する。このため、ほかのジャーナル機能と比べて消費するジャーナル領域が少ないという特徴がある。
また、今回追加されたSUJは従来のUFS2に対して最小限の変更のみを実施する内容になっている。UFS2の仕組みや動作そのものにはほぼ変更を加えていないため、今回追加されたSUJによってUFS2の信頼性が損なわれる可能性が低くなっているところもポイントになっている。
| トマトを食べれば痩せられる!? -京大ら、新発見の成分で肥満改善効果を実証 [21:00 2/10] |
| JAXA、液体シリコン中に残存する共有結合を観察 -大口径ウェハの実現に期待 [20:11 2/10] |
| NEDOなど、熱膨張が小さな樹脂複合材料ペレットの量産化に成功 [19:22 2/10] |
| 理研、一般顕微鏡を蛍光顕微鏡に強化できるアダプタを試作して性能を実証 [19:15 2/10] |
| 天の川のブラックホールが小惑星を飲み込んでいる - NASAが発表 [18:08 2/10] |
|
JRグループ、「周遊きっぷ」を見直し - 19の周遊ゾーンが3/31で販売終了に [07:30 2/11] ライフ |
|
「青春18きっぷ」春季用は2/20発売 - 夏季用・冬季用の発売は現時点で未定 [07:30 2/11] ライフ |
|
【ハウツー】炊飯器でつくるチャーシューが簡単すぎ、しかもおいしい! [07:00 2/11] ライフ |
|
【連載】出社前に。日常生活ですぐに使える! 英語クイズ 第118回 「どうぞお話しください、あなたが話す番です」ってなんて言う? [07:00 2/11] ライフ |
|
[観月ありさ]濃姫役で戦国時代劇初挑戦 信長役は城田優 SPドラマ「濃姫」 [05:00 2/11] エンタメ |