
Ich habe Bcache ausprobiert, aber ich habe keine SSD und wollte stattdessen freien Speicher verwenden. Da Ramdisk /proc/devices
als Blockgerät aufgeführt ist, ging ich davon aus, dass dies problemlos funktionieren würde, aber mit dem folgenden einfachen Test bekomme ich es nicht zum Laufen.
Dies ist auf Ubuntu 15.10 mit dem neuesten installierten 4.5-Kernel und ich verwende die Standardgeräte /dev/ram
als SSD-Ersatz.
losetup -f
dd if=/dev/zero of=/tmp/bcache_origin bs=1M count=200
losetup /dev/loop2 /tmp/bcache_origin
make-bcache -B /dev/loop2 -C /dev/ram9
Es wurde kein Fehler oder keine Ausgabe ausgegeben make-bcache
. An diesem Punkt erwarte ich, dass das neue Bcache-Gerät in den folgenden Pfaden entweder nach UUID oder nach Name aufgelistet wird, aber da ist nichts.
ls -al /sys/fs/bcache/
ls -al /sys/block/bcache*
Hier sind die Ergebnisse voncache-super-show
für Cache
bcache-super-show /dev/ram9
sb.magic ok
sb.first_sector 8 [match]
sb.csum 53EDD9C169F73E1B [match]
sb.version 0 [cache device]
dev.label (empty)
dev.uuid 2189aa3b-67e7-4296-bb25-6b5ba886befa
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 130048
dev.cache.total_sectors 131072
dev.cache.ordered no
dev.cache.discard no
dev.cache.pos 0
dev.cache.replacement 0 [lru]
cset.uuid 0a6b3824-72c1-489e-9d96-d976cb49e8a9
und Herkunft
bcache-super-show /dev/loop2
sb.magic ok
sb.first_sector 8 [match]
sb.csum ECBC84E42E6F52B9 [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid aff690a4-7ee1-4b62-85cc-ad41c775d7d8
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.data.first_sector 16
dev.data.cache_mode 0 [writethrough]
dev.data.cache_state 0 [detached]
cset.uuid 0a6b3824-72c1-489e-9d96-d976cb49e8a9
Ich habe auch versucht, für beide Loop-Geräte zu verwenden, aber das hat noch mehr fehlgeschlagen. Das Ausführen des folgenden Befehls führt zu einem hässlichen kernel BUG
Dump in dmesg.
losetup -f
dd if=/dev/zero of=/tmp/bcache_data bs=1M count=200
dd if=/dev/zero of=/tmp/bcache_cache bs=1M count=200
losetup /dev/loop5 /tmp/bcache_data
losetup /dev/loop6 /tmp/bcache_cache
make-bcache -B /dev/loop5 -C /dev/loop6
ll /sys/fs/bcache/
Hat es jemand geschafft, eine Ramdisk als Caching-Gerät mit Bcache zum Laufen zu bringen? Ohne eine Art Standardausgabe/Fehler, die anzeigt, wo der Fehler liegt, bin ich mir nicht sicher, ob das an meiner Fehlkonfiguration liegt oder ein Fehler vorliegt.
Danke, fLo
Antwort1
Einige Geräte müssen registriert werden, um verwendet werden zu können
nachdem die Cache-Geräte mit
# make-bcache -B /dev/loop2 -C /dev/ram9
Sie müssen beide registrieren (zumindest die Ramdisk, Loop-Geräte und Festplatten scheinen sich die meiste Zeit automatisch zu registrieren) mit
# echo /dev/ram9 >/sys/fs/bcache/register
der UUID-Eintrag in /sys/fs/bcache sollte dann angezeigt werden und das Gerät sollte automatisch als sichtbar in
# cat /sys/block/bcache0/bcache/state
clean
wenn Sie den Cache und das Backing-Device separat mit make-bcache verwalten
# make-bcache -B /dev/loop2
# make-bcache -C /dev/ram9
das ist nicht der Fall und selbst nachdem Sie die Ram-Disk registrieren, wird es sagen
# cat /sys/block/bcache0/bcache/state
no-cache
obwohl der Eintrag in /sys/fs/bcache angezeigt wird:
# ls /sys/fs/bcache
f876ea9b-af2c-4b01-84ba-43a87d60501c register register_quiet
Sie müssen es dann mit
# echo f876ea9b-af2c-4b01-84ba-43a87d60501c >/sys/block/bcache0/bcache/attach
# cat /sys/block/bcache0/bcache/state
clean
knifflige Falle: Sobald das Loop-Gerät an einen Bcache angeschlossen ist, kann es nicht mehr entfernt werden mit
# losetup -d /dev/loop2
dies schlägt stillschweigend fehl, auch wenn der Exit-Code 0 (Erfolg!) ist.
Sie müssen zuerst alles rückgängig machen mit
# echo 1 >/sys/block/bcache0/bcache/stop
# echo 1 >/sys/fs/bcache/f876ea9b-af2c-4b01-84ba-43a87d60501c/unregister