| 開発者 | 日本電信電話サイバースペース研究所 |
|---|---|
| フルネーム | ログ構造化ファイルシステムの新しい実装 |
| 紹介された | 2005年Linuxカーネル2.6.13 |
| 構造 | |
| ファイルの割り当て | Bツリー |
| 制限 | |
| 最大ボリュームサイズ | 8エイブ |
| 最大ファイルサイズ | 8エイブ |
| ファイル名の最大長 | 255 バイト |
| 特徴 | |
| 記録された日付 | atime(予定) |
| 日付解決 | 64 ビットのディスク上のタイムスタンプ |
| 属性 | POSIX、拡張属性の計画あり |
| ファイルシステムの 権限 | POSIX、ACLの計画あり[1] |
| 透過的な 圧縮 | いいえ |
| 透過的な 暗号化 | いいえ |
| コピーオンライト | はい |
| 他の | |
| サポートされている オペレーティングシステム | Linux カーネル、( NetBSDの場合は読み取り専用) |
NILFSまたはNILFS2 ( New Implementation of a Log -structured F ile S ystem ) は、Linux カーネル用のログ構造化ファイルシステムの実装です。これは、日本電信電話株式会社(NTT)サイバースペース研究所と世界中のコミュニティによって開発されました。NILFS は、GNU General Public License (GPL) の条件に基づいてリリースされました。
デザイン
「NILFS はログ構造のファイル システムであり、ストレージ メディアは循環バッファのように扱われ、新しいブロックは常に末尾に書き込まれます。[…]ログ構造のファイル システムは、自然にウェア レベリングを実行するため、フラッシュ メディアでよく使用されます。[…]NILFS はスナップショットを重視します。ログ構造のアプローチは、コピー オン ライト動作の特定の形式であるため、ファイル システムのスナップショットの作成に適しています。NILFS 開発者は、ユーザーが開始したファイル システムの問題から回復するために使用できる「連続スナップショット」の作成について説明しています[…]。」[2]
NILFS は、ログ構造ファイルシステムと呼ばれるコピーオンライト[ broken anchor ]技術を使用して、すべてのデータを連続したログのような形式で記録します。この記録は上書きされることなく、追加されるだけです。この手法は、シーク時間を短縮し、従来のファイルシステムでクラッシュ後に発生するようなデータ損失を最小限に抑えるように設計されています。たとえば、ext3ファイルシステムでは、書き込み操作中にシステムがクラッシュすると、データ損失が発生します。システムを再起動すると、ジャーナルには書き込みが完了しなかったことが記録され、部分的なデータ書き込みは失われます。
Solaris オペレーティング システムやBSDで使用されるUFS派生のファイル システムなど、一部のファイル システムでは、このようなデータ損失を防ぐスナップショット機能を提供していますが(引用が必要)、大規模なファイル システムではスナップショットの構成に時間がかかることがあります。これに対し、NTT 研究所によると、NILFS は「サービスを中断することなく、ファイル システムの瞬間的な状態を継続的かつ自動的に保存」できます。[3]
NILFS が継続的に保存する「瞬間的な状態」は、実際のファイル システムが読み書き可能でマウントされると同時に、読み取り専用でマウントできます。これは、ハードウェア障害やその他のシステム クラッシュ後のデータ復旧に役立つ機能です。対話型 NILFS「検査」ユーティリティの「lscp」(チェックポイントの一覧表示) コマンドは、まずチェックポイントのアドレス (この場合は「2048」) を見つけるために使用されます。
# /dev/sda2 を検査する ... nilfs> リストcp 1 6 2005年7月12日火曜日 14:55:57 MajorCP|LogiBegin|LogiEnd 2048 2352 2005年7月12日火曜日14:55:58 MajorCP|LogiEnd ... nilfs> やめる
チェックポイント アドレスは、チェックポイントをマウントするために使用されます。
# マウント -t nilfs -r -o cp=2048 /dev/sda2 /nilfs-cp # df ファイルシステム 1Kブロック 使用済み 使用可能 使用率 マウント済み /dev/sda2 70332412 8044540 62283776 12% /nilfs /dev/sda2 70332412 8044540 62283776 12% /nilfs-cp
特徴
NILFS は継続的なスナップショットを提供します。ファイルシステム全体のバージョン管理機能に加えて、ユーザーは最近いつでも誤って上書きまたは削除されたファイルを復元することもできます。NILFS は従来の LFS と同様に一貫性を維持できるため、システムクラッシュ後の迅速な回復を実現します。
継続的なスナップショットは、ポイントインタイムスナップショットをサポートするファイルシステム(例:Btrfs) を含むほとんどのファイルシステムでは提供されていません。
NILFS は、数秒ごとに、または同期書き込みごとに (変更がない限り) 多数のチェックポイントを作成します。ユーザーは、継続的に作成されるチェックポイントの中から重要なバージョンを選択し、それらをスナップショットに変更することができます。スナップショットは、チェックポイントに戻すまで保存されます。
ボリュームがいっぱいになるまで、スナップショットの数に制限はありません。各スナップショットは読み取り専用ファイルシステムとしてマウントできます。書き込み可能なマウントや他のスナップショットと同時にマウントできるため、使用中に一貫性のあるバックアップを作成するのに便利です。
NILFS の用途としては、バージョン管理、改ざん検出、SOXコンプライアンス ログ記録、データ損失回復などが挙げられます。
NILFS の現在のメジャー バージョンはバージョン 2 で、NILFS2 と呼ばれます。NILFS2 は、複数のスナップショットを保持しながらディスク領域を再利用するためのオンライン ガベージ コレクションを実装します。
NILFS のその他の機能は次のとおりです。
- B ツリーベースのファイルおよび inode 管理。
- システムクラッシュ後の即時回復。
- 64 ビットのデータ構造。多数のファイル、大きなファイル、ディスクをサポートします。
- 2038 年問題のない 64 ビットのディスク上のタイムスタンプ。
現在の状況
問題
2023年現在、NILFSには専用の整合性チェックユーティリティ(fsck)がないため、有効なチェックポイントを見つけられない重大なエラーから回復することはできません。[4] [5]
サポートされている機能
- 基本的なPOSIXファイルシステムの機能
- スナップショット
- 自動的かつ継続的に撮影
- ボリュームがいっぱいになるまでスナップショットの数に制限はありません
- 読み取り専用ファイルシステムとしてマウント可能
- 書き込み可能なマウントと同時にマウント可能(使用中に一貫したバックアップを作成するのに便利)
- クイックリスト
- バックグラウンドガベージ コレクション(GC)
- 複数のスナップショットを維持できる
- ユーザーランドデーモンによって提供される選択可能な GC ポリシー。
- マウント時の迅速なクラッシュリカバリ
- データファイルだけでなくメタデータファイルの先読みも可能
- ブロック サイズはページ サイズより小さい(例: 1 KBまたは 2 KB)
- オンラインサイズ変更 (Linux-3.x および nilfs-utils 2.1 以降)
- 関連ユーティリティ (関場次郎氏の寄稿による)
- グラブ2
- util-linux ( blkid、 libblkid 、 uuid マウント)
- udisks、パリンプセスト
- ファイルシステムラベル (nilfs-tune)
追加機能
- 高速な書き込みと回復時間
- ハードウェア障害時のファイルデータとシステム整合性へのダメージを最小限に抑えます
- 内部データは64ビット幅のワードサイズで処理されます
- 巨大なファイル(8 EiB)を作成して保存できます
互換性
NILFSは、 Arch Linux、[8] Debian [9] (バージョン5.0以降)、Fedora、Gentoo、[10] Linux Mint、NixOS、Ubuntu (バージョン9.10以降)などのさまざまなGNU/Linuxディストリビューションで利用できます。これを使用するには、通常、nilfs-utilsまたはnilfs-toolsパッケージをインストールする必要があります。NILFSを含むブートCDはPrRescueでも入手できます。
GPartedのようなパーティション編集アプリケーションでもサポートされています。[11]
NetBSDには、 BSDライセンスによる別の実装(現在は読み取り専用サポート)が含まれています。[12]
相対的なパフォーマンス
2015年1月にLinux.conf.auで行われた「組み込みシステム向けSDカードとファイルシステム」というプレゼンテーションでは、次のように述べられました。[13]
レイテンシに敏感なワークロードがある場合は、 NILFS を使用することをお勧めします。スループットに敏感なワークロードがある場合は、F2FS を使用することをお勧めします。
— ピーター・チャブ
NILFS2 は、F2FS や EXT4 よりも、小さなファイルが多数ある場合にははるかに適しています。
— ピーター・チャブ
ライセンス
NILFS2 ファイルシステムユーティリティは、GNU 一般公衆利用許諾書バージョン 2 に基づいて提供されています。ただし、lib/nilfs ライブラリとそのヘッダーファイルは、GNU Lesser 一般公衆利用許諾書バージョン 2.1 に基づいて提供されています。
開発者
nilfs-utilsNTT 株式会社の研究室で勤務していた、または勤務中
の日本人の主要著者および主要貢献者は次のとおりです。
- 小西 隆介 (主なメンテナー、2008 年 2 月~現在)
- 佐藤 浩二
- 上村 成彦
- 木原誠司
- 天貝 義治
- 一二三尚志と
- 森合智志。
その他の主な貢献者は次のとおりです。
- アンドレアス・ローナー[14]
- ダン・マギー
- デイヴィッド・アーレント
- デビッド・スミッド
- デクセン・デフリース
- ドミトリー・スミルノフ
- エリック・サンディーン
- 関場次郎
- マッテオ・フリーゴ
- 三竹 仁
- 岩井 隆
- ヴィアチェスラフ・ドゥベイコ
参照
- ZFS
- Btrfs
- F2FS、別のログ構造化ファイルシステム実装
- ファイルシステムのリスト
- ファイルシステムの比較
- ログ構造化ファイルシステム (BSD)
- スプライトオペレーティングシステム
参考文献
- ^ 「NILFSの現在の状況」。
- ^ 「BTRFS と NILFS [LWN.net]」。
- ^ 「NILFS に関する記事」 。2008年 7 月 28 日閲覧。
- ^ 破損した NILFS2 パーティション (/var) - /var 用のより良い FS についての意見はありますか?
- ^ カーネル アーカイブ: nilfs をマウントできません - スーパー ルートの検索中にエラーが発生しました。
- ^ NILFS バージョン 1: 概要
- ^ 検証しません: Re: nilfs2 はすべてのデータをチェックサムしますか?; カーネル 4.4.38-v7+ でも検証されません。
- ^ "Arch Linux - nilfs-utils 2.2.9-1 (X86_64)"。
- ^ 「Debian -- bullseye のパッケージ nilfs-tools の詳細」。
- ^ 「Sys-fs/Nilfs-utils – Gentoo パッケージ」。
- ^ 「GParted -- 機能」。
- ^ NiLFS(2) ソースコミット
- ^ Peter Chubb. 「組み込みシステム向け SD カードとファイルシステム」Linux.conf.au。
- ^ https://www.complang.tuwien.ac.at/Diplomarbeiten/rohner18.pdf [ベア URL PDF ]
外部リンク
- 公式サイト
- 「高レベルの機能を説明する記事」。2013 年 1 月 3 日にオリジナルからアーカイブされました。
- 「世界最大の通信会社がオープンソース開発ラボに参加」。2013 年 1 月 27 日のオリジナルからアーカイブ。
- NILFS: SSD を悲鳴を上げるファイルシステム[盗用]
- Manjaro チュートリアル NILFS: データ損失の可能性を最小限に抑えるように設計されたファイルシステム 2017-01-06 にWayback Machineでアーカイブ
