
USBを差し込んでファイルを修正して抜いてもデータは失われません。ただし、mount
USBにあるファイルを使用するとデータが失われます。どうなりますか?データの損失を防ぐためにどのような措置を講じるべきですか?奇妙なことは、データを失うことなくファイルを作成してUSBを取り外すことができますが、マウントを使用するとデータが失われることです。これは例です
echo "Data Data Data" > /media/your-usb/data
#unplug your usb. plug into another computer
#you'll see you didn't lose any data
#Create a file, put ext4 filesystem on it
dd if=/dev/zero of='/media/your-usb/test.bin' count=100000;
losetup /dev/loop0 /media/your-usb/test.bin
mkfs.ext4 /dev/loop0
losetup -d /dev/loop0
#Mount FS
mkdir m
mount -o loop /media/your-usb/test.bin m
echo Test > m/test
umount m
#No loss of data
mount -o loop ./test.bin m
echo Test2 > m/test2
#wait a moment. You'd think the data will flush
#unplug your USB
umount m
#plug your USB
mount -o loop ./test.bin m
cat m/test2 #error test2 is not a file
答え1
Linuxは、リムーバブルドライブを検出すると、データを頻繁に更新する必要があることを知っているほど賢いです。ループバックをインストールすると、サポートされているデバイスがいつでも削除できるファイルかどうかはわかりません。
次のコマンドを使用すると、システムが書き込みをキャッシュしないように強制できます。
mount -o loop,sync /media/your-usb/test.bin m
これによりパフォーマンスが低下し、ページの磨耗に関する警告も知っておく必要がありますman mount
。
sync All I/O to the filesystem should be done synchronously. In case
of media with limited number of write cycles (e.g. some flash
drives) "sync" may cause life-cycle shortening.
sync
何らかの理由でこれをしたくない場合は、他の方法は少なくともデバイスを取り外す前に実行することですumount
。
答え2
USBを差し込んでファイルを修正して抜いてもデータは失われません。
訂正:データが失われませんでした。しかし、。あなたは気づきました。
それはおそらく、あなた、あなたのディストリビューション、またはあなたが使っている自動マウントプログラムの管理者がリムーバブルUSBストレージデバイスをこのオプションでマウントするように設定したでしょう。sync
これにより、データが即座に記録されます。このsync
オプションには、記憶媒体が突然抜けたり、システムがクラッシュしてもデータが失われないようにすべてのデータを書き込むことができるという利点がありますが、次のようないくつかの欠点があります。
- フラッシュ型ストレージは一度に数バイトずつデータを書き込むため、より早く磨耗しますが、一度にかなり大きなブロックを書くだけでストレージを更新できるため、各ブロックは何度も書き換えられます。これにより、プライマリUSBドライブが非常に迅速にシャットダウンされます。
- 正しくマウント解除されていないファイルシステムはダーティとして表示されます。ダーティとしてマークされているが一貫したデータを含むファイルシステムと、書き込み中にインポートされたファイルシステムと一致しないデータを含むファイルシステムを区別することはできません。これは、「ダーティ」マークのないFATなどのファイルシステムには適用されません。
- 遅いです。おそらくはるかに遅いでしょう。
装置を取り外す前に取り外さないでくださいsync
。