btrfsで読み取り専用スナップショットを作成するには?

btrfsで読み取り専用スナップショットを作成するには?

私が理解したのは、デフォルトbtrfs subvolume snapshotで作成されたスナップショットは、btrfsボリュームのマウントポイントの下のパスに書き込み可能で表示されます。

通常のシステム操作中にスナップショットに何も記録されないようにシステムを設定するにはどうすればよいですか?ただし、ユーザーに見えないようにするわけではありません(つまり、その権限内のすべてのユーザーが読むことができる必要があります)。

(現在は、スナップショットがマップされている場所だけを知っています。chmod og-rwx /.snapshotsしかし、これは2番目の希望を満たしておらず、保証も十分に強力ではありません。root権限を持つプロセスがそこから何かを損なう可能性があります。)

mountこれを達成するために必要なトリックはありますか?

答え1

  • 読み取り専用サブボリュームを作成します(root):
    btrfs subvolume snapshot -r /path/to/mounted/subvolume /path/to/snapshot
    
  • 既存のサブボリューム/スナップショットを読み取り専用に変更:
    btrfs property set /path/to/snapshot ro true
    
  • 既存のサブボリュームの現在の状態を確認してください。
    btrfs property get /path/to/snapshot ro
    

(以前のバージョンのUbuntuでは機能しません。)

答え2

Ubuntuを使用していますか?

Ubuntuには以前のバージョンのbtrfs-tools(別名「btrfs-progs」)が付属しているため、ユーザースペースツールは読み取り専用スナップショットをサポートしません。

このエラー(および親エラー)を確認してください。

https://bugs.launchpad.net/ubuntu/+source/btrfs-tools/+bug/924621

答え3

~によるとBtrfs Wiki、読み取り専用スナップショットはLinux 2.6.38から利用可能です。したがって、最新のカーネルがあることを確認してください。それ以外の場合は、roマウントオプション(mount -o [other-options],ro ...)を使用してこれを実行できます。

関連情報