Linux (Ubuntu を使用しています) で外付け USB ドライブの書き込みキャッシュを永続的にオフにするにはどうすればよいですか?
私はもう試した:
コマンドライン方式: hdparm -W0 /dev/sdb <---- これは現在のドライブに対してのみ機能し、再起動後にリセットされます。
hdparm の「-k1」フラグは設定を強制的に保持するはずですが、次のように表示されます。
HDIO_SET_KEEPSETTINGS が失敗しました: 無効な引数です
HDIO_GET_KEEPSETTINGS が失敗しました: 引数が無効です
設定ファイル方式(永続的に行う別の方法のようです): 次に見つけたのは、/etc にある「hdparm.conf」ファイルを変更することでした。ただし、そのためには、ドライブ文字、「sdb、sdc...」などを事前に知っておく必要があるようです。
どのような場合でもすべてのドライブ、具体的にはすべての USB 外部ドライブを包括的にカバーするにはどうすればよいでしょうか?
主な問題は、これらの USB 外付けドライブを接続する順序がわからないため、ドライブ文字が変更され、実際には「sdb」ではない可能性があるため、「sdb」という名前を付けることができないことです...
これは、接続されていないドライブ文字に対しても hdparm.conf にエントリが複数回存在する可能性がある状況ですか? そうすれば、どのドライブが接続されていても、write_cache が事前にオフになります。 それとも、何か問題が起きるでしょうか?
可能設定ファイル例 (これは機能しますか?):
/dev/sda {
write_cache = off
}
/dev/sdb {
write_cache = off
}
/dev/sdc {
write_cache = off
}
/dev/sdd {
write_cache = off
}
繰り返しますが、これらのドライブはまだ存在していない可能性があります... 事前にアルファベットの文字をできるだけ多くカバーするだけで、何があろうと write_cache はオフになります。ただし、これよりも良い方法があるはずです...
他に何かアイデアはありますか? あるいはもっと良いアプローチはありますか? ありがとうございます!
答え1
-Kオプションを使用する必要があります。man hdparmより
-k Get/set the "keep_settings_over_reset" flag for the drive. When this flag is set, the drive will preserve the -dmu settings
over a soft reset, (as done during the error recovery sequence). This option defaults to off, to prevent drive reset loops
which could be caused by combinations of -dmu settings. The -k option should therefore only be set after one has achieved
confidence in correct system operation with a chosen set of configuration settings. In practice, all that is typically nec‐
essary to test a configuration (prior to using -k) is to verify that the drive can be read/written, and that no error logs
(kernel messages) are generated in the process (look in /var/adm/messages on most systems).
-K Set the drive´s "keep_features_over_reset" flag. Setting this enables the drive to retain the settings for -APSWXZ over a
soft reset (as done during the error recovery sequence). Not all drives support this feature.