私は長年の UNIX 経験がありますが、致命的なミスを犯したと思います。
起動中に空でないマウント ポイントに関するメッセージが表示されたので、システムを新しい環境に移行するときにそれらをクリーンアップすることにしました。SLES Rescue System を起動し、ルート ファイル システムと基本システム構造 (proc、sys、dev) を にマウントし/mnt
、chroot /mnt
と を実行しましたmount -va
。
すべてがうまくいったので、いくつかの構成設定を調整し、アンマウント中にマウント ポイントを確認しました。たとえば、
/var/cache
マウントはumount
成功しましたが、ll /var/cache
空でないマウント ポイントが表示され、ファイルシステムはマウントされていないと表示されました。そのため、コンテンツを削除しました。
基本的に、マウントされたすべてのファイルシステムに対して手順を繰り返し、chroot
環境を終了し、残りをアンマウントして再起動しました。
残念ながら、GRUB が見つからないと報告したため、システムは起動しませんnormal.mod
。
これは btrfs サブボリュームの機能ですか? 何が起こっていたのか説明できる人はいますか?
/etc/fstab
求められたとおり/etc/fstab
、典型的なシステムは次のとおりです。
/dev/sys/root / btrfs defaults 0 0
/dev/sys/root /var btrfs subvol=/@/var 0 0
/dev/sys/root /usr/local btrfs subvol=/@/usr/local 0 0
/dev/sys/root /tmp btrfs subvol=/@/tmp 0 0
/dev/sys/root /srv btrfs subvol=/@/srv 0 0
/dev/sys/root /root btrfs subvol=/@/root 0 0
/dev/sys/root /opt btrfs subvol=/@/opt 0 0
UUID=9fd27493-d194-48ba-a4bc-3551123e0d3b /home xfs defaults 0 0
/dev/sys/boot /boot btrfs defaults 0 0
UUID=0092-D1D5 /boot/efi vfat utf8 0 2
/dev/sys/root /.snapshots btrfs subvol=/@/.snapshots 0 0
答え1
仕組み
/dev/sys/root
Btrfs ファイルシステムが含まれています。 内の複数のエントリが、fstab
その異なるサブボリュームを異なるマウントポイントにマウントします。
仮説: のBtrfsファイルシステムのデフォルトのサブボリュームは で/dev/sys/root
あり/@
、 にマウントされると/
、他の多くのサブボリュームがマウントされる。それぞれのマウントポイントで適切な (通常は空ではない) ディレクトリがすでに予想される場所にあるため、ほとんど意味がありません。
(デフォルトのサブボリュームを確認するには、 を実行しますsudo btrfs subvolume get-default /
。)
読んでくださいこれは私のもう一つの答えですまた、デバイス上の Btrfs ディレクトリ (およびサブボリューム) ツリーと OS のディレクトリ構造の概念的な違いを理解してください。この知識がないと、現在の回答の残りの部分は非常にわかりにくいものになる可能性があります。
デフォルトのサブボリュームが/@
/@
BtrfsツリーからOS/
ツリーに表示される下にあるものすべてとともにこのマウント一人で/@/var
例えばBtrfsツリーのディレクトリを/var
OSツリーのように見るには十分です。つまり、アクセスしようとすると/var
前に /var
マウントされると
- OS は
/var
(OS の) がマウントポイントであるかどうかを確認しますが、そうではありません。 - そのため、OS は
/
(OS の) がマウントポイントであるかどうかを確認します。マウントポイントであり、/@
Btrfs に関連付けられています。 - そのため、OS はOS の
/@/var
Btrfsを表示します。/var
たまたま/@/var
Btrfs はサブボリュームです。さらに(OSの)subvol=/@/var
にマウントすると、(OSの)と同じディレクトリが表示されます。具体的には、現在アクセスすると、/var
/var
/var
- OS は
/var
(OS の) がマウントポイントであるかどうかを確認します。マウントポイントであり、/@/var
Btrfs に関連付けられています。 - OS は
/@/var
Btrfs を表示します。
そして、(OS を)アンマウントすると/var
、最初のケースに戻ります。
したがって、(OS の) がマウントされているかどうかは問題ではありません(実質的には問題ではありませんが、微妙な違いがある可能性があります)。いずれにしても、OS 内のBtrfs が/var
表示されます。/@/var
/var
fstab
マウントされた異なるサブボリューム内の他のいくつかのエントリいずれにしてもどこで見られるかこれらのエントリのポイントがよくわかりません (現時点では特定できない微妙な点がポイントなのかもしれません。あるいは、これらのエントリはまったく無意味なのかもしれません)。
比較すると、/var
(OS の) がマウントされている場合、 Btrfs は Btrfs の下にはないため、 OSとして Btrfs をマウントするだけではアクセスできないため、subvol=/var
マウントすることは意味があります。/var
/@
/@
/
どうやって壊したのか
… マウントされ、
umount
成功しましたが、ll …
ファイルシステムがマウントされていないと表示され、空でないマウントポイントが表示されました。そのため、コンテンツを削除しました。
前述したように、fstab
マウントされた複数のエントリは、いずれにしても表示される異なるサブボリュームにあります。これらのケースでは、以前に表示されていたコンテンツを削除した後にコンテンツを削除します。影になった無関係なコンテンツを削除したとumount
思っumount
ていましたが、実際には実際の重要なコンテンツを削除しました。
ただし、適合しない点が 2 つあります。
- 例のマウントポイントは です。これをアンマウントしたようですが、投稿した には
/var/cache
がありません。/var/cache
fstab
- あなたが投稿した による
fstab
と、/
(OS の) は から来ているのに対し/dev/sys/root
、/boot
(OS の) は から来ています/dev/sys/boot
。 記述されている破壊メカニズムは適用できません。 しかし、あなたは「GRUB が を見つけられないと文句を言ったnormal.mod
」と主張しており、このことから、何らかの方法で の下で破壊したと推測します/boot
。
したがって、公開されているものfstab
(あなたが「典型的なシステムが持っているもの」と表現したもの)は、ちょうど fstab
影響を受ける OS の。/boot
と同じファイルシステムが使用されており/
、不必要にマウントされたため、前述のような破損のシナリオが発生しやすいのではないかと思われます。