PowerEdge: Dell Ready Solutions for HPC BeeGFS Storage의 기능
Summary: Dell Ready Solutions for HPC BeeGFS Storage의 기능
Instructions
목차
소개
이 블로그에서는 최근에 발표된 Dell Ready Solutions for HPC BeeGFS Storage의 주요 기능에 대해 설명합니다. 이 블로그는 BeeGFS 고성능 스토리지 솔루션에 관한 시리즈의 세 번째 블로그입니다. 첫 번째 블로그에서 솔루션 릴리스를 발표했습니다. 두 번째 블로그에서는 Dell Ready Solutions for HPC BeeGFS Storage의 확장성에 대해 논의했습니다. 또한 기본 구성, 유연하게 확장 가능한 구성 및 다양한 구성의 측정된 순차 읽기/쓰기 성능에 대한 세부 정보를 제공하여 확장성이 솔루션의 서버 수에 비례하여 선형적임을 보여줍니다. 현재 블로그에서는 BeeGFS의 통합 스토리지 타겟 벤치마크인 "StorageBench"의 사용에 대해 중점적으로 설명합니다.
BeeGFS는 www.beegfs.io 에서 다운로드할 수 있는 오픈 소스 파일 시스템입니다. 여러 스토리지 타겟에 데이터를 분산하는 병렬 파일 시스템입니다. 기본 스토리지 하드웨어에서 논리 파일 시스템을 분리하는 소프트웨어 정의 스토리지로, 이를 통해 사용자는 데이터 저장 방식과 위치를 정의할 수 있습니다. 파일 시스템 소프트웨어에는 고가용성, 할당량 적용 및 액세스 제어 목록과 같은 엔터프라이즈 기능이 포함되어 있습니다. BeeGFS의 주요 특징은 사용 편의성, 확장성 및 유연성입니다. 사용 편의성은 모든 서버 측 구성 요소가 사용자 공간 데몬인 반면 클라이언트는 커널 자체에 대한 패치가 필요하지 않은 커널 모듈이라는 사실에서 비롯됩니다. 서버를 재부팅하지 않고도 모든 BeeGFS 구성 요소를 설치하고 업데이트할 수 있습니다. 따라서 다운타임 없이 기존 시스템에 클라이언트와 서버를 추가할 수 있습니다. 서버와 드라이브를 추가하면 여기에 링크된 블로그에서 파일 시스템의 성능과 용량을 더 확장할 수 있습니다. BeeGFS는 여러 Linux 배포판을 지원하며 모든 POSIX 호환 로컬 파일 시스템에서 작동하도록 설계되었습니다. BeeGFS는 동일한 서버에서 특정 서비스의 여러 인스턴스를 실행할 수도 지원합니다.
Dell Ready Solutions for HPC BeeGFS Storage는 BeeGFS 파일 시스템의 모든 주요 기능을 활용하며 고성능을 위해 엔지니어링되었습니다. 이 솔루션은 메타데이터와 데이터를 저장 및 제공하거나 처리하기 위해 PowerEdge R740xd 서버를 사용합니다. 각 PowerEdge R740xd 서버에는 드라이브 기술의 두 번째 주요 도약으로 간주되는 24x 1.6TB 인텔 P4600 NVMe SSD가 탑재되어 있습니다. SSD가 첫 번째 제품입니다. HPC 환경에서 스크래치 공간은 종종 제한 요인이 될 수 있습니다. 너무 작거나 너무 느릴 수 있습니다. Dell EMC Ready Solutions for HPC BeeGFS Storage는 스크래치 솔루션으로 사용하도록 설계되었으며 BeeGFS 파일 시스템을 사용하여 스크래치 스토리지를 제공합니다.
BeeGFS에는 네트워크 또는 스토리지를 특성화하거나 평가하는 데 도움이 되는 두 가지 통합 벤치마킹 툴 인 NetBench 및 StorageBench 가 포함되어 있습니다. NetBench 모드가 활성화되면 서버는 데이터를 쓰는 대신 수신된 쓰기 요청을 삭제합니다. 마찬가지로, 읽기 요청의 경우 기본 파일 시스템에서 읽는 대신 메모리 버퍼만 클라이언트로 전송됩니다. NetBench 모드는 기본 디스크와 독립적으로 네트워크 스트리밍 처리량을 테스트하기 위한 것입니다. 반면, StorageBench는 네트워크 성능과 무관하게 기본 파일 시스템의 스트리밍 처리량을 측정하기 위한 것입니다. StorageBench는 네트워크를 사용하지 않는 스토리지 타겟 벤치마크입니다. storage-bench 명령은 단순히 데이터 쓰기/읽기를 시작하라는 요청을 스토리지 타겟으로 전송합니다. 이를 통해 네트워크의 영향을 없앨 수 있습니다. 스토리지 벤치에서 얻는 출력은 네트워크 성능이 이상적일 경우 시스템이 달성할 수 있는 최상의 성능입니다. 이 블로그에서는 StorageBench를 사용하여 다양한 스토리지 타겟의 성능을 비교하여 결함이 있거나 잘못 구성된 타겟을 식별하는 방법을 설명합니다.
StorageBench - 서로 다른 RAID 구성의 성능 비교
StorageBench는 마운트된 파일 시스템을 사용하지 않습니다. StorageBench를 실행하면 파일당 하나의 타겟만 있습니다. Storagebench는 테스트 파일이 생성되는 시스템의 모든 스토리지 타겟에 테스트 스레드 수와 동일한 디렉터리를 만듭니다. 데이터는 직접 스트리밍되어 각 스토리지 타겟에 사용할 수 있는 낮은 수준의 처리량을 표시합니다. 네트워크 통신이 없으면 파일 스트라이핑을 시뮬레이션할 수 없습니다. 따라서 스토리지 벤치마크 결과는 스트라이핑이 비활성화된 클라이언트 IO와 비슷합니다. 벤치마크가 실행될 때 기본 스트라이핑 패턴이 채택된 경우 파일이 4개의 스토리지 타겟에 스트라이핑됩니다.
다양한 스토리지 타겟을 테스트하기 위해 Dell BeeGFS 스토리지 솔루션의 확장성 블로그에 설명된 중소 규모 구성이 사용되었습니다. 두 구성 모두 RAID 1에 구성된 메타데이터 타겟의 수가 동일합니다. 스토리지 타겟의 RAID 구성이 다릅니다. 소규모 설정에는 스토리지 타겟이 6개 드라이브의 RAID 0으로 구성되어 있는 반면, 중간 규모 구성에는 6개 드라이브로 구성된 RAID 10으로 구성된 스토리지 타겟이 있습니다. 소규모 및 중간 규모 설정에서 구성된 스토리지 타겟은 아래 표에 정리되어 있습니다.
| 표 1 테스트베드 구성 | ||
|---|---|---|
| 구성 | 중간 - 스토리지 타겟에 대한 RAID 10 | 소규모 - 스토리지 타겟에 대한 RAID 0 |
| 메타데이터 타겟 수 | 6 | 6 |
| 메타데이터 서비스의 인스턴스 수 | 6 | 6 |
| 스토리지 서버 수 | 5 | 2 |
| 스토리지 타겟 수 | 22 | 10 |
| 서버당 스토리지 서비스 수 | 4 | 4 |
| NUMA 존당 스토리지 서비스 수 | 2 | 2 |
| 스토리지 서비스 인스턴스당 타겟 수 | 2 | 2 |
참고: 위의 미디어 설정 구성은 StorageBench 도구를 사용하여 다른 RAID 구성으로 구성된 스토리지 대상의 처리량을 테스트하기 위한 목적으로만 사용됩니다.
StorageBench Write Benchmark - RAID 0에서 스토리지 타겟이 구성된 소규모 구성
스토리지 벤치마크가 시작되고 beegfs-ctl 툴로 모니터링됩니다. beegfs-utils 패키지는 스토리지 타겟 벤치마크를 실행하는 데 사용할 수 있는 beegfs-ctl 명령줄 툴을 제공합니다. 다음 예에서는 타겟당 16개의 스레드를 사용하여 IO 블록 크기가 512KB인 모든 BeeGFS 스토리지 서버의 모든 타겟에서 쓰기 벤치마크를 시작합니다. 각 스레드는 자체 파일에 200Gb의 데이터를 씁니다.
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16 Write storage benchmark was started. You can query the status with the --status argument of beegfs-ctl. Server benchmark status: Running: 10
"실행 중: 10" 출력은 시스템에 총 10개의 스토리지 타겟이 구성되어 있음을 나타냅니다.
모든 타겟의 벤치마크 상태/결과를 쿼리하려면 다음 명령을 실행할 수 있습니다.
[root@stor1 ~]# beegfs-ctl --storagebench --alltargets --status Server benchmark status: Finished: 10 Write benchmark results: Min throughput: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6], targetID: 50 Max throughput: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2], targetID: 48 Avg throughput: 4907091 KiB/s Aggregate throughput: 49070915 KiB/s
위의 명령에 verbose를 추가하면 모든 타겟 목록과 해당 처리량이 표시됩니다.
[root@meta-stor ~]# beegfs-ctl --storagebench --alltargets --status --verbose Server benchmark status: Finished: 10 Write benchmark results: Min throughput: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6], targetID: 6 Max throughput: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2], targetID: 2 Avg throughput: 4907091 KiB/s Aggregate throughput: 49070915 KiB/s List of all targets: 1 5368477 KiB/s nodeID: meta-stor-numa1-1 [ID: 1] 2 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2] 3 4706368 KiB/s nodeID: stor1-numa0-1 [ID: 3] 4 4896077 KiB/s nodeID: stor1-numa1-1 [ID: 4] 5 4872876 KiB/s nodeID: stor1-numa1-2 [ID: 5] 6 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6] 7 4879054 KiB/s nodeID: stor2-numa1-2 [ID: 7] 8 4864737 KiB/s nodeID: stor2-numa1-1 [ID: 8] 9 4696152 KiB/s nodeID: stor2-numa0-1 [ID: 9] 10 4726202 KiB/s nodeID: stor2-numa0-2 [ID: 10]
출력에서 추론:
RAID 0에 구성된 스토리지 타겟당 평균 처리량은 5.02GB/s입니다.
StorageBench Write Benchmark - 스토리지 타겟이 RAID 10으로 구성된 중간 규모 구성
다음 예에서는 타겟당 16개의 스레드를 사용하여 IO 블록 크기가 512KB인 모든 BeeGFS 스토리지 서버의 모든 타겟에서 쓰기 벤치마크를 시작합니다. 각 스레드는 자체 파일에 200Gb의 데이터를 씁니다.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16 Write storage benchmark was started. You can query the status with the --status argument of beegfs-ctl. Server benchmark status: Running: 22
위의 명령에 verbose를 추가하면 모든 타겟 목록과 해당 처리량이 표시됩니다.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose Server benchmark status: Finished: 22 Write benchmark results: Min throughput: 2705987 KiB/s nodeID: node006-numa0-1 [ID: 19], targetID: 1 Max throughput: 3364311 KiB/s nodeID: node001-numa1-1 [ID: 1], targetID: 1 Avg throughput: 3212845 KiB/s Aggregate throughput: 70682603 KiB/s List of all targets: 1 3364311 KiB/s nodeID: node001-numa1-1 [ID: 1] 2 3361591 KiB/s nodeID: node001-numa1-2 [ID: 2] 3 3309530 KiB/s nodeID: node002-numa0-1 [ID: 3] 4 3312840 KiB/s nodeID: node002-numa0-2 [ID: 4] 5 3332095 KiB/s nodeID: node002-numa1-1 [ID: 5] 6 3323319 KiB/s nodeID: node002-numa1-2 [ID: 6] 7 3313000 KiB/s nodeID: node003-numa0-1 [ID: 7] 8 3321214 KiB/s nodeID: node003-numa0-2 [ID: 8] 9 3335072 KiB/s nodeID: node003-numa1-1 [ID: 9] 10 3339743 KiB/s nodeID: node003-numa1-2 [ID: 10] 11 3302175 KiB/s nodeID: node004-numa0-1 [ID: 11] 12 3309474 KiB/s nodeID: node004-numa0-2 [ID: 12] 13 3329879 KiB/s nodeID: node004-numa1-1 [ID: 13] 14 3328291 KiB/s nodeID: node004-numa1-2 [ID: 14] 15 3306132 KiB/s nodeID: node005-numa0-1 [ID: 15] 16 3307096 KiB/s nodeID: node005-numa0-2 [ID: 16] 17 3318436 KiB/s nodeID: node005-numa1-1 [ID: 17] 18 3329684 KiB/s nodeID: node005-numa1-2 [ID: 18] 19 2705987 KiB/s nodeID: node006-numa0-1 [ID: 19] 20 2716438 KiB/s nodeID: node006-numa0-2 [ID: 20] 21 2707970 KiB/s nodeID: node006-numa1-1 [ID: 21] 22 2708326 KiB/s nodeID: node006-numa1-2 [ID: 22]
출력에서 추론:
스토리지 타겟당 평균 처리량은 3.29GB/s입니다.
RAID 0으로 구성된 스토리지 타겟과 RAID 10으로 구성된 스토리지 타겟이 있는 두 BeeGFS 설정에서 수행된 StorageBench 벤치마크 테스트 결과, RAID 10보다 RAID 0에서 스토리지 타겟을 구성할 때 쓰기 성능이 더 우수하다는 것이 분명합니다. dd 명령을 사용하여 블록 크기가 1M이고 "oflag=direct"인 10G 파일을 작성했을 때 RAID 0에 구성된 소규모 시스템의 평균은 약 5.1GB/s인 반면, RAID 10에 구성된 중간 시스템의 평균 처리량은 약 3.4GB/s였으며, 이는 StorageBench 도구를 사용하여 얻은 결과와 비슷합니다.
StorageBench - 결함이 있거나 잘못 구성된 스토리지 타겟 식별
StorageBench는 공지 블로그 에 설명된 중간 구성에서 실행되어 시스템에 잘못 구성되거나 결함이 있는 스토리지 타겟이 있는지 확인했습니다.
[root@node001 ~]# beegfs-ctl --storagebench --alltargets --status --verbose Server benchmark status: Finished: 33 Read benchmark results: Min throughput: 2830479 KiB/s nodeID: node003-numa1-2 [ID: 14], targetID: 14 Max throughput: 3025500 KiB/s nodeID: node005-numa0-1 [ID: 22], targetID: 22 Avg throughput: 2917836 KiB/s Aggregate throughput: 96288596 KiB/s List of all targets: 1 2950039 KiB/s nodeID: node001-numa1-1 [ID: 1] 2 2956121 KiB/s nodeID: node001-numa1-2 [ID: 2] 3 2954473 KiB/s nodeID: node001-numa1-3 [ID: 3] 4 2957658 KiB/s nodeID: node002-numa0-1 [ID: 4] 5 2947109 KiB/s nodeID: node002-numa0-2 [ID: 5] 6 2969886 KiB/s nodeID: node002-numa0-3 [ID: 6] 7 2892578 KiB/s nodeID: node002-numa1-1 [ID: 7] 8 2886899 KiB/s nodeID: node002-numa1-2 [ID: 8] 9 2888972 KiB/s nodeID: node002-numa1-3 [ID: 9] 10 2861995 KiB/s nodeID: node003-numa0-1 [ID: 10] 11 2874314 KiB/s nodeID: node003-numa0-2 [ID: 11] 12 2879096 KiB/s nodeID: node003-numa0-3 [ID: 12] 13 2832635 KiB/s nodeID: node003-numa1-1 [ID: 13] 14 2830479 KiB/s nodeID: node003-numa1-2 [ID: 14] 15 2830971 KiB/s nodeID: node003-numa1-3 [ID: 15] 16 2986890 KiB/s nodeID: node004-numa0-1 [ID: 16] 17 2979197 KiB/s nodeID: node004-numa0-2 [ID: 17] 18 2983958 KiB/s nodeID: node004-numa0-3 [ID: 18] 19 2897974 KiB/s nodeID: node004-numa1-1 [ID: 19] 20 2900880 KiB/s nodeID: node004-numa1-2 [ID: 20] 21 2904036 KiB/s nodeID: node004-numa1-3 [ID: 21] 22 3025500 KiB/s nodeID: node005-numa0-1 [ID: 22] 23 3021558 KiB/s nodeID: node005-numa0-2 [ID: 23] 24 3017387 KiB/s nodeID: node005-numa0-3 [ID: 24] 25 2921480 KiB/s nodeID: node005-numa1-1 [ID: 25] 26 2930226 KiB/s nodeID: node005-numa1-2 [ID: 26] 27 2930548 KiB/s nodeID: node005-numa1-3 [ID: 27] 28 2900018 KiB/s nodeID: node006-numa0-1 [ID: 28] 29 2898520 KiB/s nodeID: node006-numa0-2 [ID: 29] 30 2907113 KiB/s nodeID: node006-numa0-3 [ID: 30] 31 2855079 KiB/s nodeID: node006-numa1-1 [ID: 31] 32 2853527 KiB/s nodeID: node006-numa1-2 [ID: 32] 33 2861480 KiB/s nodeID: node006-numa1-3 [ID: 33]
위의 출력에서 모든 스토리지 타겟이 균일하게 수행되며 시스템에 결함이 있는 타겟이 없음이 분명합니다.
결론 및 향후 작업
이 블로그에서는 BeeGFS의 주요 기능에 대해 설명하고, 여러 RAID 구성의 성능을 평가 또는 비교하고 결함이 있거나 잘못 구성된 스토리지 타겟이 있는지 파악하는 데 스토리지 벤치 벤치마크를 사용할 수 있는 이유를 설명했습니다. 다음 단계의 일환으로 메타데이터 성능 및 IOR 성능 그리고 설계 고려 사항, 튜닝 및 구성에 대한 추가 세부 정보가 포함된 백서를 나중에 게시할 예정입니다.
참조
1) Dell EMC Ready Solutions for HPC BeeGFS Storage PowerEdge: Dell Ready Solutions for HPC BeeGFS 고성능 스토리지
2) Dell Ready Solutions for HPC BeeGFS Storage PowerEdge의 확장성: Dell Ready Solutions for HPC BeeGFS 스토리지
의 확장성3) BeeGFS 설명서:
https://www.beegfs.io/wiki/4) 동일한 서브넷에 두 인터페이스를 연결하는 방법 :
https://access.redhat.com/solutions/305645) 외장 메모리를 사용하는 PCI Express Direct Memory Access 레퍼런스 디자인: https://www.intel.com/content/www/us/en/programmable/documentation/nik1412547570040.html#nik1412547565760