ヘッドレスpiでネットワークを失った場合を除き、適切にシャットダウンすることを避けるという意味で、piを抜く習慣はありません。
通常、私は常にその時点で緑色のACTライトが点灯していないことを確認します。最近のモデル(またはファームウェア?)では、SDカードがアクセスされていない場合、これはオフになります。それはあなたが確かめたいことです。絶えず書き込みをしているのでなければ、これは十分に簡単なはずです。空きRAM(コンテキストに応じて50〜100 MB以上)に十分なヘッドルームがある限り、頻繁に再利用される傾向があるが、特定の瞬間にプロセスによって実際にロードされないもの空きメモリにキャッシュされ、実際の物理メディアではなく、OSによってそこからリロードされます。これが、現代のすべての汎用オペレーティングシステムの動作方法です。
piがSDカードを使用している場合、リスクは最小限です。カード上のファイルシステムがメモリ内の状態と同期していません。通常、これはおそらく大きな問題ではありません。まず第一に、ほとんどのpisでデフォルトで使用されるファイルシステムジャーナリングは、ファイルシステムがクリーンにアンマウントされなかった場合にブート時に自動的に適用されるfsckと同様に、それに対する防御になるかもしれません。私は、この文脈では、私はそれは多くの場合だと思うので、「かもしれない」とありませんが、まもなく「ある」と言うなぜ私が説明しようではないかもしれません。
私の知る限り、プラグを抜くときにファイルシステムが破損したりデータが失われたりすることはありませんでした。しかし、繰り返しますが、私は習慣的にそれをしません。1日に数回それを行うと、最終的に統計的なリスクレベルが何であれ、実行される可能性があり、潜在的に厄介なキャッチが関係します。
問題は次のとおりです。
最近、OS /ファイルシステムメカニズムが無力になる可能性のあるSDカードに問題があり、一部の人々がfs破損、特にシステムに関係なくコードをヤンクする問題が続くように見える理由を説明していることがあります状態-例えば、最近ここで誰かが計算モジュールを実行していると主張し、破損によりシステムが約1/40の停電でシステムを起動できなくなった。
要約すると、SDカードの性質を考慮せずに、システムがビジー状態であっても発生しないはずです。破損する可能性が最も高いのは、効果的なシステムソフトウェアではなく、書き込まれている重要ではないものです読み取り専用で、更新時にのみ変更されます。
ビットがジャグリングされている場合に発生する可能性があるため、さまざまなビットが格納されているファイルシステムのメタ情報が破損しています。ただし、ジャーナリングとfsckはこれに対処する必要がありますが、これにはカーネルの起動が必要ですが、piのカーネルは別のブートパーティション上にあり、使用中に(更新時を除き)マウント解除される可能性がありますシステムの起動後は使用されません。パーティションに関する情報は、マウントされたままであっても、事実上、破損しないようにする必要があります。
だが...
SDカードは、オペレーティングシステムにとってブラックボックスです。そこから抜け出す方法はありません。コンピューターのハードウェアの一部であるSDカードコントローラー用の特定のドライバーがありますが(piでは、これはSoCの一部です)、カードの異なる特定のメーカーやモデル用のドライバーなどはありません。
しかし、それらはすべて、内部に非常に異なる方法で動作する可能性のあるマイクロコントローラーを持っています。1. これが、カードをブラックボックスにするものです。標準化されたSDプロトコルを介してオペレーティングシステムとやり取りします。これがOSの最後の制御ポイントです。
従来の回転ディスクとは異なるSDカードやその他のソリッドステートメディアの機能の1つは、不透明な仮想アドレス指定を使用することです。オペレーティングシステムが認識する順序で物理的に情報を保存することはありません。これはほとんど良いことです。さもなければ、異なるブランドのカードなどに異なるドライバーが本当に必要になるかもしれません。また、カードがウェアレベリングを(不透明に)実装できるようにし、寿命を大幅に延ばします。
彼らが頼るもう一つのことは、比較的大きな「消去ブロック」です。ブロック内のデータを変更する必要がある場合、ブロック全体が消去され、再書き込みされます。もちろん、ファイルシステムもこの種のことを行いますが、それはシステムソフトウェアレベルであり、これに起因する問題はジャーナリングとfsck
対処の問題とまったく同じです。
乗り越えられない問題の核心は、スケールファイルシステムがそれを行うことは、通常、スケールSDカードが行うよりもはるかに小さいことです。そうでない場合、ファイルシステムブロックには1つのファイルからのデータしか格納できないため、大量のストレージスペースを無駄にすることになります。ブロックが2 MBで、数kBのデータしかない場合、残りは無駄になります。そのため、ファイルシステムブロックは1/2 KiBから4 KiBの範囲にある傾向があります。
SDカードのコントローラーは「ファイル」、「ファイルシステム」、または「デバイスパーティション」などの境界を認識しないため、SDカードがこれを実行しないことは明らかです。実際、実行できません。OSが必要とするデータの塊を処理するだけで、物理レベルで何かが発生する可能性のあるブラックボックス内の不透明なレイヤーを介して処理します。
明らかである理由の1つは(前提カードを除いて「そもそもそれができなかった」)、これらのブロックは非常に大きいことが多いが、カードはすべてのスペースをうまく利用するように見えるためです。消去ブロックのサイズは数メガバイトです。さらに、詳細は独自のものです。OSがカードに消去ブロックサイズを要求できるメカニズムが存在する場合がありますが、カードはこれを提供する必要はなく、それについて嘘をつくことができ、OSがそれを利用しようとすると不合理になります。
このことから、次のことがわかります。
SDカードコントローラーには、一貫性のあるファイルシステムとパーティションという意味で、「正当に」データがどこに属するかという概念がありません。
SDカードは、OSが真に見ることができないブラックボックスです。
次に、カードに4 KiB以下のファイルシステムブロックを使用する複数のパーティションが含まれる1 MBの消去ブロックにあるものは、カードが十分に使用されると(そして場合によってはあまり使用されていない場合でも)すべて)。これはおそらく、OSがより大きな/対応するブロックサイズを使用するように強制する場合でも当てはまります。それらは最終的に不整合になります。
そう:
電源が切断された場合にSDカードがブロックを変更中であるが、それは可能性があり、任意のデータのかなり大きな体積の損失につながる可能性が何かカードから。「読み取り専用」とマークされた情報である可能性があります。 マウントされていないパーティションからの情報である可能性があり、明らかに十分なほど、ほとんど未使用のブートパーティションからの情報である可能性があります。
それが起こり、カードにそれ自体の何らかの種類の保護システムがない場合(一部のシステムにはあるかもしれませんが、ほとんどのシステムにはないでしょう)、FUBARの状況を見ることができます。ジャーナリングは、パーティションの境界さえ認識しないランダムなMBサイズの破損から保護しません。またはfsck。
または、カードのハードウェアは一般的にプロプライエタリであるため、カードの製造元が製造したソフトウェア以外のすべてのものが可能性があります。私はそのようなことを聞いたことがありません。これにより、カードがより複雑になり、より高価になり、使用するのが面倒になります。これは目標ではありません。
別の言い方をすれば、SDカードはこの方法で確実に使用することを意図したものではありません。それらは安価で非常に便利ですが、それはプロトコルのトレードオフの結果です。一般的に、カードの電源を勝手に殺した場合、カード上のデータの完全性は保証されません。
Piのプラグを抜くだけで何が問題になるのでしょうか?単純にプラグを抜く必要がありますか?注:この場合、データの損失についてはあまり心配していません。
物理的にpiに害を与えることはありません。いいえ、「データ損失」は完全に再フォーマットする必要がある「無駄なカード」にまで及ぶ可能性があることに注意してください。ただし、緑色のACTライトをオフにして実行している場合、その可能性は非常に低いと思います。
- これは、一部の人々にとって特定のカードの特定のメーカー/モデルが他の特定のメーカー/モデルより明らかに明らかに悪い理由を考えるときに重要です。残念ながら、同じラベルが付けられた2枚のカードは、記載されている機能(サイズ、速度など)の点では同じかもしれませんが、製造者は構成部品の点でそれらを真に100%にすることに拘束されません。