LVM이 있고 bcache를 사용하여 LV 중 하나를 캐시하고 싶습니다. (네, lvmcache를 사용할 수 있다는 것은 알지만 부팅에 문제가 있어서 사용을 포기했습니다.)
먼저, 나는조각LV를 bcache 백업 장치로 변환합니다(이것은 작동하는 것 같습니다!):
blocks to-bcache /dev/my_vg/my_lv
SSD에 캐시 장치를 만들었습니다.
make-bcache --block 4k --bucket 2M -C /dev/sdc4
그런 다음 캐시를 지원 장치에 연결하려고 합니다.
bcache-super-show /dev/sdc4 | grep cset.uuid
echo 'above_uuid' > /sys/block/bcache0/bcache/attach
그런 다음 컴퓨터를 추가한 후 다시 시작했는데 /dev/bcache0
캐시 /etc/fstab
가 실행되고 있지 않다는 것을 깨달았습니다.
# cat /sys/block/bcache0/bcache/state
no cache
# bcache-super-show /dev/my_vg/my_lv | grep cache_state
dev.data.cache_state 0 [detached]
내가 뭐 놓친 거 없니? 캐싱을 활성화하려면 다른 명령을 사용해야 합니까?
캐시 장치가 내 캐시 장치를 좋아하지 않고 백업 장치에 연결하는 것을 허용하지 않는 이유는 무엇입니까? --block
및 에 잘못된 값을 사용 했나요 --bucket
?
답변1
나는 슈퍼블록을 다시 생성하여 이 문제를 해결했습니다 /dev/sdc4
. 잘못된 것 같습니다 --block 4k --bucket 2M
. 그래서 캐시 장치가 연결되지 않은 것입니다.
나는 슈퍼블록을 지우고 다음을 실행했습니다.
make-bcache -C /dev/sdc4
이제 내가 이렇게 하면:
echo 'uuid' > /sys/block/bcache0/bcache/attach
효율적인!
답변2
나는 같은 문제를 가지고있다:
make-bcache --block 4k --bucket 2M -C /dev/nvme0n1p1
쓰기 오류 발생: 인수가 잘못되었습니다.
특히 문제의 원인은 --block 4k였습니다.
make-bcache --bucket 2M -C /dev/nvme0n1p1
좋은 결과.
답변3
먼저 몇 가지 정리를 시도해 보세요.
echo $cset_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
echo $backing_uuid | sudo tee /sys/fs/bcache/pendings_cleanup
UUID를 얻는 데 사용됩니다 bcache-super-show
.
그런 다음 다시 등록해 보세요.
echo $cset_uuid | sudo tee /sys/fs/bcache/register
echo $backing_uuid | sudo tee /sys/fs/bcache/register
캐시 장치 등록이 성공하면 캐시 uuid가 /dev/fs/bcache에 있어야 합니다.
지원되는 장치에 가 있는 경우 cache_state
지원 invalid
데이터에는 가 적용됩니다 fsck
.
bcache-super-show
대체 상태가 0 으로 만 dev.data.cache_state
구성된 경우 bcache 장치는 유효하지 않은 상태이므로 다시 생성해야 합니다. [clean
cset.uuid
원천]
그러나 깨끗하다면 캐시된 장치 없이 지원 장치를 강제로 시작해 볼 수 있습니다.
echo 1 | sudo tee /sys/class/block/$dev/bcache/running