btrfs:サブボリュームにマウントオプションが適用されないのはなぜですか?

btrfs:サブボリュームにマウントオプションが適用されないのはなぜですか?

openSUSE Tumbleweedを実行していますが、btrfsサブボリュームをマウントするときに奇妙な動作が見つかりました。 btrfsファイルシステムには2つのサブボリュームがあります@media@migration私の/etc/fstab設定は次のとおりです。

UUID=<UUID>       /mnt/media      btrfs   subvol=/@media,noatime,noexec,nodev,nosuid      0       0
UUID=<UUID>       /mnt/migration  btrfs   subvol=/@migration,noatime,noexec,nodev,nosuid  0       0

ただし、実行すると、mount -a次のような結果が表示されます。

/dev/sdb1 on /mnt/media type btrfs (rw,nosuid,nodev,noexec,noatime,space_cache=v2,subvolid=278,subvol=/@media)
/dev/sdb1 on /mnt/migration type btrfs (rw,relatime,space_cache=v2,subvolid=279,subvol=/@migration)

ご覧のとおり、マウントオプションは最初にnosuid,nodev,noexec,noatimeマウントされたサブボリュームにのみ適用されるようです。 2番目だけrelatime

私が試したとき再インストール2番目のサブボリュームは正しく表示されます。

:~> sudo mount -o remount,noatime /dev/sdb1 /mnt/migration
:~> mount | tail -n 2
/dev/sdb1 on /mnt/media type btrfs (rw,nosuid,nodev,noexec,noatime,space_cache=v2,subvolid=278,subvol=/@media)
/dev/sdb1 on /mnt/migration type btrfs (rw,noatime,space_cache=v2,subvolid=279,subvol=/@migration)

だから私の質問は次のようになります

  1. 後続のサブボリュームのマウントオプションは重要ですか? (つまり、これはただの視覚的なエラーですか?)
  2. マウントオプションが実際に適用されているかどうかを確認する方法はありますか?

ベストアンサー1

サブボリュームのマウントは実際にはnoatimeに従います。これは新しいbtrfsドキュメントに明示的に指定されています(不明ですが)。https://btrfs.readthedocs.io/en/latest/btrfs-subvolume.html#mount-options

(彼らは私が来た目的のnoexecもサポートしています。)

$ sudo mount -o subvolid=257,noatime /dev/sdd1 test
$ touch -a -t 9001010101 test/foo
$ stat test/foo
Access: 1990-01-01 01:01:00.000000000 -0700
$ cat test/foo # noatime: atime unchanged
$ stat test/foo
Access: 1990-01-01 01:01:00.000000000 -0700
$ sudo umount test
$ sudo mount -o subvolid=257 /dev/sdd1 test
$ cat test/foo # default (relatime): atime changed
$ stat test/foo
Access: 2023-09-20 03:50:37.919732794 -0600

(簡潔にするために、statの他の出力ラインは切り捨てられました。)

おすすめ記事