로컬 SSD를 캐싱 장치로 사용하여 Google Cloud 인스턴스에서 bcache를 설정하려고 하는데 프로세스의 연결 단계에서 모든 것이 실패합니다. 테스트 목적으로 빈 디스크(SSD 2개와 로컬 SSD 4개)가 있는 새 인스턴스를 만들었습니다. 목표는 일반 SSD를 백업 장치로 사용하고 4개의 로컬 SSD로 RAID를 구성하고 해당 장치를 캐시로 사용하는 것입니다.
아래 출력에서 수행된 단계를 볼 수 있습니다. 결과는 raid를 사용할 때와 동일합니다. 문제가 raid와 관련이 없고 디스크 자체와 관련이 있다고 믿기 때문에 단순화를 위해 여기서는 로컬 SSD를 사용했습니다. 로컬 SSD를 캐시 장치로 사용할 때 캐시 장치를 지원 장치에 연결할 수 없습니다. 일반 SSD를 캐시 장치로 사용하면 모든 것이 예상대로 작동하는 것을 볼 수 있습니다.
여러분을 위한 질문: 로컬 SSD에 알려진 제한 사항이 있습니까, 아니면 제가 뭔가 잘못하고 있습니까(또는 몇 가지 추가 단계가 필요할 수 있습니까)?
참고로 사용중인 기기는 다음과 같습니다.
/dev/sdb => Backing Device
/dev/sdc => SSD Caching Device
/dev/nvme0n1 => Local SSD Single Caching Device
# apt update && apt install mdadm bcache-tools -y
# make-bcache -B /dev/sdb
UUID: cb10650f-cf60-4a96-81eb-7149ae650f94
Set UUID: dc0a7f3a-de46-4b00-84f4-4aa40c203745
version: 1
block_size: 1
data_offset: 16
# mkfs.ext4 -L cached /dev/bcache0
# make-bcache -C /dev/nvme0n1
UUID: c5a33c1e-e1ef-4d3d-a5ac-5d0adc340f43
Set UUID: 228dcba5-6085-47a1-b2e9-eff68dd6ac14
version: 0
nbuckets: 768000
block_size: 8
bucket_size: 1024
nr_in_set: 1
nr_this_dev: 0
first_bucket: 1
# bcache-super-show /dev/nvme0n1
sb.magic ok
sb.first_sector 8 [match]
sb.csum 674DD52F06C4562B [match]
sb.version 3 [cache device]
dev.label (empty)
dev.uuid c5a33c1e-e1ef-4d3d-a5ac-5d0adc340f43
dev.sectors_per_block 8
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 786430976
dev.cache.total_sectors 786432000
dev.cache.ordered yes
dev.cache.discard no
dev.cache.pos 0
dev.cache.replacement 0 [lru]
cset.uuid 228dcba5-6085-47a1-b2e9-eff68dd6ac14
# echo 228dcba5-6085-47a1-b2e9-eff68dd6ac14 > /sys/block/bcache0/bcache/attach
-bash: echo: write error: Invalid argument
# make-bcache -C /dev/sdc
UUID: 55c95063-9aa7-4d2c-8c8c-d4d34d35a7ad
Set UUID: 2de3ccef-a7eb-4620-8b6d-265d0a06da17
version: 0
nbuckets: 204800
block_size: 1
bucket_size: 1024
nr_in_set: 1
nr_this_dev: 0
first_bucket: 1
# bcache-super-show /dev/sdc
sb.magic ok
sb.first_sector 8 [match]
sb.csum 11E99ECE7A83EABE [match]
sb.version 3 [cache device]
dev.label (empty)
dev.uuid 55c95063-9aa7-4d2c-8c8c-d4d34d35a7ad
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 209714176
dev.cache.total_sectors 209715200
dev.cache.ordered yes
dev.cache.discard no
dev.cache.pos 0
dev.cache.replacement 0 [lru]
cset.uuid 2de3ccef-a7eb-4620-8b6d-265d0a06da17
# echo 2de3ccef-a7eb-4620-8b6d-265d0a06da17 > /sys/block/bcache0/bcache/attach
# bcache-super-show /dev/sdc
sb.magic ok
sb.first_sector 8 [match]
sb.csum 11E99ECE7A83EABE [match]
sb.version 3 [cache device]
dev.label (empty)
dev.uuid 55c95063-9aa7-4d2c-8c8c-d4d34d35a7ad
dev.sectors_per_block 1
dev.sectors_per_bucket 1024
dev.cache.first_sector 1024
dev.cache.cache_sectors 209714176
dev.cache.total_sectors 209715200
dev.cache.ordered yes
dev.cache.discard no
dev.cache.pos 0
dev.cache.replacement 0 [lru]
cset.uuid 2de3ccef-a7eb-4620-8b6d-265d0a06da17
# bcache-super-show /dev/sdb
sb.magic ok
sb.first_sector 8 [match]
sb.csum 2E55F82F4131C19B [match]
sb.version 1 [backing device]
dev.label (empty)
dev.uuid cb10650f-cf60-4a96-81eb-7149ae650f94
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 1 [clean]
cset.uuid 2de3ccef-a7eb-4620-8b6d-265d0a06da17
답변1
자세히 검토한 결과, 문제는 서로 다른 장치의 블록 크기에 있다는 것을 깨달았습니다. make-bcache 명령을 조정하면 모든 것이 예상대로 작동합니다.
make-bcache --block 4k -B /dev/sdb
make-bcache --block 4k -C /dev/nvme0n1