「NILFS2」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:File systems en:NILFS2 {{Related articles start}} {{Related|ファイルシステム}} {{Related articles end}} [https://nilfs.sourceforge.io/en/ NILFS2…」)
 
(カテゴリを修正)
1行目: 1行目:
[[Category:File systems]]
+
[[Category:ファイルシステム]]
 
[[en:NILFS2]]
 
[[en:NILFS2]]
 
{{Related articles start}}
 
{{Related articles start}}

2025年7月5日 (土) 00:43時点における版

関連記事

NILFS2 (New Implementation of a Log-structured File System) はログ構造化ファイルシステムです。ファイルシステム全体のバージョニングや連続的なスナップショットをサポートしており、数秒前に間違って上書きしたり壊してしまったりしたファイルでも復元することができます。

このファイルシステムは日本電信電話 (NTT) サイバースペース研究所と世界中のコミュニティによって開発されました。NILFS は GNU General Public License (GPL) の下でライセンスされました。

NILFS2 では連続的にスナップショットが作成されるため、ファイルシステムが自動的に全ファイルの過去のバージョンを保持するバージョニングファイルシステムとみなすことができます。

ノート:
  • NILFS2 は断片化を発生させるそのログ構造化設計によりメカニカルハードディスクドライブには最適ではないかもしれません。
  • 2025年4月22日現在、NILFS2 は atime (access time)、拡張属性、POSIX ACL (POSIX Access Control List) を実装していません。これらが必要である場合は、NILFS2を使用しないでください。また、適切なファイルシステムチェックが今のところ存在しないため、深刻なエラーが発生した場合に回復不能になるかもしれません。実装済みの機能と未実装の機能は Current status を参照してください。
ヒント: NILFS2 ツールのほとんどはデバイスファイルの引数を省略できますが、複数の NILFS2 ファイルシステムが存在する環境では間違ったファイルシステムを変更してしまわないようにデバイスファイルの引数を常に使用することが推奨されます。

NILFS2 ファイルシステムを作成する

この記事ではデバイスにパーティションがすでにセットアップされていると仮定しています。nilfs-utilsインストールしてください。mkfs.nilfs2 を使い、/dev/sdxY のように対象のパーティションを指定してフォーマットしてください:

# mkfs.nilfs2 -L mylabel /dev/sdxY

利用可能なオプションは mkfs.nilfs2(8) を参照してください。

ラベルを変更する

nilfs-tune コマンドはマウントされていないファイルシステムにのみ使用してください。

# nilfs-tune -L newlabel /dev/sdxY

マウントする

その後、ファイルシステムは手動あるいは他の方法でマウントできるようになります:

# mount /dev/sdxY /mnt/foo

マウントオプション

エラーハンドリング

errors=continue / remount-ro / panic は、ファイルシステムエラー時に NILFS2 が何をすべきかを指定します。continue はエラーを無視し、remount-ro はファイルシステムを読み取り専用でマウントし、panic はシステムを停止させます。

Discard

discard / nodiscard はそれぞれ TRIM を有効化/無効化します。

利用可能なオプションは mount.nilfs2(8) を参照してください。

スナップショット

NILFS2 には2種類のスナップショット (チェックポイントとスナップショット) があります。これらはそれぞれ cpss と表記されます。

NILFS2 は書き込み毎にチェックポイントを自動的に作成します。チェックポイントは、ファイルシステムが満タンになった時やユーザーが手動でガベージコレクションを発動させた時に領域を空けるために NILFS2 のガベージコレクタによって自動的に削除されうるスナップショットです。

スナップショットはチェックポイントから手動で変換する必要があり、自動的に削除されません。スナップショットはマウントすることができ、データを復元することができます。

スナップショットを一覧表示する

チェックポイントとスナップショットは以下のようにして一覧表示できます:

lscp /dev/sdxY
CNO        DATE     TIME  MODE  FLG      BLKCNT       ICNT
     1  2025-04-14 21:35:06   cp    -     10181423     554012
     2  2025-04-14 22:17:38   cp    -     10181423     554012
     3  2025-04-14 22:18:22   cp    -     10181423     554012
     4  2025-04-14 22:28:56   cp    -     10181423     554012
     5  2025-04-14 22:39:59   cp    -     10181423     554012
 ...

スナップショットのみを表示するには lscp に -s フラグを渡してください。利用可能なオプションは lscp(1) を参照してください。

チェックポイントをスナップショットに変換する

チェックポイントからデータを復元するには、先にチェックポイントをスナップショットに変換する必要があります。変換には chcp ユーティリティを使用してください:

# chcp ss /dev/sdxY checkpoint-number

checkpoint-numberlscp の CNO 列のチェックポイント番号です。

実行すると、lscp では以下のように表示されます:

    4  2025-04-14 22:28:56   ss    -     10181423     554012

スナップショットをチェックポイントに戻すには:

# chcp cp /dev/sdxY checkpoint-number

スナップショットを作成する

以下のようにしてチェックポイントを作成してください:

# mkcp /dev/sdxY

あるいはスナップショットを直接作成するには:

# mkcp --snapshot /dev/sdxY

スナップショットをマウントする

以下のコマンドはスナップショット checkpoint-number を読み取り専用で /mnt/snapshot にマウントします:

# mount -t nilfs2 -r -o cp=checkpoint-number /dev/sdxY /mnt/snapshot

スナップショットを削除する

チェックポイントを一つだけ削除するには:

# rmcp /dev/sdxY checkpoint-number

ある範囲のチェックポイントを一括で削除するには:

# rmcp /dev/sdxY start..end

start は開始チェックポイント番号、end は終点のチェックポイント番号です。(訳注: 削除範囲は [start, end] です。[start, end) ではありません。)

特定のチェックポイント及びそれより前のチェックポイントを全て削除するには:

# rmcp /dev/sdxY ..checkpoint-number

特定のチェックポイント及びそれより後のチェックポイントを全て削除するには:

# rmcp /dev/sdxY checkpoint-number..
ヒント: -i フラグを追加すると rmcp は入力された値をインタラクティブにダブルチェックします。

詳細は rmcp(8) を参照してください。

ファイルシステムをクリーンアップする

マウント済みの NILFS2 ファイルシステムから古いチェックポイントをクリーンアップするには:

# nilfs-clean /dev/sdxY

ガベージコレクタに関する詳細は nilfs-clean(8)nilfs_cleanerd(8) を参照してください。

ファイルシステムをリサイズする

nilfs-resize は NILFS2 ファイルシステムをリサイズします。

マウント済み NILFS2 ファイルシステムは以下のコマンドでリサイズできます:

# nilfs-resize /dev/sdxY desired-size

desired-size では単位接尾辞 s (512バイトセクタ)、K (キロバイト)、M (メガバイト)、G (ギガバイト)、T (テラバイト) を使用できます。desired-size が指定されなかった場合、デフォルトでパーティションのサイズが使用されます。

nilfs-resize は勝手にパーティションのサイズを変更しません。ファイルシステムを縮小した場合は後でパーティションを縮小する必要があり、逆にファイルシステムを拡張したい場合はあらかじめパーティションを拡張しておく必要があります。これは fdisk などで行えます。

詳細は nilfs-resize(8) を参照してください。

参照

翻訳ステータス: このページは en:NILFS2 の翻訳バージョンです。最後の翻訳日は 2025-07-05 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。