하드웨어 RAID를 사용한 ZFS 모범 사례


30

서버급 하드웨어를 사용하는 경우 하드웨어 기반 RAID1 또는 그와 유사한 장치 위에서 ZFS를 실행하는 것이 바람직합니까? 하나는에 하드웨어 기반의 RAID 및 실행 ZFS를 해제해야 mirror하거나 raidz zpool대신?

하드웨어 RAID 기능이 해제 된 상태에서 하드웨어 RAID 기반 SATA2 및 SAS 컨트롤러는 비 하드웨어 RAID 컨트롤러보다 읽기 및 쓰기 오류를 숨길 가능성이 어느 정도입니까?

사용자 지정이 불가능한 서버와 관련하여 하드웨어 RAID 컨트롤러가 실질적으로 비용이 적게 드는 상황이 있거나 사전 구축 된 서버 제품의 비용이 낮아지면 호스팅 회사가 보완 IPMI를 제공 할 가능성이 높아지기 때문에 접근), 피해야 하는가? 그러나 그것을 추구해야합니까?



2
@ShaneMadden, 질문은 비슷하지만 내 질문은 이미 zfs 측면에서 하드웨어 레이드가 나쁘다는 관점에서 비롯된 것입니다. 또한 링크 된 질문에 대한 답변이 내 질문을 전혀 다루지 않는다는 것을 고려하십시오. 내 질문은 연결된 질문에 대한 후속 질문과 비슷합니다.
cnst

"하드웨어 미러링 위에 ZFS가 있습니까? 아니면 ZFS에서 미러링입니까?" 이 질문은 두 가지 다른 주제입니다. 다른 주제는이 주제보다 범위가 더 좁습니다.
Stefan Lasiewski

@ewwhite, 당신은 이것을 이미 묻지 않았습니까?
cnst

@cnst 글쎄, 답변이 표시되지 않았으며 사람들은 내 대답을 계속 하향 조정 합니다. 따라서 제기 된 질문에 대한 폐쇄가있는 것이 좋을 것입니다. ( 이것은 책임있는 일이다 )
ewwhite

답변:


17

ZFS의 아이디어는 디스크의 작동 방식을 가능한 한 많이 알리는 것입니다. 그런 다음 최악에서 더 나은 것으로 :

  • 하드웨어 습격 (ZFS는 실제 하드웨어에 대한 실마리는 없습니다)
  • JBOD 모드 (문제는 잠재적 인 확장기에 관한 것입니다 : 적은 대역폭),
  • HBA 모드가 이상적임 (ZFS는 디스크에 대한 모든 것을 알고 있음)

ZFS는 하드웨어에 대해 편집증이 많기 때문에 숨기는 것이 적을수록 하드웨어 문제에 더 잘 대처할 수 있습니다. Sammitch가 지적한 것처럼 RAID 컨트롤러 구성 및 ZFS는 실패 할 때 (예 : 하드웨어 오류) 복원 또는 재구성하기가 매우 어려울 수 있습니다.

일부 하드웨어 RAID 컨트롤러가있는 표준화 된 하드웨어 문제에 대해서는 하드웨어 컨트롤러에 실제 패스 스루 또는 JBOD 모드가 있어야합니다.


10
HW RAID를 사용하고 있고 동일하거나 완벽하게 호환되는 교체품을 얻을 수 없다면 컨트롤러가 생각보다 더 많이 죽는다면, 당신은 고생하고 있다는 점도 주목할 가치가 있습니다. 반면에 원시 디스크를 ZFS에 제공 한 경우 해당 디스크를 모든 시스템의 컨트롤러에 다시 연결할 수 있으며 ZFS는 어레이를 재구성하고 아무 일도 일어나지 않은 것처럼 수행 할 수 있습니다.
Sammitch

1
고급 서버에는 일반적으로 온보드 RAID 컨트롤러가 있습니다. 예를 들어 HP 또는 Dell 시스템에서 컨트롤러를 교체 할 필요는 없습니다.
ewwhite 2016

2
이 답변은 아무것도 대답하지 않습니다. 이는 서버 하드웨어 공급 업체와 ZFS 프로그래머가 RAID 컨트롤러 공급 업체와 RAID 펌웨어 프로그래머보다 더 나은 작업을 수행했다는 편견을 나타냅니다. FreeNAS 커뮤니티는 서버 메모리 오작동 또는 부적절한 전원 공급 장치로 Zpool을 죽인 사람들로 가득합니다. 큰 것이 실패 할 확률이 작은 것보다 높습니다.
ceving

14

Q. 서버급 하드웨어를 사용하는 경우 하드웨어 기반 RAID1 또는 그와 유사한 장치 위에서 ZFS를 실행하는 것이 좋습니다?

A. ZFS를 디스크에 바로 실행하고 그 사이에 어떤 형태의 RAID도 사용하지 않는 것이 좋습니다. 효과적으로 RAID 카드를 사용해야하는 시스템의 ZFS 사용이 데이터 복구보다 ZFS의 다른 이점과 더 큰 관련이 있는지 여부입니다. ZFS에 단일 LUN을 제공하는 기본 RAID 카드가 있다면 ZFS는 데이터 복원력을 향상시키지 않을 것입니다. ZFS를 처음 사용하는 유일한 이유가 데이터 복원력 향상 인 경우 ZFS를 사용해야하는 모든 이유를 잃어버린 것입니다. 그러나 ZFS는 ARC / L2ARC, 압축, 스냅 샷, 클론 및 기타 다양한 개선 사항도 제공하며,이 경우 여전히 파일 시스템이 선택 될 수 있습니다.

Q. 하드웨어 기반 RAID를 끄고 대신 미러 또는 raidz zpool에서 ZFS를 실행해야합니까?

A. 가능합니다. 일부 RAID 카드는 통과 모드를 허용합니다. 그것이 있다면, 이것이 바람직한 일입니다.

Q. 하드웨어 RAID 기능이 해제 된 상태에서 하드웨어 RAID 기반 SATA2 및 SAS 컨트롤러는 비 하드웨어 RAID 컨트롤러보다 읽기 및 쓰기 오류를 숨길 가능성이 있습니까?

A. 이것은 해당 RAID 카드에 전적으로 의존합니다. 설명서를 펴거나 RAID 카드 제조업체 / 공급 업체에 문의하십시오. 예, 특히 RAID 기능을 '끄기'로 설정해도 실제로 완전히 꺼지지 않는 경우가 있습니다.

Q. 사용자 정의 할 수없는 서버와 관련하여 하드웨어 RAID 컨트롤러가 실질적으로 비용 중립적 인 상황 인 경우 (사전 구축 된 서버 오퍼링의 비용이 낮아짐에 따라 호스팅 회사가 제공 할 가능성이 향상됨) 상호 보완적인 IPMI 액세스) 피해야합니까? 그러나 그것을 추구해야합니까?

A. 이것은 첫 번째 질문과 거의 같은 질문입니다. 다시 말하지만 ZFS를 사용하려는 유일한 데이터 복원력 향상이고 선택한 하드웨어 플랫폼에 RAID 카드가 단일 LUN을 ZFS (또는 여러 LUN이지만 ZFS 스트라이프가 있음)를 제공해야하는 경우에는 데이터 복원력을 향상시킬 수있는 방법이 없으므로 ZFS를 선택하는 것이 적절하지 않을 수 있습니다. 그러나 다른 ZFS 기능 중 유용한 것이 있으면 여전히 유용 할 수 있습니다.

위의 답변은 ZFS 아래의 하드웨어 RAID 카드를 사용하면 데이터 복원력을 향상시키는 기능을 제거하는 것 이상으로 ZFS에 아무런 해를 끼치 지 않는다는 아이디어에 의존합니다. 진실은 더 회색 영역입니다. ZFS에는 원시 디스크 대신 멀티 디스크 LUN을 처리 할 때 반드시 작동하지 않는 다양한 조정 및 가정이 있습니다. 이 중 대부분은 적절한 튜닝으로 무효화 될 수 있지만, 즉시 개별 스핀들에서했던 것처럼 큰 RAID LUN 위에서 ZFS를 효율적으로 사용할 수는 없습니다.

또한 기존 파일 시스템과 달리 ZFS가 LUN과 통신하는 방식이 매우 다르기 때문에 RAID 컨트롤러와 코드 워크로드에 익숙하지 않은 워크로드가 종종 발생하여 이상을 초래할 수 있다는 증거가 있습니다. 특히, 별도의 로그 장치를 제공하지 않는 경우 단일 LUN 위에 배치 한 모든 풀에서 ZIL 기능을 완전히 비활성화하여 자신에게 호의를 표할 것입니다. 물론 권장합니다. 풀에 별도의 원시 로그 장치를 제공하십시오 (가능한 경우 RAID 카드의 LUN이 아님).


9

HP ProLiant Smart Array RAID 구성 위에서 ZFS를 상당히 자주 실행합니다.

왜?

  • 부트 파티션이 아닌 데이터 파티션에 ZFS를 좋아하기 때문입니다.
  • Linux와 ZFS 부팅은 아마도 지금 당장 나에게 충분하지 않기 때문입니다.
  • HP RAID 컨트롤러는 RAW 장치 통과를 허용하지 않기 때문 입니다. 여러 개의 RAID 0 볼륨을 구성하는 것은 RAW 디스크와 다릅니다.
  • 서버 백플레인은 일반적으로 드라이브 베이를 특정 컨트롤러에 전용으로 사용하거나 두 컨트롤러간에 분할 업무를 수행 할 수있을만큼 유연하지 않기 때문입니다. 요즘에는 8 베이 및 16 베이 설정이 가장 자주 나타납니다. 항상 상황을 분류하기에 충분하지는 않습니다.
  • 그러나 여전히 ZFS의 볼륨 관리 기능이 마음에 듭니다. zpool을 통해 동적으로 작업을 수행하고 사용 가능한 디스크 공간을 최대한 활용할 수 있습니다.
  • 압축, ARC 및 L2ARC는 킬러 기능입니다!
  • 하드웨어 RAID 위에 올바르게 설계된 ZFS 설정은 여전히 ​​좋은 경고 및 실패 경고를 제공하지만 하드웨어 전용 솔루션보다 성능이 우수합니다.

예를 들면 :

RAID 컨트롤러 구성.

[root@Hapco ~]# hpacucli ctrl all show config

Smart Array P410i in Slot 0 (Embedded)    (sn: 50014380233859A0)

   array B (Solid State SATA, Unused Space: 250016  MB)
      logicaldrive 3 (325.0 GB, RAID 1+0, OK)

      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, Solid State SATA, 240.0 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, Solid State SATA, 240.0 GB, OK)

장치 목록 차단

[root@Hapco ~]# fdisk  -l /dev/sdc

Disk /dev/sdc: 349.0 GB, 348967140864 bytes
256 heads, 63 sectors/track, 42260 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       42261   340788223   ee  GPT

zpool 구성

[root@Hapco ~]# zpool  list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol1   324G  84.8G   239G    26%  1.00x  ONLINE  -

zpool 세부 사항

  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 0h4m with 0 errors on Sun May 19 08:47:46 2013
config:

        NAME                                      STATE     READ WRITE CKSUM
        vol1                                      ONLINE       0     0     0
          wwn-0x600508b1001cc25fb5d48e3e7c918950  ONLINE       0     0     0

zfs 파일 시스템 목록

[root@Hapco ~]# zfs list
NAME             USED  AVAIL  REFER  MOUNTPOINT
vol1            84.8G   234G    30K  /vol1
vol1/pprovol    84.5G   234G  84.5G  -

따라서 귀하가 연결 한 비공개 질문과 관련하여 ZFS를 사용하려면 예를 들어 Dell PERC H200 및 HP P410을 피하는 것이 좋습니다. 여전히 RAID0 또는 RAID1 인 하드웨어 RAID 모드를 비활성화 할 방법이 없습니까?
cnst

따라서 dell.com/learn/us/en/04/campaigns/dell-raid-controllersH18004.www1.hp.com/products/servers/proliantstorage/가 있지만 H200이 "RAID를 지원하지 않음"이라고 주장하는 것처럼 보입니다. P410의 레이드 기능을 해제 할 수 있는지 여부는 완전히 명확하지 않습니다.
cnst

@cnst HP Smart Array P410의 RAID 기능을 비활성화 할 수 없습니다.
ewwhite

여전히 맞습니까? 하드웨어 습격에서 위험한 ZFS 실행이 없다고 말하는가?
스파 스

옳은. 위험하지 않습니다.
ewwhite

5

일반적으로 RAID 어레이에 구성된 디스크 위에서 ZFS를 실행해서는 안됩니다. ZFS는 RAID 모드에서 실행할 필요가 없습니다. 개별 디스크 만 사용할 수 있습니다. 그러나 사실상 99 %의 사람들이 RAID 부분에 대해 ZFS를 실행합니다. 디스크를 스트라이프 모드로 실행할 수는 있지만 ZFS를 제대로 사용하지 않습니다. 다른 포스터와 마찬가지로 ZFS는 하드웨어에 대해 많이 알고 싶어합니다. ZFS는 JBOD 모드로 설정하거나 HBA에 연결하는 것이 가능한 RAID 카드에만 연결해야합니다. IRC 프리 노드 채널로 이동 #openindiana; 채널의 모든 ZFS 전문가가 동일한 정보를 알려줍니다. HBA를 제공하지 않을 경우 호스팅 제공 업체에 JBOD 모드를 제공하도록 요청하십시오.


1
예, 동의합니다. 그러나 청구서와 사양에 맞는 구성으로 재고가 무엇인지에 대한 문제이기도합니다. 서버에 큰 CPU, 많은 ECC RAM, 큰 대역폭 및 많은 서버가 있지만 하드웨어 기반 RAID를 사용해야하는 경우 대안을 찾는 것이 비용 효율적이지 않을 수 있습니다. 다른 카테고리에 있거나 ECC RAM 등과 같은 일부 엔터프라이즈 기능이 누락 되었기 때문에
cnst

2

요약하자면, ZFS 이하에서 RAID를 사용하면 ZFS를 사용한다는 아이디어가 사라집니다. 왜? — RAID가 아닌 순수한 디스크에서 작동하도록 설계 되었기 때문입니다.


1
반드시 그런 것은 아닙니다. 최적화가 물리적 장치에 대한 원시 액세스 권한보다 볼륨 관리 유연성에 더 관심이 있다면 어떻게해야합니까? ZFS는 내 사용 사례에 매우 적합합니다.
ewwhite

3
@ewwhite, 글쎄, 누군가가 근처에서 자전거를 타면 일반적으로 자전거를 타는 것을 좋아하지만 자전거는 타기 위해 만들어졌습니다. )
poige

2

모든 Raid를 통한 ZFS는 총 통증이며 MAD 사람들 만이 수행합니다 ... ECC 메모리가 아닌 ZFS를 사용하는 것과 같습니다.

샘플을 사용하면 더 잘 이해할 수 있습니다.

  • Raid1을 통한 ZFS, 하나의 디스크는 전원이 꺼 졌을 때 비트가 변경되었습니다 ... 알다시피, ZFS는 어느 디스크를 읽었는지에 따라 약간의 손상을 보거나 읽지 않습니다 ) ... 실패가 VDEV 부분에있는 경우 ... ZPOOL 전체가 모든 데이터를 영구적으로 잃습니다.
  • Raid0을 통한 ZFS, 전원이 꺼 졌을 때 하나의 디스크가 비트가 변경되었습니다 ... 알고있는 것을 모두 들어보십시오 (레이드 컨트롤러는 해당 비트가 변경된 것을 보지 못하고 두 디스크 모두 정상이라고 생각합니다) ... 실패는 VDEV 부분에 있습니다 ... ZPOOL 전체가 모든 데이터를 영원히 잃어 버립니다.

ZFS가 좋은 곳은 전원이없는 디스크 (RAID 컨트롤러가이를 수행 할 수 없음), 요청없이 변경 될 때 변경된 비트 등을 감지하는 것입니다.

RAM 모듈의 비트가 요청없이 자연스럽게 변경 될 때와 같은 문제입니다. 메모리가 ECC이면 메모리가 자체적으로 수정합니다. 그렇지 않은 경우 해당 데이터가 변경되어 수정 된 디스크로 데이터가 전송됩니다. 실패가 VDEV 파트에있는 경우 변경이 UDEV 파트에 없는지 확인하십시오. ZPOOL 전체가 모든 데이터를 영구적으로 잃어 버립니다.

이것이 ZFS의 약점입니다 ... VDEV가 실패하면 모든 데이터가 영원히 손실됩니다.

하드웨어 RAID 및 소프트웨어 Raid는 자발적인 비트 변경을 감지 할 수 없으며, 체크섬이없고, Raid1 레벨 (미러)에서 최악이며, 모든 부품을 읽고 비교하지는 않으며, 모든 부품이 항상 동일한 데이터를 가질 것이라고 가정합니다. Raid는 데이터가 다른 것 / 방법에 의해 변경되지 않았다고 가정합니다. 그러나 디스크 (메모리)는 자발적인 비트 변경이 발생하기 쉽습니다.

ECC가 아닌 RAM에서 ZFS를 사용하지 말고 습격 디스크에서 ZFS를 사용하지 마십시오. ZFS가 모든 디스크를 보도록하고 VDEV 및 POOL을 망칠 수있는 계층을 추가하지 마십시오.

이러한 실패를 시뮬레이션하는 방법 ... PC 전원 끄기, 해당 Raid1의 디스크 1 개를 꺼내고 1 비트 만 변경 ... Raid 컨트롤러가 어떻게 변경되었는지 알 수 없는지 확인하십시오 ... ZFS는 모든 읽기를 테스트하기 때문에 가능합니다 체크섬에 대해 일치하지 않으면 다른 부분을 읽어보십시오 ... 하드웨어 불가능 읽기 실패를 제외하고 실패로 인해 레이드를 다시 읽지 않음 ... Raid가 읽을 수있는 경우 데이터가 정상이라고 생각하지만 (이러한 경우는 아님) ) ... Raid가 "이봐, 난 거기에서 읽을 수없고 하드웨어 고장"이라고 쓰여있는 경우에만 다른 디스크에서 읽으려고합니다 ... 체크섬이 읽은 것처럼 체크섬이 일치하지 않으면 ZFS가 다른 디스크에서 읽습니다. "이봐, 난 거기에서 읽을 수 없습니다, 하드웨어 실패"라고 말합니다.

Raid의 모든 수준에 걸친 ZFS는 데이터에 대한 총체적인 고통과 전체적인 위험입니다! 비 ECC 메모리의 ZFS뿐만 아니라

그러나 아무도 나에게 말하지 않는 것은 :

  • 내부 캐시가있는 디스크를 사용하지 마십시오 (SHDD뿐만 아니라 8Mib ~ 32MiB 캐시가있는 디스크 등). 일부는 이러한 캐시에 비 ECC 메모리를 사용합니다
  • SATA NCQ (쓰기를 대기열에 넣는 방법)는 전원이 느슨하면 ZFS를 망칠 수 있으므로 사용하지 마십시오.

어떤 디스크를 사용해야합니까?

  • 모든 큐가 전원 장애시 디스크에 기록되고 그 안에 ECC 메모리를 사용하는 내장 배터리가있는 디스크입니다 (죄송 합니다만, 디스크가 거의없고 비용이 많이 듭니다).

그러나, 대부분의 사람들은이 모든 것을 알지 못하고 문제가 없었습니다 ... 나는 그들에게 말합니다 : 와우, 당신은 얼마나 운이 좋은지, 복권을 사십시오.

위험이 있습니다 ... 그러한 실패가 발생할 수 있습니다 ... 그래서 더 나은 대답은 다음과 같습니다.

  • ZFS와 데이터가 실제로 저장되는 위치 (RAM, Raid, NCQ, 내부 디스크 캐시 등) 사이에 여유를 두지 마십시오.

내가 개인적으로 무엇을합니까?

  • 더 많은 레이어를 추가하십시오 ... 나는 각각의 2.5 "SATA III 7200 rpm 디스크를 USB 3.1 Gen2 유형 C 인클로저에 사용하고 일부 인클로저를 PC에 연결하는 USB 3.1 Gen 2 유형 A 허브에 연결하고 다른 허브에 연결합니다 PC의 다른 루트 포트 등에 연결한다는 것입니다.
  • 시스템의 경우 변경할 수없는 (LiveCD와 같은) Linux 시스템을 사용하기 때문에 ZFS (Raid0 레벨)에서 내부 SATA 커넥터를 사용합니다. 각 디스크는 내부 디스크에서 동일한 내용을 부팅합니다. 시스템의 복제 이미지를 가지고 있습니다. (1GiB 시스템 미만) ... 또한 트릭을 사용하여 시스템에 파일이 포함되어 있고 부팅시 복제 된 RAM 매핑 된 드라이브를 사용하므로 부팅 후 모든 시스템이 RAM에서 실행됩니다 ... DVD도 같은 방식으로 부팅 할 수 있으므로 내부 디스크에 장애가 발생하면 DVD로 부팅하고 시스템이 다시 온라인 상태입니다 ... SystemRescueCD와 비슷한 트릭이지만 ISO 파일이 조금 더 복잡 할 수 있습니다. 내부 ZFS 또는 실제 DVD 일 뿐이며 두 가지 다른 버전을 원하지 않습니다.

Raid에 대해 ZFS에 약간의 빛을 줄 수 있기를 바랍니다. 일이 잘못되면 정말 고통 스럽습니다!


따라서 ZFS가 너무 신뢰할 수 없다고 말하면 단일 비트가 변경되면 전체 파일 시스템을 잃을 수 있습니까? 섹터가 성공적으로 기록 된 경우에만 (아마도 다른 순서로) 드라이브가 여전히 호스트에 통지 할 때 SATA NCQ는 어떻게 데이터 손실을 유발합니까?
Malvineous
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.