ラズベリーのように停電後にLinuxが再起動しない理由

ラズベリーのように停電後にLinuxが再起動しない理由

私はRaspberry Pi 3b +で作業しており、Raspberryを工業化したいと思います(私を判断しないでください。これは私の顧客です)。

私は2つのパーティション(/ bootと/)を持つSDカードを使います。

最大の心配は、停電によってSDカードが破損することです。

この問題を解決するために、私のSDカードは読み取り専用です。

私の質問

停電から私のSDカードを保護する方法を知っています(...希望します)。

ところで、停電後になぜSDカードが破損するのか理解できません。

なぜそれを説明してもらえますか?

ベストアンサー1

注意事項:

SDカードの書き込みを防ぐと、システム全体が起動しなくなる可能性があります。一部のファイルは一時/動的であるため、オペレーティングシステム(またはオペレーティングシステム内のプログラム)の実行中に作成する必要があります。もちろん、これらの一時ファイルを保存するためにRAMに偽のディスクドライブを作成するなどの回避策があります(すべて一時ファイルなので、停電によってRAMが消えても問題ありません)。最新の Linux カーネルはすでにこの作業や同様の作業を行っています。 /runおよび/sysディレクトリはRAMに作成され、実際に物理ドライブに書き込まれません。 / devの一部のファイル/ディレクトリなど、他のものは必要に応じて作成されます。

どうして、なぜ損傷が発生したのか… SDカードの読み書き速度はCPUやRAMの速度に比べて非常に遅い点ご了承ください。 CPUが毎秒数十億の命令を実行し、RAMが同様の方法でメモリ位置にアクセスする場合、すべてが正常です。しかし、SDカードを読み書きする必要がある場合はどうなりますか?毎秒数千のメモリ位置のみを読み書きできます。

OSが読み取り/書き込みが完了するのを待っているすべてを停止したくありません。読み込みに1分かかるWebページを読み込むと想像してください。しかし、読み込み中は完了するまで待つ必要があります!コーヒーを飲むことも、他のWebページに切り替えることもできず、辛抱強くてローディングを止めるように言うこともできません。

したがって、OSが実行する作業は、一部のデータをRAMにキャッシュして、SDからデータを再読み込みするのを待つ必要がないようにすることです。 SDカードに書き込むときもこれを行います。データを実際にSDカードに書き込むのではなく、RAMに保存し、後でCPU / OSの使用量が少ないときに実際にSDカードに書き込むようにスケジュールします。戻って、好きなように答えるなど、別のことをしてください。

このデータはRAMにのみ存在しますが、電源を切ると破損が発生します。 RAMを最新の状態に保つことができないため、キャッシュされたデータをSDカードに書き込むことはできません。それは消えます。したがって、SDカードのデータは現在最新ではありません。 RAMにデータがありません。時には幸運なので問題になりません。失われたデータは重要ではなく、再生成される可能性があります。時には、失われたデータが重要であり、破損を引き起こすことがあります。

小さな変化でも大きな問題を引き起こす可能性があります。ファイルが1バイトだけ大きくなると、オペレーティングシステムはディスクデータを更新する必要があります。つまり、ファイルに追加されたバイトとファイルサイズをオペレーティングシステムに通知するディスク上のデータです。ファイルがもう1バイト大きくなったことを知るために更新する必要があります。ただし、この情報はRAMにもキャッシュされ、後でSDカードに書き込まれる予定です。

新しいサイズが書き込まれる前に停電が発生した場合、SDカードはファイルがまだ古いサイズであると考えます。新しいさよならは完全に消えた - 腐敗。

ほとんどのオペレーティングシステムはリスクを最小限に抑えるための措置を講じますが、リスクを完全に排除することはできません。 SDカードの書き込み防止機能も完璧ではありません。 SDカードは、時間の経過とともに保存されたデータが保持されなくなるまでパフォーマンスが低下します。

EMP(電磁パルス)も同様です。これは電気機器の短絡と焼損を引き起こす可能性があります。そのため、SDカードが十分に強い電磁パルスにさらされても削除できます。など。

おすすめ記事