Linux의 ZFS RAID 및 LUKS 암호화 물리적 장치에 대한 것이며 잠금

3x 2TB 7200rpm 드라이브 세트를 Linux에서 LUKS 암호화 Z-RAID 풀 (NAS 솔루션 용)로 설정할 계획입니다.

당면한 문제에 대한 나의 이해는 이것을 달성하는 유일한 방법은 luksFormat모든 물리적 장치에 대한 것이며 잠금 해제 된 LUKS 컨테이너에서 zpool을 조립한다는 것입니다.

나는 이것에 대해 다음과 같은 우려를 가지고 있습니다.

  • 쓰기 성능을 크게 저해하지 않습니까? 이 설정에서 LUKS는 Z-RAID를 “인식”하지 않기 때문에 중복 데이터가 여러 번 암호화됩니다. LUKS-on-mdadm 솔루션에서 데이터는 한 번 암호화되며 디스크에 여러 번 기록됩니다. 내 CPU는 Intel AES-NI를 지원합니다.

  • 물리적 장치가 아닌 장치 매퍼 LUKS 컨테이너에서 작동 할 때 ZFS가 디스크 오류를 인식합니까? 중복 제거 및 기타 ZFS 기능은 어떻습니까?



답변

내가 관리하는 서버 중 하나가 설명하는 구성 유형을 실행합니다. LUKS 암호화 RAIDZ 풀이있는 6 개의 1TB 하드 드라이브가 있습니다. 또한 LUKS 암호화 ZFS 미러에는 2 개의 3TB 하드 드라이브가 있으며 매주 교체되어 오프 사이트로 가져갑니다. 서버는 약 3 년 동안이 구성을 사용해 왔으며 문제가 없었습니다.

Linux에서 암호화 된 ZFS가 필요한 경우이 설정을 권장합니다. Linux에서 ZFS가 아닌 ZFS-Fuse를 사용하고 있습니다. 그러나 Linux의 ZFS 이외의 결과와 관련이 없다면 아마도 사용중인 설정보다 성능이 더 좋을 것입니다.

이 설정에서 LUKS는 Z-RAID를 “인식”하지 않기 때문에 중복 데이터가 여러 번 암호화됩니다. LUKS-on-mdadm 솔루션에서 데이터는 한 번 암호화되며 디스크에 여러 번 기록됩니다.

LUKS는 RAID를 인식하지 못합니다. 블록 장치 위에 앉아 있다는 것만 알고 있습니다. mdadm을 사용하여 RAID 장치를 작성한 다음 luksformat암호화 된 데이터를 LUKS가 아닌 기본 저장 장치에 복제하는 것은 mdadm입니다.

LUKS FAQ의 질문 2.8은 암호화가 RAID의 맨 위에 있어야 하는지 아니면 다른 방법으로해야하는지에 대해 설명합니다 . 다음 다이어그램을 제공합니다.

Filesystem     <- top
|
Encryption
|
RAID
|
Raw partitions
|
Raw disks      <- bottom

ZFS는 RAID 및 파일 시스템 기능을 결합하므로 솔루션은 다음과 같아야합니다.

RAID-Z and ZFS Filesystem  <-top
|
Encryption
|
Raw partitions (optional)
|
Raw disks                  <- bottom

ZFS는 파티션이 아닌 원시 블록 스토리지를 사용할 것으로 예상하므로 원시 파티션을 옵션으로 나열했습니다. 파티션을 사용하여 zpool을 만들 수는 있지만 쓸모없는 수준의 관리가 추가되므로 권장하지 않으며 파티션 블록 정렬에 대한 오프셋을 계산할 때 고려해야합니다.

쓰기 성능을 크게 저해하지 않습니까? […] 내 CPU는 Intel AES-NI를 지원합니다.

AES-NI 드라이버가 지원하는 암호화 방법을 선택하는 한 성능 문제는 없습니다. cryptsetup 1.6.0 이상이 있으면 cryptsetup benchmark어떤 알고리즘을 실행 하여 최상의 성능을 제공하는지 확인할 수 있습니다 .

LUKS의 권장 옵션에 대한이 질문 도 유용 할 수 있습니다.

하드웨어 암호화가 지원되면 파티션 오정렬로 인해 성능 문제가 발생할 가능성이 높습니다.

Linux의 ZFS 명령속성을 추가ashiftzfs 하여 하드 드라이브의 섹터 크기를 지정할 수 있습니다. 링크 된 FAQ에 따르면 ashift=124K 블록 크기의 드라이브를 사용하고 있다고 알려줍니다.

LUKS FAQ는 LUKS 파티션의 정렬이 1MB임을 나타냅니다. 질문 6.12 및 6.13은 이에 대해 자세히 설명하고 LUKS 파티션 헤더를 더 크게 만드는 방법에 대한 조언을 제공합니다. 그러나 ZFS 파일 시스템이 4K 경계에 만들어 질만큼 충분히 크게 만들 수 있는지는 확실하지 않습니다. 이것이 당신이 해결해야 할 문제라면 이것이 어떻게 당신에게 잘 맞는지 듣고 싶습니다. 2TB 드라이브를 사용하고 있으므로이 문제가 발생하지 않을 수 있습니다.

물리적 장치가 아닌 장치 매퍼 LUKS 컨테이너에서 작동 할 때 ZFS가 디스크 오류를 인식합니까?

ZFS는 문제없이 디스크를 읽고 쓸 수있는 한 디스크 오류를 인식합니다. ZFS는 블록 스토리지가 필요하며 해당 스토리지의 특성과 출처를 신경 쓰지 않거나 알지 못합니다. 발생하는 모든 읽기, 쓰기 또는 체크섬 오류 만 추적합니다. 기본 저장 장치의 상태를 모니터링하는 것은 사용자의 책임입니다.

ZFS 설명서에는 문제 해결에 관한 섹션 이 있습니다. 손상된 장치 교체 또는 수리 섹션 에는 장애 시나리오 중에 발생할 수있는 사항과 해결 방법이 설명되어 있습니다. 여기서 ZFS가없는 장치와 동일한 작업을 수행합니다. syslog에서 SCSI 드라이버, HBA 또는 HD 컨트롤러 및 / 또는 SMART 모니터링 소프트웨어의 메시지를 확인한 다음 적절하게 조치하십시오.

중복 제거 및 기타 ZFS 기능은 어떻습니까?

기본 ZFS 저장 장치의 암호화 여부에 관계없이 모든 ZFS 기능이 동일하게 작동합니다.

개요

  1. LUKS 암호화 장치의 ZFS가 제대로 작동합니다.
  2. 하드웨어 암호화가있는 경우 하드웨어에서 지원하는 암호화 방법을 사용하는 한 성능이 저하되지 않습니다. cryptsetup benchmark하드웨어에서 가장 잘 작동하는 것을 보는 데 사용 하십시오.
  3. ZFS는 단일 엔티티로 결합 된 RAID 및 파일 시스템으로 생각하십시오. 스토리지 스택에 맞는 위치는 위의 ASCII 다이어그램을 참조하십시오.
  4. ZFS 파일 시스템이 사용하는 각 LUKS 암호화 블록 장치의 잠금을 해제해야합니다.
  5. 지금과 같은 방식으로 스토리지 하드웨어의 상태를 모니터링하십시오.
  6. 4K 블록이있는 드라이브를 사용하는 경우 파일 시스템의 블록 정렬에 유의하십시오. 허용 가능한 속도에 필요한 정렬을 얻기 위해 luksformat 옵션 또는 기타 설정을 실험해야 할 수도 있습니다.

답변

대체 구현은 ZVOL 블록 장치 ( http://zfsonlinux.org/example-zvol.html ) 를 작성하고 LUKS를 사용하여 새로 작성된 ZVOL을 암호화 한 다음 암호화 된 블록 위에 ext4 (또는 기타) 파일 시스템을 작성하는 것입니다. 장치.


답변