web-dev-qa-db-ja.com

exfatへの書き込みはマウント間で持続しませんか?

私...

  • 私のSamsungGalaxy S4用に、音楽を保存するためのmicroSDカードを購入しました。
  • それをS4に挿入し、カードをフォーマットしました(exFat)。
  • Fuse-exfatとexfat-utilsをインストールし、カードをコンピューターに挿入しました(Fedora 21、Gnome 3.14);正常にマウントされます。
  • カードに音楽をコピーしました。
    • ディレクトリ構造:Card/Music/Artist/Album/SongTitle.ogg
  • 開いたファイル-正常に再生されます。
  • カードをアンマウント
  • カードを取り出す
  • カードをもう一度コンピュータに挿入します
  • 多くのファイルとフォルダが表示されなくなったことに注意してください。

    • すべてのアーティストフォルダが表示されます。
    • 一部のアルバムフォルダが表示されない
    • ほとんどの曲ファイルは表示されません。
    • ファイルとフォルダの両方について、フォルダはファイルよりも遠くになりますが、それらが消える(つまり、アルファベットのコピーの開始が正常に行われる)個別のポイントがあるようです。
3
Julian Delphiki

カードを取り出す前にアンマウントすることについては言及していません。質問を書くときにそれが省略ではない場合、あなたの問題があります。

あらゆる種類のディスクへの書き込みは バッファリング :オペレーティングシステムはデータを蓄積してメモリに書き込み、都合がよいと判断したときにディスクに書き込みます。データは、アプリケーションがファイルを書き込んだのと同じ順序でディスクに書き込まれるとは限りません。

これは通常、アプリケーションに対して完全に透過的です。アプリケーションがディスクからデータを読み戻すときに、データがまだバッファーで待機している場合、アプリケーションはそのデータを取り戻します。

ただし、突然ディスクを取り出すと、書き込まれていないすべてのバッファが失われます。オペレーティングシステムには、これが同じディスクであり、その間に別のマシンでディスクが変更されていないことを確認する方法がないため、ディスクを挿入し直しても回復されません。 (とにかく、OSは、ディスクがなくなったことを検出するとすぐに、メモリ内のバッファを他のコンテンツに再利用します。とにかく、バッファの内容を何にも使用できなかったためです。)

ディスクを取り出す前に、もう使用していないことをオペレーティングシステムに通知する必要があります。これはunmountingと呼ばれます(システムにファイルシステムの使用を開始させる反対の操作は mounting と呼ばれます)。ファイルシステムをアンマウントするようにシステムに指示すると、ディスク上のデータが最新になるように、すべてのバッファがフラッシュされます。通常のデスクトップ環境では、ディスクを挿入するとすぐに自動的にマウントされます。ディスクを取り外す前に、システムにアンマウントするように指示する必要があります。ディスクを取り外すと、システムがアンマウントするには遅すぎます。多くのファイルマネージャには、「アンマウント」または「イジェクト」ボタンが表示されます。それを押して、ファイルマネージャーが操作が終了したことを通知するのを待ちます(書き込まれるデータの量によっては、数秒かかる場合があります)。その後、カードを取り出すことができます。

これはexfatとは何の関係もありません。ちなみに、これはどのファイルシステムやどのメディアでも起こります。

カードへの書き込みが自動的に行われるように構成することができます。これは、非常に遅くなる可能性があり、書き込みが頻繁になると安価なフラッシュメディアがすぐに使い果たされる可能性があるため、実行されません(フラッシュメディアは、ブロックを再書き込みできる回数に制限があり、更新するためだけにブロックを繰り返し再書き込みします)一度に大量のデータを書き込む場合と比較して、その一部は非効率的です)。