우분투에서 Raspberry Pi 4를 사용하여 BCache 테스트

우분투에서 Raspberry Pi 4를 사용하여 BCache 테스트

우분투를 사용하여 라즈베리 파이 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를 사용합니다.

관련 정보