Ich habe ein LVM und wollte bcache verwenden, um eines seiner LVs zwischenzuspeichern. (Ja, ich weiß, dass ich lvmcache verwenden könnte, aber ich hatte Probleme beim Booten und habe es aufgegeben, es zu verwenden.)
Zuerst benutzte ichBlöckeum das LV in ein Bcache-Backing-Device umzuwandeln (das schien tatsächlich zu funktionieren!):
blocks to-bcache /dev/my_vg/my_lv
Ich habe auf meiner SSD ein Caching-Gerät erstellt:
make-bcache --block 4k --bucket 2M -C /dev/sdc4
Anschließend habe ich versucht, den Cache an das Sicherungsgerät anzuhängen:
bcache-super-show /dev/sdc4 | grep cset.uuid
echo 'above_uuid' > /sys/block/bcache0/bcache/attach
Anschließend habe ich meinen Computer neu gestartet (nachdem ich /dev/bcache0
ihn hinzugefügt hatte /etc/fstab
) und festgestellt, dass der Cache nicht ausgeführt wurde.
# cat /sys/block/bcache0/bcache/state
no cache
# bcache-super-show /dev/my_vg/my_lv | grep cache_state
dev.data.cache_state 0 [detached]
Übersehe ich etwas? Gibt es einen anderen Befehl, den ich verwenden muss, um das Caching zu aktivieren?
Warum mag bcache mein Cache-Gerät nicht und lässt mich es nicht an mein Sicherungsgerät anschließen? Habe ich die falschen Werte für --block
und verwendet --bucket
?
Antwort1
Ich konnte das Problem beheben, indem ich den Superblock neu erstellte /dev/sdc4
. Es sieht so aus, als wäre der --block 4k --bucket 2M
falsch gewesen und deshalb konnte das Cache-Gerät nicht angeschlossen werden.
Ich habe den Superblock gelöscht und dann Folgendes ausgeführt:
make-bcache -C /dev/sdc4
Als ich das getan habe:
echo 'uuid' > /sys/block/bcache0/bcache/attach
es funktionierte!
Antwort2
Ich hatte das gleiche Problem:
make-bcache --block 4k --bucket 2M -C /dev/nvme0n1p1
hat den Schreibfehler verursacht: Ungültiges Argument.
Konkret war es der --block 4k, der das Problem verursachte.
make-bcache --bucket 2M -C /dev/nvme0n1p1
Hat perfekt funktioniert.
Antwort3
Versuchen Sie zunächst, etwas aufzuräumen:
echo $cset_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
echo $backing_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
Verwenden Sie es bcache-super-show
, um die UUIDs abzurufen.
Versuchen Sie dann erneut, sich zu registrieren:
echo $cset_uuid | sudo tee /sys/fs/bcache/register
echo $backing_uuid | sudo tee /sys/fs/bcache/register
Die Cache-UUID sollte in /dev/fs/bcache vorhanden sein, wenn das Cache-Gerät erfolgreich registriert wurde.
Wenn Ihr Sicherungsgerät über einen verfügt cache_state
, invalid
unterliegen Ihre Sicherungsdaten dem Zugriff von fsck
.
Wenn bcache-super-show
bedeutet, dass der Backing- dev.data.cache_state
Status ist clean
und cset.uuid
nur aus Nullen besteht, befindet sich das Bcache-Gerät im ungültigen Zustand und muss neu erstellt werden. [Quelle]
Wenn es jedoch sauber ist, können Sie versuchen, einen Zwangsstart des Sicherungsgeräts ohne Cache-Gerät durchzuführen:
echo 1 | sudo tee /sys/class/block/$dev/bcache/running