우분투를 사용하여 라즈베리 파이 4에서 bache를 테스트하고 있습니다. 제가 우분투를 선택한 이유는 커널 모듈이 올바르게 로드되지 않았기 때문에 표준 Raspbian이 bcache와 관련된 몇 가지 문제를 발견했기 때문입니다. 몇 가지 문제 해결을 시도했지만 우분투로 옮겼더니 즉시 작동했습니다.
내 설정은 이렇습니다.
1 x 1TB HGST 5400RPM 2.5 laptop hard disk
1 x 256GB WD Green 2.5 SSD
Raspberry pi 4 4GB model with large heat-sink for cooling and 4A power.
USB 3.0 포트(모두 외부 전원 공급)를 사용하여 HDD와 SSD를 Raspberry Pi에 연결하고 우분투로 부팅했습니다. 먼저 저전압 오류를 테스트한 결과 모든 것이 정상임을 확인했습니다.
SSD -> /dev/sda
HDD -> /dev/sdb
그런 다음 두 드라이브 모두에 1개의 파티션을 만들고 아래와 같이 bcache를 만들었습니다.
make-bcache -B /dev/sdb1
make-bcache -C /dev/sda1
그런 다음 /datastore에 /dev/bcache0을 마운트했습니다.
그런 다음 캐시 장치를 다음과 같이 연결합니다.
echo MYUUID > /sys/block/bcache0/bcache/attach
그런 다음 쓰기 저장 캐싱을 활성화합니다.
echo writeback > /sys/block/bcache0/bcache/cache_mode
그런 다음 vsftpd 서버를 설치하고 루트 ftp 디렉토리를 bcache0 마운트 지점으로 사용하고 테스트를 시작했습니다. 처음 몇 가지 테스트에서는 113MBps로 파일을 업로드할 수 있었고 캐시가 연결된 경우에도 대부분의 파일이 지원 장치에 직접 기록되는 것을 확인했습니다.
bcache-status 스크립트를 사용하여 상태를 테스트할 때https://gist.github.com/damoxc/6267899대부분의 쓰기 작업이 캐시를 놓치고 HDD에서 직접 113MBps의 속도로 백업 장치에 직접 쓰는 것을 확인했습니다. -O?
그런 다음 미세 조정을 시작했습니다. 이 섹션의 성능 문제 해결 섹션에서 제안한 대로https://www.kernel.org/doc/Documentation/bcache.txt문서
먼저 이 명령을 실행하여 equential_cutoff를 0으로 설정했습니다.
echo 0 > /sys/block/bcache0/bcache/sequential_cutoff
그 직후 SSD 장치 캐시 적중률이 증가한 것을 확인할 수 있었습니다. 동시에 나는 iostat를 지속적으로 실행합니다. iostat에서 SSD에 직접 액세스하고 있음을 알 수 있습니다. 그러나 몇 분 후에 내 filezilla 클라이언트가 중단되고 FTP 업로드 스트림을 다시 시작할 수 없습니다. bcache0 마운트에 액세스하려고 하면 매우 느립니다. 캐시 상태가 "더러움"으로 표시됩니다.
그런 다음 파이를 다시 시작하고 장치를 다시 연결했습니다. 그리고 다음 설정을 지정하세요
echo 0 > /sys/fs/bcache/MYUUID/congested_read_threshold_us
echo 0 > /sys/fs/bcache/MYUUID/congested_write_threshold_us
~에 따르면https://www.kernel.org/doc/Documentation/bcache.txt이 문서는 BCache 추적 지원 장치 지연을 방지하기 위한 것입니다. 하지만 이 옵션 이후에도. 내 FTP 업로드 스트림이 계속 충돌합니다. 그런 다음 모든 설정을 기본값으로 복원했습니다. 여전히 많은 파일이 업로드되어 충돌이 발생합니다.
테스트 중에 pi CPU가 완전히 활용되지 않은 것으로 나타났습니다.
pi 4 1Gbps 이더넷을 사용하여 얻을 수 있는 최대 처리량은 930Mbps로 꽤 좋습니다. NTFS 크리스탈 디스크를 사용하여 테스트했을 때 HGST 드라이브는 최대 90MBps의 쓰기 속도를 달성했습니다. 파일 시스템이 ext4이기 때문에 파이에서 113MBps를 얻는 것 같습니다.
80MBps 이상의 FTP 업로드 속도를 얻을 수 있다면 괜찮을 것입니다. 내 질문은
bcache와 함께 사용할 때 FTP 스트림이 계속 충돌하는 이유와 시간이 지남에 따라 bcache 설치가 느려지는 이유.
equential_cutoff를 0으로 설정했는데도 캐시 사용량이 매우 낮은 이유
Raspberry PI 4로 bcache를 테스트한 사람이 있나요? 그렇다면 캐싱을 위해 SSD를 어떻게 적절하게 사용할 수 있습니까?
마지막으로 누군가 쓰기 저장 모드에서 bcache가 실제로 어떻게 작동하는지 자세히 설명해 주실 수 있나요? 저는 아카이브 데이터에만 사용하고 SSD 유형 설정에서는 핫 데이터에 액세스할 필요가 없습니다.
답변1
아래 지침에 따라 문제를 해결했습니다.https://www.raspberrypi.org/forums/viewtopic.php?t=245931이 주제.
이는 외부 SSD가 간헐적으로 연결되는 Raspberry PI 4 USB 3.0 UASP 드라이버 문제 때문이었습니다. UAS 인터페이스를 무시하기 위해 cmdline.txt에 줄을 추가한 후 SSD와 bcache가 모두 완벽하게 작동합니다.
기본적으로 외부 USB 3.0 SSD/인클로저 VID 및 PID를 찾아야 합니다.
lsusb
그런 다음 cmdline.txt를 편집하고 파일 끝에 다음 줄을 추가해야 합니다. aaaa는 VID와 같고 bbbb는 PID와 같습니다.
usb-storage.quirks=aaaa:bbbb:u
그런 다음 라즈베리 파이를 다시 시작하십시오. 재부팅 후 SSD는 안정적이며 kern.log에서 UAS 인터페이스에 대한 오류가 표시되지 않습니다.
그 외에도 bcache 설정은 Raspberry pi 4에서 완벽하게 작동합니다. 테스트를 위해 Ubuntu를 사용합니다.