ドライブの再マウントに「/ etc / fstab」を使用していますか?


9

Ubuntu 14.04.5がインストールされたデバイスに、ext4ファイルシステムの単一のハードドライブがあります。

ドキュメントExt4 Filesystemを読むことで、デフォルトのデータモードはorderedメタデータのみを保護するモードであることがわかりました。私のプロジェクトではjournal、データの安全性の価値が高いため、ファイルデータも保護するように変更したいと考えています。

私が最初に試みたのは、/etc/fstabファイルを変更することでした。変えようとした

UUID=<UUID> / ext4 errors=remount-ro 0 1

UUID=<UUID> / ext4 errors=remount-ro,data=journal 0 1

data=journalオプションフィールドに追加する。

しかし、デバイスを再起動すると、「」というエラーメッセージが表示されましたcannot change data mode on remount。を確認しdmesgたところ、orderedデータモードでのドライブのマウントに関する以前のメッセージが表示されました。

恥ずかしいほど長い間、/etc/fstabデフォルトのマウントオプションを上書きしてドライブを1回だけマウントするのに使用されていると思いました。しかし、今ではそれが間違っているように見えます。ドライブはデフォルトのマウントオプションを使用してマウントされ、次にそれ/etc/fstabをピックアップして再マウントします。

私の質問は

  • この「mount-remout」プロセスはシステムの設計ですか?私はFstabwikiページを読みましたが、「mount-remount」のことについて言及しているのを見ませんでした。
  • /etc/fstabが本当に再マウントに使用される場合、起動プロセスのどのステップでドライブが初めてマウントされますか?で実装されてい/etc/init.dますか?/etc/init.d呼び出されたumountfsとにいくつかのスクリプトが表示されましたumountrootが、内容をざっと見ただけで、関連性がありません。

2
ここで述べた「鶏と卵」の問題だと思います(/etc/fstabルートファイルシステムにありますが、ファイルシステムがマウントされるまで読み取ることができません):initramfsは/ etc / fstabを使用しますか?
Steeldriver、

回答:


8

からman ext4

data = {journal | ordered | writeback}
              ファイルデータのジャーナリングモードを指定します。メタデータは常に
              ジャーナル。ルートファイルシステムで注文した以外のモードを使用するには
              まず、モードをブートパラメータとしてカーネルに渡します。例:root‐
              flags = data = journal。

data=orderedfstab-lineから削除して、/etc/default/grub代わりに編集してください。で/etc/default/grub変更行

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash root‐flags=data=journal"

実行sudo update-grubして再起動します。


5

/ etc / fstabを使用する場合

実行sudo strace -e open,openat mount -o remount,rw /すると、コマンドが実際に開いていることがわかります/etc/fstab。これは、表示される最も一般的なコマンドであり、リカバリシェルからの作業に関する記事でよく参照されます。

sourcejediの回答も引用するには(mount(8)マニュアルから取得):

mount -o remount、rw / dir

この呼び出しの後、mountはfstabを読み取り、これらのオプションをコマンドラインからのオプションとマージします(-o)。fstabにマウントポイントが見つからない場合、ソースが指定されていない再マウントが許可されます。

ただし、それ/etc/fstabが常に使用されるわけではありません。特に、デバイスファイルも指定する場合。mount(8)マニュアルへの参照:

再マウント機能は、mountコマンドがfstabのオプションを処理する標準的な方法に従います。これは、デバイスとディレクトリが完全に指定されている場合にのみ、mountコマンドがfstab(またはmtab)を読み取らないことを意味します。

mount -o remount、rw / dev / foo / dir

この呼び出しの後、すべての古いマウントオプションが置き換えられ、fstabからの任意のものは無視されます。ただし、mountコマンドによって内部的に生成および維持されるloop =オプションは除きます。

これは/dir任意である可能性があるため、理にかなっています。デバイスを別のマウントポイントに再マウントします。

/etc/fstab取り付け時にも参照されていない/ブート時のカーネルでのファイルシステムはの何も知りません/etc/fstabpsusiの答えを引用するには:

最終的にブートローダーが登場し、コマンドラインをカーネルに渡すことができました。root =引数が渡された場合、それは組み込み値の代わりにルートfsがどこにあるかをカーネルに伝えました。これにアクセスするために必要なドライバーは、カーネルに組み込まれている必要がありました。

...

最後に、今日、initramfsがあります。これはinitrdに似ていますが、ramdiskにロードされる圧縮ファイルシステムイメージではなく、圧縮されたcpioアーカイブです。tmpfsがルートとしてマウントされ、アーカイブがそこに抽出されます。ダーティハックと見なされたpivot_rootを使用する代わりに、initramfsブートスクリプトは/ rootに実際のルートをマウントし、tmpfsルートのすべてのファイルを削除してから、/ rootにchrootし、/ sbin / initを実行します

fstabを必要としないファイルシステム

また、Linuxカーネルにはメモリに常駐する他のファイルシステムがあることに注意してください。これらは通常ユーザーが使用できません。一部にはマウントポイントがないものもあれば、ユーザーに公開されるものもあります。カーネルは/etc/fstabそれらを参照する必要はありません。その例は次の/procとおりです。これは、ほとんどの場合プロセスに関する情報を公開する仮想ファイルシステムであり、ハードウェアとシステムについて実際に存在する必要があるもの/sys-別の仮想ファイルシステムです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.