ZFS 호스트에서 VM을 실행하면 성능에 어떤 영향을 미칩니 까?


11

Linux에서 ZFS를 사용하여 데비안 Linux 호스트의 데이터 저장을 위해 ext3에서 ZFS로 마이그레이션하는 것을 고려하고 있습니다. ZFS의 가장 중요한 기능 중 하나는 데이터 무결성을 보장하는 것입니다. 스토리지 요구가 증가함에 따라 스토리지를 사소하게 확장 할 수있는 기능도 기대됩니다.

그러나 동일한 호스트에서 몇 개의 VM을 실행하기도합니다. (일반적으로 제 경우에는 한 번에 하나의 VM 만 호스트에서 실행되고 있습니다.)

ZFS의 데이터 체크섬 및 기록 중 복사 동작을 고려할 때 VM 디스크 이미지가 비교적 큰 파일 (내 기본 VM의 디스크 이미지 파일이 현재 31GB에 있음)과 함께 VM 게스트 내부의 성능에 미치는 영향 이주? 부정적인 성능 영향을 줄이려면 어떤 단계를 수행해야합니까?

필요한 경우 VM 디스크 이미지에 대해 데이터 무결성 보장을 줄이면서 살 수 있으며 (VM에서 실제로 중요한 작업을 수행하지 않음) 나머지 파일 시스템과 쉽게 분리 할 수 ​​있지만 그렇지 않으면 좋을 것입니다 다른 파일 시스템으로 마이그레이션하려는 대부분의 기능을 선택적으로 해제 할 필요는 없습니다.

이 하드웨어는 워크 스테이션 급 시스템에는 매우 강력하지만 고급 서버에는 거의 영향을 미치지 않습니다 (32GB RAM은 거의 10GB 이상 사용, 6 코어 3.3GHz CPU, 현재 2.6TB 사용 가능) 디스크 공간 df과 총 약 1.1TB의 여유 공간; ZFS로 마이그레이션하면 여유 공간이 더 늘어날 것입니다. ) 데이터 중복 제거를 실행하지 않을 계획입니다. 계획은 JBOD 구성으로 시작하는 것입니다 (당연히 좋은 백업으로) 그러나 조건이 필요한 경우 결국 양방향 미러 설정으로 이동할 수 있습니다.


또한 ZFS는 IOPS 측면에서 기존 RAID5보다 성능이 우수합니다 . RAIDZ 쓰기는 기존 RAID5 / 6을 괴롭히는 I / O 성능 불이익을받지 않기 때문에 단일 디스크 속도로 수행됩니다.
Stefan Lasiewski

1
귀하의 통찰력에 답변 해 주신 모든 분들께 감사드립니다 ! 나중에이 질문으로 다시 올게요.
CVn

스테판의 의견은 .. 글쎄요. ZFS RAIDZ 성능은 기존 RAID5 어레이보다 IOPS 관점 (일반적으로 VM에서 문제가있는 것)에서 훨씬 나쁩니다. ZFS로 이동하여 쓰기 성능이 향상되지 않는다고 가정하십시오. 거의 그렇지 않습니다. 읽기 성능은 ARC에 사용 가능한 RAM과 작업 세트 크기 및 델타에 따라 다릅니다. 일반적으로 VM의 경우 ZFS ARC는 대안에 비해 전반적인 읽기 성능을 향상시킵니다. 쓰기는 보통 미러에서도 항상 raidz를 사용합니다.
Nex7

@ Nex7 ZFS에서 RAID를 사용하지 않고 mdraid에서 제공하는 스토리지 장치를 하나만 사용하여 쓰는 방법은 무엇입니까? 멋진 RAID 항목이 사용되지 않기 때문에 ZFS는 다른 파일 시스템과 비교할 수 있습니까?
Thorsten Schöning

답변:


4

ZFS는 블록 수준에서 작동하므로 파일 크기에 차이가 없습니다. ZFS에는 더 많은 메모리와 CPU가 필요하지만 파일 시스템만큼 본질적으로 느리지는 않습니다. RAIDZ는 RAID5와 속도가 동일하지 않습니다. 속도가 최우선 순위 인 RAID10은 좋습니다.


4

알맞은 (즉, 버프) 하드웨어의 ZFS는 다른 파일 시스템보다 빠를 수 있으므로 빠른 (예 : SSD) 위치에 ZIL을 만들려고 할 수 있습니다. 이것은 본질적으로 쓰기를 캐시하는 위치입니다 (ext3 / 4의 저널과 비슷합니다). 이를 통해 실제 스핀들이 데이터를 갖기 전에 box ack가 디스크에 기록 된 것으로 기록 할 수 있습니다.

읽기 캐시를 위해 SSD에서 L2 ARC를 생성 할 수도 있습니다. 여러 개의 VM을 동시에 부팅하여 물리적 디스크를 무릎에 넣을 수있는 VM 환경에서는 환상적입니다.

드라이브는 VDEV로, VDEV는 zpool로 이동합니다 (한 번에 전체 디스크를 사용하십시오). 이것이 더 작은 시스템 인 경우 단일 zpool과 (데이터 손실에 대해 너무 걱정하지 않는 경우) 단일 VDEV를 원할 수 있습니다. VDEV는 RAID 레벨을 선택하는 곳입니다 (디스크가 충분하면 미러 VDEV도 가능). VDEV에서 가장 느린 디스크는 전체 VDEV의 속도를 결정합니다.

ZFS는 데이터 무결성에 관한 것입니다. 파일 시스템 유지 관리를위한 많은 기존 도구 (예 : fsck)가 존재하지 않는 이유는 ZFS 파일 시스템에 존재할 수없는 문제입니다.

ZFS의 IMO의 가장 큰 단점은 파일 시스템이 가득 찬 경우 (75 % 이상) 매우 느리다는 것입니다. 거기 가지 마


2

31GB는 실제로 크지 않습니다 ...

어쨌든, 현재 사용중인 파일 시스템에 따라 ZFS가 약간 느릴 수 있지만 하드웨어 사양에 따라 무시할 수 있습니다.

분명히 ZFS는 캐싱을 위해 좋은 RAM 덩어리를 사용하여 VM을 일반적으로 사용하는 것처럼 '더 딱딱한'것처럼 보일 수 있습니다 (읽거나 쓰지 않을 때). ZFS가 Linux에서 어떻게 조정되는지 잘 모르겠지만 가능한 경우 모든 RAM으로 실행 중지하기 위해 ARC를 제한해야 할 수도 있습니다 (호스트 시스템 및 VM).

나는 압축을 가능하게 할 것입니다. 파일 시스템에 데이터를 넣기 전에이 작업을 수행 해야 합니다. 대부분의 사람들은 압축 알고리즘이 일반적으로 디스크 IO보다 빠르게 실행되므로 실제로 더 빠른 것으로 알고 놀랐습니다. 6 코어 프로세서에서 많은 성능 문제가 발생할 것으로 의심됩니다. VM이 압축을 많이 기대하지는 않았지만 기본 압축 설정으로 ~ 470GB의 VM 데이터를 304GB로 전환 할 수있었습니다.

중복 제거에 신경 쓰지 마십시오. 나중에 다시 귀찮게 될 것이며 데이터를 제거하는 데 몇 주를 소비 할 것입니다.

성능 문제가 발생하면 SSD를 ZIL / L2ARC 또는 둘 다로 추가하는 것이 분명합니다. 두 장치 모두에 하나의 장치를 사용하는 것은 이상적이지 않지만 적은 수의 디스크 / vdev가 포함 된 풀에서 성능을 향상시킬 가능성이 높습니다.

추가 : 가능하면 (이상적으로는 미러) 중복 구성으로 시작하거나 가능한 한 빨리 스트라이프에서 미러로 변환하려고합니다. ZFS는 모든 데이터를 체크섬하고 즉시 (또는 스크럽 중) 오류를 감지하지만 데이터에 대해 아무 것도 할 수 없습니다 (사본 = 2를 사용하지 않으면 디스크 사용이 두 배로 증가 함). 파일에 파일을 삭제하고 다시 만들지 않고도 많은 작업을 수행 할 수없는 파일 (아마도 VM 디스크 이미지)에 오류가 있음을 알리는 메시지가 표시됩니다.


"파일에 오류가 있음을 알려주는 것만 남게 될 것입니다 ... 많은 것을 할 수 없을 것입니다." 좋은 의견입니다. 감사합니다. 즉, 야간 백업이 들어오는 곳입니다. 그것이 저와 자동 데이터 손상 사이에 아무것도 없기 때문에 ZFS가 파일이나 파일의 일부를 읽지 않기를 거부하더라도 ( ) 백업 은 데이터 무결성 보장 이 크게 향상되었습니다.
CVn

파일 크기의 경우 아니요, 31GB는 객관적으로 거대하지는 않지만 (전체 시스템 스토리지 용량의 ~ 1.2 %이지만) COW가 시스템을 통해 모든 데이터를 복사한다는 우려가 더 커졌습니다. 앞뒤로 계속해서, 오해 JamesRyan 빨리 수정할 수 있음 .
CVn

1

사용 사례 및 VM에 따라 다음을 고려할 것입니다. 호스트 운영 체제가 ZFS 볼륨에 저장중인 파일을 처리하게하십시오.

가능하면 운영 체제 및 필요한 이진 파일 만 포함하는 모든 VM에 대해 LUN 만 생성하십시오. 또한 NFS, samba 또는 iSCSI (또는 의견에서 언급 한 zvols)를 통한 공유로 개별 데이터의 저장소 공간을 제공합니다. ZFS는 체크섬으로 모든 파일을 추적하고 액세스 시간을 단축 할 수 있습니다. 물론 속도가 그렇게 중요하지 않은 경우 일부 데이터 스토어에서 압축을 활성화 할 수도 있습니다. 다른 파일 시스템의 레이어가 누락되어 이점이 있습니다. 두 번째 가상 하드 드라이브 용 LUN을 만들고 그 위에 NTFS 파일 시스템을 만들면 ZFS는 큰 이진 얼룩을 처리해야하며 내용이나 파일을 알 수 없으므로 ZIL 또는 ARC 캐시를 활용할 수 없습니다. 비행기 파일과 같은 방식으로

ACL을 언급하면 ​​ZFS는 NFSv4 또는 Samba (활성화 된 경우)를 통해 ACL을 사용할 수 있습니다. FreeBSD에서 ZFS를 사용하고 있으며 Zbas 볼륨에 Sambas ACL을 메이트하는 방법을 보장 할 수 없습니다. 그러나 나는 이것이 큰 문제가되어서는 안된다고 확신합니다.

읽기 캐시와 결합 된 중복 제거는 모든 VM이 동일한 블록을 읽기 시작할 때 일부 공간을 절약하고 대량 읽기 (부팅 스톰)를 개선 할 때 큰 이점입니다.

VM 및 데이터 저장소의 ZFS 스냅 샷도 마찬가지입니다. 간단한 셸 스크립트를 생성하여 VM을 고정하고 VM 및 데이터 스토어의 스냅 샷을 생성 한 후 작업을 계속하거나 데이터 스토어 만 단독으로 수행하고 VM을 복제하여 원래 스크립트의 스냅 샷을 제공하고 몇 가지 테스트를 수행 할 수 있습니다.

가능성은 ZFS로 끝이 없습니다.)

편집 : 희망적으로 나는 지금 조금 더 잘 설명했다

EDIT2 : 개인 의견 : 이중 디스크 오류를 견딜 수있는 RAIDZ2 (RAID6) 사용을 고려하십시오! 하나의 여분의 예비 디스크가 남아있는 경우에는 절대로 잘못되지 않지만 두 번의 디스크 장애로도 빠른 복구가 가능합니다. 디스크 상태를 모니터링하는 스크립트를 여기에 게시 했습니다.


확실하지 않습니다. VM에서 사용하는 파일을 디스크 이미지가 아닌 ZFS 파일 시스템의 별도 파일로 저장해야한다고 말씀하십니까? 파티션, 부팅 섹터, ZFS가 모르는 속성, Linux 컨텍스트의 Windows ACL 등은 어떻습니까? 나는 당신을 오해하고 있거나 당신이 내가 요구하는 것 이외의 것에 대답하고 있습니다. 스토리지 성능 문제를 해결하는 방법을 명확히하기 위해 질문을 다시 읽고 답변을 편집 할 수 있습니까?
CVn

스냅 샷 관련 : 실제로 VM을 고정하지 않아도됩니다. ZFS는 COW (Copy-On-Write)를 사용합니다. 즉, 스냅 샷은 즉각적이며 완전한 디스크 이미지를 제공합니다. 일부 관리자는 데이터베이스를 정지시키지 않고 MySQL 및 PostGRES 데이터베이스에이를 사용합니다 (예 : 다운 타임 없음). VM을 고정해야하는 경우 ZFS 스냅 샷을 만드는 데 몇 초 밖에 걸리지 않습니다.
Stefan Lasiewski

Michael Daywalker는 블록 장치처럼 작동하는 파일을 만들 수있는 zvols를 참조한다고 생각합니다. VM에 개별 zvol이 아닌 NFS를 사용합니다.이 경우 파일 시스템의 파일이므로 모두 로컬 인 것처럼 보입니다. 예, zvols는 시원 할 수 있지만 추가 합병증입니다. ZFS 스냅 샷은 정의상 일관됩니다. 그렇다고 VM의 OS가 데이터를 디스크로 플러시해야한다는 것을 알고 있지는 않지만 VM의 전원을 잃은 것처럼 동일한 수준의 파일 시스템 일관성을 얻게됩니다.
TheFiddlerWins

Dedup은 리소스를 많이 사용합니다. 압축을 사용하지 않고 VM의 경우 VM 파일 시스템의 공백으로 인해 많은 공간을 확보 할 수 있습니다.
TheFiddlerWins

내 포스트 editet TheFiddlerWins 의견과 스테판 Lasiewski와도 (더 나은 이해를 위해 희망 MichaelKjörling 단지는 @
워커
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.