私はbcacheを試していますが、SSDがないので、利用可能なメモリを代わりに使用したいと思います。 RAMディスクが/proc/devices
ブロックデバイスとしてリストされているので、これはうまくいくと思いましたが、以下の簡単なテストでは機能させることはできません。
これは、最新の4.5カーネルがインストールされているUbuntu 15.10にあり、基本/dev/ram
デバイスをSSD交換として使用しています。
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
エラーや出力はありませんmake-bcache
。この時点では、新しいbcacheデバイスが下のパスにUUIDまたは名前で一覧表示されることを期待していましたが、何もありません。
ls -al /sys/fs/bcache/
ls -al /sys/block/bcache*
これが出力ですcache-super-show
キャッシュ用
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
と原産地
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
また、両方にループデバイスを使用してみましたが、結果が悪かった。次のコマンドを実行すると、kernel BUG
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/
bcache用のキャッシュデバイスとしてRAMディスクを正常に使用した人はいますか?失敗した場所を示すどの種類の標準出力/エラーもありません。これが私の部分の間違った設定かバグかはわかりません。
ありがとう
答え1
一部のデバイスを使用するには登録が必要です。
キャッシュデバイスを作成した後
# make-bcache -B /dev/loop2 -C /dev/ram9
どちらも登録する必要があります(少なくともRAMディスク、ループデバイス、ハードドライブはほとんど自動的に登録されているようです)。
# echo /dev/ram9 >/sys/fs/bcache/register
その後、/sys/fs/bcacheのuuidエントリが表示され、デバイスは次のように自動的に接続する必要があります。
# cat /sys/block/bcache0/bcache/state
clean
-bcacheキャッシュとサポートデバイスを別々に使用する場合
# make-bcache -B /dev/loop2
# make-bcache -C /dev/ram9
そうではありません。ラムディスクを登録したのにこう出てきます。
# cat /sys/block/bcache0/bcache/state
no-cache
/sys/fs/bcache のエントリには以下が表示されます。
# ls /sys/fs/bcache
f876ea9b-af2c-4b01-84ba-43a87d60501c register register_quiet
それからそれを追加する必要があります
# echo f876ea9b-af2c-4b01-84ba-43a87d60501c >/sys/block/bcache0/bcache/attach
# cat /sys/block/bcache0/bcache/state
clean
難しい問題:bcacheに接続すると、次のようにループデバイスを削除できません。
# losetup -d /dev/loop2
終了コードが0であっても自動的に失敗します(成功!)
まず、すべてを元に戻す必要があります。
# echo 1 >/sys/block/bcache0/bcache/stop
# echo 1 >/sys/fs/bcache/f876ea9b-af2c-4b01-84ba-43a87d60501c/unregister