bcache는 예상대로 ramdisk를 캐시 장치로 사용할 수 없습니다.

bcache는 예상대로 ramdisk를 캐시 장치로 사용할 수 없습니다.

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 BUGdmesg에 불쾌한 덤프가 생성됩니다.

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용 캐싱 장치로 램디스크를 성공적으로 사용한 사람이 있습니까? 실패한 위치를 나타내는 어떤 종류의 표준 출력/오류도 없습니다. 이것이 내 부분의 잘못된 구성인지 아니면 버그인지 확실하지 않습니다.

고마워요 플로

답변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

-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

관련 정보