
bcache를 사용해 보려고 했는데 SSD가 없어서 여유 메모리를 대신 사용하고 싶었습니다. 램디스크가 블록 장치로 나열되어 있으므로 /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를 사용하여 캐싱 장치로 작동하는 램디스크를 성공적으로 얻은 사람이 있습니까? 실패한 위치를 나타내는 어떤 종류의 stdout/err도 없이 이것이 구성 오류인지 버그인지 확실하지 않습니다.
고마워요 fLo
답변1
일부 장치를 사용하려면 등록이 필요합니다
캐시 장치를 만든 후
# make-bcache -B /dev/loop2 -C /dev/ram9
둘 다 등록해야 합니다(적어도 램디스크는 루프 장치와 하드디스크가 대부분 자동 등록되는 것 같습니다).
# echo /dev/ram9 >/sys/fs/bcache/register
그러면 /sys/fs/bcache의 uuid 항목이 표시되고 장치는 다음에서 볼 수 있도록 자동으로 연결되어야 합니다.
# cat /sys/block/bcache0/bcache/state
clean
캐시와 백업 장치를 별도로 make-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