Raspberry Pi CM4의 하드웨어 SAS RAID

Advertisements

몇 달 전 Raspberry Pi에 Enterprise SAS RAID라는 제목의 비디오를 게시했지만 실제로는 SAS 드라이브를 보여주지 않았습니다. 그리고 얼마 지나지 않아 Raspberry Pi에 또 다른 비디오 The Fastest SATA RAID를 게시했습니다.

이제 Raspberry Pi의 하드웨어 RAID 컨트롤러에서 실행되는 실제 엔터프라이즈 SAS 드라이브 가 있습니다. , 그리고 다른 비디오에서 설정 한 ‘가장 빠른’SATA RAID 어레이보다 빠릅니다.

Josh라는 Broadcom 엔지니어는 이전 비디오를보고 내가 테스트중인 고대 LSI 카드가 Pi의 ARM 프로세서에서 작동하지 않을 것임을 깨달았 기 때문에 두 가지 키트를 내 방식대로 보낼 수있었습니다.

  • Broadcom MegaRAID 9460-16i Tri-Mode 스토리지 컨트롤러
  • SFF-TA-1005 표준

여러 드라이버 개정 및 카드에서 UART 디버깅을 포함하는 길고 힘든 여정을 거쳐 Pi에서 여러 하드웨어 RAID 어레이를 가져올 수있었습니다.

이 블로그 게시물은 내 YouTube 채널의 비디오 형식으로도 볼 수 있습니다.

SAS RAID

하지만 SAS RAID 란 무엇이며 하드웨어 RAID가 내 SATA 비디오에서 사용한 소프트웨어 RAID보다 더 나은 이유는 무엇입니까?

오늘날 NAS 또는 서버에서 사용할 수있는 것은 일반적으로

  • SATA
  • SAS
  • PCI Express NVMe

세 가지 유형 모두 솔리드 스테이트 스토리지 ( 높은 IOPS 및 빠른 전송 속도를위한 SSD).

SATA 및 SAS 드라이브는 회전식 스토리지를 사용할 수도 있습니다.

RAID (Redundant Array of Independent Disks)는 두 개 이상의 드라이브를 운영 체제에서 볼 수있는 볼륨에 모으는 방법입니다. 드라이브가 하나 뿐인 경우.

RAID는 다음과 같은 작업을 지원할 수 있습니다.

  • 이중화 : 하드 드라이브 (또는 RAID 유형에 따라 여러 드라이브)가 실패 할 수 있으며 이겼습니다. 데이터에 즉시 액세스 할 수 없습니다.
  • 성능 : 여러 드라이브를 ‘스트라이핑’하여 읽기 또는 쓰기를 늘릴 수 있습니다. 처리량 (RAID 유형에 따라 다름)

추가 캐싱 구성 ( 별도의 RAM 또는 더 빠른 전용 ‘캐시’드라이브)는 메인 드라이브 자체에서 가능한 것보다 훨씬 더 빠르게 작업을 수행 할 수 있으며, 하드웨어 RAID는 전원이 꺼지면 쓰기 데이터를 캐시하는 별도의 플래시 스토리지를 통해 더 나은 데이터 보호를 제공 할 수 있습니다.

: 하나의 하드 드라이브에 모든 데이터를 저장할 수 있고 이미 좋은 백업 시스템이 있고 최대 가용성이 필요하지 않은 경우 하지만 RAID가 필요하지 않을 수도 있습니다.

Raspberry Pi SATA RAID NAS 비디오에서 RAID 자체에 대한 세부 정보를 제공하므로 자세히 알아 보려면 확인하세요.

이제 SATA, SAS 및 NVMe로 돌아갑니다.

이 세 가지 모두 인터페이스를 설명합니다. 저장 장치에 사용됩니다. 9460-16i와 같은 최신 스토리지 컨트롤러의 가장 좋은 점은 하나의 단일 HBA (Host-Bus Adapter)를 통해 3 개 모두에 연결할 수 있다는 것입니다. RAM이 많은 빠른 PC에서 수천 달러를 지불하면 ZFS 또는 BTRFS와 같은 소프트웨어 RAID 솔루션은 많은 훌륭한 기능을 제공하며 매우 안정적입니다.

그러나 다음과 같은 시스템에서는 내 Raspberry Pi, 소프트웨어 기반 RAID는 Pi의 CPU와 RAM의 많은 부분을 차지하며 성능이 좋지 않습니다. (/ u / rigg77의 ZFS 실험에 대한이 훌륭한 게시물을 참조하십시오).

소프트웨어 mdadm 기반 RAID로 얻을 수있는 가장 빠른 디스크 속도는 약 325MB / 초였습니다. RAID 10으로. 패리티 계산으로 인해 최대 속도가 더 낮아질 수 있습니다!

하드웨어 RAID를 사용하여 400MB 이상을 확보 할 수있었습니다. /비서. 이는 20 %의 성능 향상이며 Pi의 CPU가 다른 작업을 수행 할 수 있도록 남겨 둡니다.

나중에 성능에 대해 더 자세히 살펴 보 겠지만 먼저 문제를 해결해야합니다.

파이에서 엔터프라이즈 RAID를 사용하는 이유는 무엇입니까?

사람들은 항상이 모든 카드를 테스트하는 이유를 묻습니다.이 경우에는 $ 600 사용 된 스토리지 카드 -저전력 Raspberry Pis. 제 사무실에도 10 세대 인텔 데스크탑이 있는데, 사용하지 않는 이유는 무엇입니까?

글쎄요, 우선 재미 있고, 도전을 즐깁니다. 실패 이후 많은 것을 배우는 것은 쉬운 성공보다 더 많은 것을 가르쳐줍니다.

하지만 카드에는 다른 두 가지 이유가 있습니다.

첫 번째 : 작은 저장소 실험실에 적합합니다.

내 책상 한 구석에 8 개의 드라이브, 엔터프라이즈 RAID 컨트롤러, Pi 및 기타 테스트 용 장비를 넣을 수 있습니다. 데스크탑으로 동일한 작업을 수행 할 때 공간이 빨리 부족합니다. 테스트를 위해 다른 “데스크탑 컴퓨터”책상으로 이동해야하는 부담은 새로운 아이디어를 시도하기 위해 설정을 변경할 가능성이 적다는 것을 의미합니다.

두 번째 : 하드웨어 RAID를 사용하면 Pi의 이미 느린 프로세서의 IO 부담이 발생합니다.

고속 전용 RAID 칩과 스토리지 용 추가 4GB DDR4 캐시를 사용하면 Pi에 안정적이고 빠른 속도를 제공합니다. 디스크 IO.

초당 기가 바이트를 펌핑 할 필요가없는 경우 Pi와 MegaRAID가 함께 더 에너지 효율적입니다 더 빠른 CPU에서 소프트웨어 RAID를 실행하는 것보다. 이 설정은 10 ~ 20W의 전력을 사용했습니다.

RAID 카드 나 스토리지가 연결되지 않은 상태에서 저절로 실행되는 인텔 i3 데스크탑은 25W에서 유휴 상태이지만 일반적으로 전력 소비의 두 배인 40W 정도입니다.

Pi 기반 RAID 솔루션이 Amazon의 데이터 센터를 차지하지는 않습니다. Pi는이를 위해 제작되지 않았습니다. 하지만 Compute Module 4가 출시 될 때까지 불가능했던 강력한 스토리지 설정입니다.

Broadcom MegaRAID 9460-16i

Josh가 보낸 MegaRAID 카드는 PCIe Gen 3.1이며 PCIe 대역폭의 x8 레인을 지원합니다.

불행히도 파이 Gen 2 속도에서 x1 레인 만 처리 할 수 ​​있습니다. 즉, 스토리지 처리량의 최대 6GB / 초 이상을 얻을 수 없으며 1/12에 불과합니다. 하지만 Pi는이 카드에 내가 이전에 테스트 한 SATA 카드가 사용하지 않는 4 가지 멋진 트릭을 사용할 수 있습니다.

  1. SAS RAID-on-Chip , 모든 RAID 스토리지 작업을 처리하는 컴퓨터입니다. Pi의 느린 CPU는 RAID 작업을 관리하지 않아도됩니다.
  2. 4GB DDR4 SDRAM 캐시 , 느린 드라이브에서 IO 속도 향상 및 Pi의 소중한 1/2 절약 / 4 / 8GB RAM.
  3. 선택 사항 CacheVault 플래시 백업 : 슈퍼 커패시터를 연결하고 정전이 발생하면 카드의 모든 메모리를 덤프합니다. 내장 플래시 스토리지 칩에 캐시 쓰기
  4. 트라이 모드 포트 를 사용하면 모든 종류의 드라이브를 카드 (SATA, SAS 또는 NVMe)에 연결할 수 있습니다. , 그리고 그것과 함께 작동합니다.

또한 RAID-on-Chip 내부의 모든 작업을 수행하므로 여러 NVMe 드라이브를 연결하더라도 Pi의 열악한 CPU에 병목 현상이 발생하지 않습니다 (IO 대역폭이 심각하게 제한됨). 더 빠른 프로세서는 여러 NVMe 드라이브를 사용할 때 대역폭 문제가 발생할 수 있습니다.

오, 최대 24 개의 NVMe 드라이브를 연결할 수 있거나 무려 240 SAS 또는 SATA 드라이브를 Pi에 연결 하시겠습니까?

저는 240 페타 바이트의 드라이브를보고 싶습니다. Pi NAS …

카드 작동

Josh는 드라이버, 유용한 컴파일 제안 및 카드와 함께 일부 유틸리티를 보냈습니다.

처음에는 드라이버를 컴파일하는 데 문제가 있었는데 즉시 몇 가지 문제 :

  • raspberrypi-kernel-headers 패키지가 64 비트 Pi OS 베타에는 존재하지 않으므로 (이후 생성됨) 64 비트 커널 용 헤더를 직접 컴파일해야했습니다.
  • Raspberry Pi OS는 MSI-X를 지원하지 않았지만 운 좋게도 Phil Elwell은 Pi OS에 커널을 조정하여 (최소한 기본 수준에서) 다시 활성화했습니다. PCIe를 통해 작동하는 Google Coral TPU에 대한 포럼 주제에 대해 토론하십시오.

이 두 가지 문제가 해결 된 후 Pi OS 커널을 다시 크로스 컴파일하고 다른 문제로 팬합니다. 드라이버는 IRQ 폴링 기능의 경우 CONFIG_IRQ_POLL=y 이지만 기본적으로 설정되지 않았습니다. 따라서 해당 옵션이 작동하도록하려면 다시 컴파일 해야했습니다.

마지막으로, 내가 명확하다고 생각하고 크로스 컴파일 된 커널의 커널 헤더와 소스가 커널 자체와 같이 ARM64 용으로 빌드되지 않았 음을 발견했으며 크로스 컴파일 환경을 계속 디버깅하는 대신 총알을 깨 물었습니다. Raspberry Pi 자체에서 1 시간 전체 컴파일을 수행했습니다.

1 시간 후 드라이버가 처음으로 오류없이 컴파일되었습니다.

흥분하게 달렸어요 sudo insmod m egaraid_sas.ko , 그리고 … 멈 췄고 5 분 후에 dmesg :

   megaraid_sas 0000 : 01 : 00.0 : SCSI 호스트 0에 대한 초기화 cmd 반환 상태 FAILED [  373.054122] megaraid_sas 0000 : 01 : 00.0 : megasas_init_fw 6747에서 실패했습니다 

상황이 심각 해지고 , 다른 두 명의 Broadcom 엔지니어가 Josh와 저와 전화 회의에 참여했고, 카드에서 직렬 UART 출력을 분리하여 PCIe 메모리 주소 문제를 디버깅하도록했습니다!

드라이버는 32 비트 Pi OS에서 작동하지만 64 비트 베타에서는 작동하지 않습니다. 내 경험상 드라이버가 종종 64 비트 OS에서 더 잘 작동했기 때문에 이상했습니다.

며칠 후 Broadcom 드라이버 엔지니어가 문제를 해결 한 패치를 보냈습니다. writeq 기능은 Pi에서 잘 지원되지 않는 것 같습니다. Josh는 이에 대해 Pi 커널 문제 대기열에 버그 보고서를 제출했습니다. 64 비트의 writeq ()는 PCIe주기를 발행하지 않고 두 개의 writel () 작동으로 전환합니다. 드라이버가 마침내 작동했고 dmesg 출력!

설정 StorCLI가 포함 된 RAID

StorCLI는 MegaRAID 카드에서 RAID 볼륨을 관리하기위한 유틸리티이며 Broadcom은 웹 사이트에서 포괄적 인 StorCLI 참조를 제공합니다.

4- 드라이브 SAS RAID 5 어레이를 설정하는 데 사용한 명령은 다음과 같습니다.

  sudo ./storcli64 / c0 add vd r5 name=SASR5 drives=97 : 4-7 pdcache=default AWB ra direct Strip=256 
  1. r5 어레이 SASR5
  2. 어레이는 스토리지 엔클로저 ID 97
  3. 의 드라이브 4-7을 사용합니다

  4. 몇 가지 캐싱 옵션이 있습니다.
  5. 스트립 크기를 256KB로 설정했습니다 (HDD의 경우 일반적이며 SSD의 경우 64KB가 더 일반적 임).

두 개의 RAID 5 볼륨을 생성했습니다. : 하나는 Kingston SA400 SATA SSD 4 개, 다른 하나에는 HP ProLiant 10K SAS 드라이브 4 개가 있습니다.

사용했습니다 lsblk -S 를 사용하여 새 장치 sda sdb , 내 시스템에 표시되었습니다. 그런 다음 다음으로 파티션을 나누고 포맷했습니다.

  1. sudo fdisk / dev / sdX
  2. sudo mkfs.ext4 / dev / sdX

이 poi에서 nt, 333GB SSD 어레이와 836GB SAS 어레이가 있습니다. 마운트하고 읽고 쓸 수 있는지 확인했습니다.

부팅시 스토리지

또한 시스템 부팅시 스토리지 어레이를 사용할 수 있는지 확인하여 NFS를 통해 자동으로 공유 할 수 있도록하고 싶었습니다. 그래서 컴파일 된 드라이버 모듈을 커널에 설치했습니다.

  1. 모듈을 커널에 복사했습니다. 컴파일 된 커널의 드라이버 디렉토리 : sudo cp megaraid_sas.ko / lib / modules / $ (uname -r) / kernel / drivers /
  2. / etc / modules 파일 끝에 모듈 이름 ‘megaraid_sas’를 추가했습니다 : 에코 'megaraid_sas'| sudo tee -a / etc / modules
  3. 나는 sudo depmod 재부팅하고 부팅 후 모든 것이 완벽하게 나타납니다.

한 가지주의 할 점은 이와 같은 RAID 카드를 초기화하는 데 1 ~ 2 분 정도 걸릴 수 있다는 것입니다. 자체 초기화 프로세스가 있기 때문입니다. 따라서 스토리지 카드가 먼저 온라인 상태가 될 때까지 기다리려면 Pi의 부팅 시간이 조금 더 길어집니다.

전원 공급 장치에 대한 참고 사항 : HBA를 테스트 할 때 몇 가지 다른 전원 공급 장치를 사용했습니다. 저전력 12V 2A 전원 공급 장치를 사용하면 카드에 전원이 충분하지 않은 것 같고 끝없이 재부팅된다는 것을 알았습니다. 이 12V 5A 전원 공급 장치로 전환했는데 카드가 훌륭하게 실행되었습니다. (외부 전원이 공급되는 ‘GPU 라이저’를 사용하지 않았습니다. 경험이 엇갈린 경험이 있기 때문입니다.)

성능

이것이 완전히 온라인 상태에서 테스트되었습니다. fio .

1MB 랜덤 읽기의 경우 다음을 얻었습니다.

  • SSD 어레이의 399MiB / 초
  • SAS 어레이의 114MiB / 초

1MB 임의 쓰기의 경우 , 나는 :

  • SSD 어레이에서 300MiB / sec
  • SAS 드라이브에서 98MiB / 초

참고 : 1.000 MiB=1.024MB

이 결과는 다음 두 가지를 보여줍니다.

첫째, 저렴한 SSD도 여전히 더 빠릅니다. 회전하는 SAS 드라이브보다.

둘째, SSD 속도의 한계는 Pi의 PCIe 버스입니다. 3.35Gbps의 대역폭을 얻을 수 있으며 실제로는 ASUS 10G 네트워크 어댑터를 통해 펌핑 할 수있는 대역폭보다 낫습니다. 이는 최대 3.27 기가비트까지만 얻을 수 있습니다.

다른 많은 테스트를 수행 할 수 있지만 네트워크 스토리지에 대한 드라이브 성능을보고 싶었 기 때문에 Samba와 NFS를 설치하고 더 많은 벤치 마크를 실행했습니다.

Samba와 NFS 모두 읽기 속도가 거의 유선 속도에 가깝다는 사실에 놀랐습니다. 즉, Pi는 기가비트 인터페이스가 데이터를 펌핑 할 수있는만큼 빠르게 Mac에 데이터를 공급할 수있었습니다.

내 SATA RAID 비디오에서 기억한다면 NFS로 얻을 수있는 가장 빠른 속도는 106MB / 초였으며 Pi가 소프트웨어 RAID를 분류하는 동안 패킷이 대기 할 때 속도가 변동했습니다.

RAID를 처리하는 스토리지 컨트롤러에서 Pi는 10GB 이상 동안 지속적으로 117MB / 초 를 유지했습니다 .

PCIe 스위치 및 2.5 Gbps 네트워킹

2.5GbE 네트워킹은 어떻습니까? 실제로 두 개의 PCIe 스위치와 이미 Pi와 함께 성공적으로 사용한 몇 가지 2.5Gbps NIC가 있습니다. 그래서 스위치와 NIC 몇 개를 모두 사용해 보았지만 안타깝게도 NIC와 전력이 많이 소모되는 스토리지 컨트롤러 모두 스위치를 통해 충분한 전력을 얻을 수 없었습니다.

600W PC PSU를 꺼 냈지만 PS_ON 핀을 단락시켜 전원을 켜려고 할 때 실수로 튀겼습니다. 죄송합니다.

여기에서 PSU를 뽑는 모습을보세요 (다행히도 저 자신이 아닙니다).

불행히도 2.5Gbps 성능은 새 전원 공급 장치를 얻을 때까지 기다려야합니다.

결론

마지막으로 Raspberry Pi에서 실행되는 진정한 하드웨어 SAS RAID가 있어야합니다. 하지만 Josh는 실제로 32 비트 Pi OS에서이 작업을 처음 수행했습니다.

우리가 테스트 한 드라이버는 아직 시험판입니다. 오늘 MegaRAID 컨트롤러가 다 떨어지고 구입하면 변경 사항이 공개 드라이버에 적용될 때까지 Pi에서 작동하는 데 약간의 문제가있을 것입니다.

홈 메이드 Pi 기반 NAS에이 $ 1000 HBA를 구입하는 것이 좋습니다. 아마. 그러나 거기에는 저렴한 버전 인 9440-8i가 있습니다 . 여전히 모든 고급 기능을 갖추고 있으며 eBay에서 사용되는 200 달러 미만입니다 (대부분 Dell 서버가 가져옵니다).

원하는 경우 과도 할 수 있습니다. 저렴한 NAS를 구축하고 SATA 드라이브 만 사용합니다. 곧 더 저렴한 NAS 옵션을 다룰 예정이므로이 블로그의 RSS 피드를 구독하거나 내 YouTube 채널을 구독하여 따라 해보세요!

자세히보기

Author: Margarete Drews

Leave a Reply Cancel reply