bcache
を使用しました ライトスルー構成でのみ、IIRC は bcache
の場合でも マシンの実行中にキャッシュデバイスが消えると、まったく気に入りません。 bcache
を期待してください その場合、デバイスは完全に停止します。
マシンの電源がオフになっているときにキャッシュ デバイスを削除しようとしたことはないので、それについては何も言えません。 bcache
だと思いますが まだかなり扱いにくいので、最初に VM または物理テスト マシンで試してみることをお勧めします。
キャッシュ デバイスを安全に削除するには、キャッシュ セットを bcache デバイスから切り離します。
echo <cache-set-uuid> > /sys/block/bcache0/bcache/detach
必要なキャッシュ セット UUID を確認するには、/sys/fs/bcache/
を調べます。 :
host ~ # ll /sys/fs/bcache/
total 0
drwxr-xr-x 7 root root 0 Feb 19 00:11 eb99feda-fac7-43dc-b89d-18765e9febb6
--w------- 1 root root 4096 Feb 19 00:11 register
--w------- 1 root root 4096 Feb 7 07:17 register_quiet
たとえばこの場合、次を実行します:
echo eb99feda-fac7-43dc-b89d-18765e9febb6 > /sys/block/bcache0/bcache/detach
state
ファイルは no cache
となるはずです その後:
host ~ # cat /sys/block/bcache0/bcache/state
no cache
bcache のセットアップに成功し、既に作業を進めており、単純にバックアップするには大きすぎる大量の重要なデータをそこに置き、キャッシング デバイスを交換したほうがよいことに気付き、最初からやり直したとします。これがあなたがそれを行う方法です。このソリューションは、VM トライアルに基づいています。
デバイス /dev/bcache0
について話しているとしましょう 、新しいキャッシュ デバイスは /dev/sdf1
です バッキング デバイスは /dev/md1
です .すべてのコマンドは root によって実行されます。
/sys/block/bcache0/bcache/detach
にエコーして、キャッシュ デバイスを削除します。 .キャッシング デバイスのパーティションを再作成する場合は、再起動する必要があります。登録を解除しない限り、bcache は引き続きパーティションをロックするためです。 make-bcache -C /dev/sdf1
の新しいキャッシュ デバイス そのデバイスの setUUID をメモします。バッキング デバイスを新しいキャッシュ セットに登録します。
echo [setUUID of new cache device] >/sys/block/bcache0/bcache/attach
再起動する必要はありません。
ワンライナー:
echo $(ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/) > /sys/block/bcache0/bcache/detach
次に、キャッシュがクリアされるまで待ちます:
while true; do if [[ $(cat /sys/block/bcache0/bcache/state) != "dirty" ]];
then echo "DONE"; break;
else cat /sys/block/bcache0/bcache/dirty_data; sleep 30; fi; done