リムーバブルUSBストレージでインストールファイルを繰り返すとデータが失われる

リムーバブルUSBストレージでインストールファイルを繰り返すとデータが失われる

USBを差し込んでファイルを修正して抜いてもデータは失われません。ただし、mountUSBにあるファイルを使用するとデータが失われます。どうなりますか?データの損失を防ぐためにどのような措置を講じるべきですか?奇妙なことは、データを失うことなくファイルを作成して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

おすすめ記事