Ich habe bcache
verwendet nur in einer Writethrough-Konfiguration und IIRC sogar dann bcache
mag überhaupt nicht, wenn das Cache-Gerät verschwindet, während die Maschine läuft. Erwarten Sie die bcache
Gerät in diesem Fall vollständig blockieren.
Ich habe nicht versucht, das Cache-Gerät zu entfernen, während die Maschine ausgeschaltet ist, daher kann ich dazu nichts sagen. Ich denke aber, dass bcache
ist immer noch ziemlich heikel, daher würde ich empfehlen, dass Sie das zuerst mit einer VM oder einem physischen Testcomputer versuchen.
Um das Cache-Gerät sicher zu entfernen, können Sie den Cache-Satz vom bcache-Gerät trennen:
echo <cache-set-uuid> > /sys/block/bcache0/bcache/detach
Um die notwendige Cache-Set-UUID zu ermitteln, schauen Sie in /sys/fs/bcache/
nach :
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
Führen Sie in diesem Fall beispielsweise Folgendes aus:
echo eb99feda-fac7-43dc-b89d-18765e9febb6 > /sys/block/bcache0/bcache/detach
Die state
Datei sollte no cache
lauten danach:
host ~ # cat /sys/block/bcache0/bcache/state
no cache
Angenommen, Sie haben erfolgreich einen bcache eingerichtet, Sie arbeiten bereits daran, legen dort viele wichtige Daten ab, die zu groß sind, um sie einfach zu sichern, und beginnen von vorne, wenn Sie feststellen, dass Sie das Caching-Gerät besser ersetzen sollten. So können Sie es tun. Diese Lösung basiert auf VM-Versuchen.
Nehmen wir an, wir sprechen über das Gerät /dev/bcache0
, das neue Cache-Gerät ist /dev/sdf1
und das Trägergerät ist /dev/md1
. Alle Befehle werden von root ausgeführt.
- Stellen Sie sicher, dass nichts dieses bcache0-Gerät verwendet.
- In beliebiger Reihenfolge ausführen
- Entfernen Sie das Cache-Gerät, so wie Martin von Wittich es geschrieben hat, indem Sie setUUID in
/sys/block/bcache0/bcache/detach
zurückgeben . Wenn Sie das Caching-Gerät neu partitionieren möchten, müssen Sie neu starten, da bcache die Partitionen immer noch sperrt, es sei denn, Sie deregistrieren es. - formatieren Sie ein neues Cache-Gerät mit
make-bcache -C /dev/sdf1
und notieren Sie sich die setUUID dieses Geräts.
- Entfernen Sie das Cache-Gerät, so wie Martin von Wittich es geschrieben hat, indem Sie setUUID in
-
Registrieren Sie unser Sicherungsgerät mit dem neuen Cache-Set:
echo [setUUID of new cache device] >/sys/block/bcache0/bcache/attach
Kein Neustart erforderlich.
Einzeiler:
echo $(ls -d /sys/fs/bcache/*-*-* | cut -f5 -d/) > /sys/block/bcache0/bcache/detach
Warten Sie dann, bis der Cache gelöscht wird:
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