ZFS 서버를 가상 게스트로 호스팅


23

아직 ZFS를 처음 사용합니다. Nexenta를 사용하고 있지만 OpenIndiana 또는 Solaris 11 Express로 전환하려고합니다. 지금은 ESXi, Hyper-V 또는 XenServer 내에서 게스트로 ZFS 서버를 가상화하는 것을 고려하고 있습니다 (아직 어느 것을 결정하지 않았습니다-VMDirectPath 및 FreeBSD 지원을 위해 ESXi에 기울고 있습니다).

1 ~ 3 개의 다른 VM을 동시에 실행할 수 있기에 충분한 리소스가있는 것 같습니다. 주로 Windows Server입니다. Linux / BSD VM도 가능합니다. 가상화 된 ZFS 서버가 다른 VM에 대한 모든 데이터를 호스팅하여 ZFS 디스크 (iscsi 또는 nfs로 마운트)와 물리적으로 별도의 디스크에 데이터를 보관할 수 있기를 원합니다.

서버에는 현재 총 6 개의 코어 (2 개의 잠금 해제 됨), 16GB RAM (최대) 및 1TB SATA II 디스크 7 개 (핫 스페어가있는 RAIDZ2 계획)가있는 LSI SAS 1068E HBA가있는 AMD Phenom II가 있습니다. 또한 마더 보드에 4 개의 32GB SATA II SSD가 연결되어 있습니다. SSD 2 개를 부트 미러 (가상 호스트 용)에 미러링하고 다른 2 개 SSD는 ZIL 및 L2ARC (ZFS VM 게스트 용)로 남겨두고 싶습니다. VM 게스트를 저장하고 현재 디스크 7 개를 모두 ZFS 저장소로 할당하기 위해 디스크를 두 개 더 추가하겠습니다. 참고 : 880G는 지원 하지 않기 때문에 메인 보드는 IOMMU를 지원하지 않지만, 큰 차이가있을 경우 IOMMU가있는 890FX 보드가 있습니다.

내 질문은 :

1) 이것을하는 것이 현명한가? 분명히 단점이 보이지 않습니다 (왜 다른 사람이 언급하지 않았는지 궁금해합니다). 나는 엄청난 감독을 할 수 있다고 생각하고 이것을 저지르는 것을 싫어하고 모든 데이터를 옮겨서 놓친 세부 사항에서 fubar로 이동합니다.

2) ZFS 가상 게스트 성능? 약간의 성능 저하를 감수 할 의향이 있지만 VM 게스트가 디스크에 대한 전체 디스크 액세스 권한을 가지고 있다면 최소한 디스크 I / O 성능을 무시할 수있을 것이라고 생각합니다 (ZFS 비 가상화 실행에 비해). . 누구나 ZFS 서버를 VM 게스트로 호스팅 한 경험을 통해이를 말할 수 있습니까?


다른 모든 VM에 대한 데이터를 호스팅한다고 가정합니다. 어느 시점에서 중복 제거를 원하십니까? 그렇다면 중복 제거는 메모리를 많이 사용하므로 실제로 자체 시스템에 있어야합니다. ZFS 요구에 맞는 SmartOS를 보시겠습니까? 그렇게하면 하이퍼 바이저도 얻을 수 있습니다.
devicenull 2016 년

중복 제거에 대해 생각했지만 당분간은 사용하지 않을 것입니다. SmartOS를 조사하겠습니다. 들어 본 적이 없으므로 확인해 보겠습니다.
osij2

답변:


38

이 "올인원"ZFS 스토리지 설정을 많이 만들었습니다. Ubiquitous Talk 의 우수한 게시물에서 처음 영감을 얻은 솔루션은 하드웨어 디자인에 약간 다른 접근 방식을 취하지 만 캡슐화 된 가상화 ZFS 스토리지의 결과를 산출합니다.

질문에 대답하려면 :

  • 이것이 현명한 접근법인지 결정하는 것은 실제로 목표에 달려 있습니다. 무엇을 이루려고 노력하고 있습니까? 기술 (ZFS)이 있고 해당 응용 프로그램을 검색하는 경우 이는 나쁜 생각입니다. 적절한 하드웨어 RAID 컨트롤러를 사용하고 로컬 VMFS 파티션에서 VM을 실행하는 것이 좋습니다. 저항이 가장 적은 경로입니다. 그러나 ZFS (복제, 압축, 데이터 보안, 이식성 등)를 사용하려는 특별한 이유가 있다면, 노력을 기울일 수 있다면 분명히 가능합니다.

  • 베어 메탈이든 가상이든 관계없이 성능은 디자인에 크게 좌우됩니다. 사용하여 PCI-통과 하면 SAS 스토리지 컨트롤러와 디스크로 ZFS VM에 직접 액세스를 제공하는 것 같은 (귀하의 경우 또는 AMD IOMMU)이 필수적이다. VM에 적절한 양의 RAM 및 CPU 리소스가 할당되어 있으면 성능이 거의 없습니다. 물론 수영장 디자인이 중요합니다. 미러와 RAID Z2를 고려하십시오. ZFS 는 디스크 수가 아닌 vdev에 걸쳐 확장됩니다 .


내 플랫폼은 VMWare ESXi 5 이고 선호하는 ZFS 가능 운영 체제는 NexentaStor Community Edition 입니다.

이것은 내 서버 입니다. 내장 SD 카드 인 ESXi fron을 실행 하는 HP ProLiant DL370 G6 입니다. 중앙에있는 2 개의 미러링 된 72GB 디스크는 내부 Smart Array P410 RAID 컨트롤러에 연결되어 VMFS 볼륨을 형성합니다. 이 볼륨에는 NexentaStor VM이 있습니다. ZFS 가상 머신 은 안정적인 스토리지의 어딘가에 있어야합니다 .

LSI 9211-8i SAS 컨트롤러 우측 드라이브 케이스 하우징 여섯 1TB SATA 디스크에 연결됨. NexentaStor 가상 머신으로 전달되어 Nexenta가 디스크를 RAID 1 + 0 설정으로 볼 수 있습니다. 디스크는 el-cheapo Western Digital Green WD10EARS 드라이브 이며 수정 된 바이너리 와 올바르게 정렬됩니다zpool .

이 설치에서 ZIL 장치 또는 L2ARC 캐시를 사용하고 있지 않습니다.

여기에 이미지 설명을 입력하십시오

VM에는 6GB의 RAM과 2 개의 vCPU가 할당되어 있습니다. ESXi에서 PCI 패스 스루를 사용하는 경우 VM에 할당 된 전체 RAM에 대한 메모리 예약이 생성됩니다.

NexentaStor VM에 두 개의 네트워크 인터페이스를 제공합니다. 하나는 관리 트래픽을위한 것입니다. 다른 하나는 별도의 vSwitch의 일부이며 vmkernel 인터페이스 (외부 업 링크 없음)가 있습니다. 이를 통해 VM은 개인 네트워크를 통해 ESXi에서 마운트 할 수있는 NFS 스토리지를 제공 할 수 있습니다. 업 링크 인터페이스를 쉽게 추가하여 외부 호스트에 액세스 할 수 있습니다.

ZFS에서 내 보낸 데이터 저장소에 새 VM을 설치하십시오. ESXi에서 "가상 머신 시작 / 종료"매개 변수를 설정해야합니다. 스토리지 시스템을 게스트 시스템 전에 부팅하고 마지막으로 종료하려고합니다.


여기에 이미지 설명을 입력하십시오

다음은 NexentaStor VM에서 직접 실행 한 보니 ++iozone 결과입니다. 테스트에서 더 관련성 높은 숫자를 표시하려면 ZFS 압축이 해제되어 있지만 실제로는 gzip이 아닌 ZFS 기본 압축이 항상 활성화되어 있어야합니다 .

# bonnie++ -u root -n 64:100000:16:64

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
saint           12G   156  98 206597  26 135609  24   410  97 367498  21  1478  17
Latency               280ms    3177ms    1019ms     163ms     180ms     225ms
Version  1.96       ------Sequential Create------ --------Random Create--------
saint               -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
    64:100000:16/64  6585  60 58754 100 32272  79  9827  58 38709 100 27189  80
Latency              1032ms     469us    1080us     101ms     375us   16108us

# iozone -t1 -i0 -i1 -i2 -r1m -s12g

    Iozone: Performance Test of File I/O

    Run began: Wed Jun 13 22:36:14 2012

    Record Size 1024 KB
    File size set to 12582912 KB
    Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s12g
    Output is in Kbytes/sec
    Time Resolution = 0.000001 seconds.
    Throughput test with 1 process
    Each process writes a 12582912 Kbyte file in 1024 Kbyte records

    Children see throughput for  1 initial writers  =  234459.41 KB/sec
    Children see throughput for  1 rewriters        =  235029.34 KB/sec
    Children see throughput for  1 readers          =  359297.38 KB/sec
    Children see throughput for 1 re-readers        =  359821.19 KB/sec
    Children see throughput for 1 random readers    =   57756.71 KB/sec
    Children see throughput for 1 random writers    =  232716.19 KB/sec

테스트 실행 중 스토리지 VM의 IOPS 및 전송 속도를 보여주는 NexentaStor DTrace 그래프입니다. 4000 IOPS 및 400+ 메가 바이트 / 초는 이러한 로우 엔드 디스크에 매우 합리적입니다. (그러나 큰 블록 크기) 여기에 이미지 설명을 입력하십시오

다른 메모.

  • SSD를 테스트하여 VM에 직접 제공 할 수 있는지 또는 DirectPath가 전체 마더 보드 컨트롤러를 선택하는지 확인해야합니다.
  • CPU 전원이 충분하지 않으므로 스토리지 장치를 2 개의 vCPU로 제한하십시오.
  • 실제로 디스크 공간이 필요하지 않으면 RAIDZ1 / Z2 / Z3을 사용하지 마십시오.
  • 중복 제거를 사용하지 마십시오. 압축은 무료이며 VM에 매우 유용합니다. 중복 제거를 위해서는 더 많은 RAM + L2ARC가 필요합니다.
  • SSD없이 시작하여 필요한 경우 추가하십시오. 특정 워크로드 가 ZIL 또는 L2ARC에 미치지 않습니다 .
  • NexentaStor는 완전한 패키지입니다. 견고한 관리 GUI를 사용하면 이점이 있지만 Napp-It 의 성공에 대해서도 들었습니다 .

+1. 모든 정보에 감사드립니다! 귀하의 질문에 대답하기 위해 몇 가지 이유로이 작업을 수행하고 있습니다. 저는 다른 CPU 코어를 활용하여 하나 또는 두 개의 다른 VM (ZFS를 수행하지 않음)을 만들고 iSCSI 대상을 Opteron 가상 서버에 제공하기 위해이 작업을 수행하고 있습니다. ZFS에 대한 나의 이유는 압축 및 데이터 보안 및 복제 (특별한 순서는 아님)입니다. 중복 제거는 매우 멋져 보이지만 리소스와 데이터 측면에서 필요한지 확실하지 않습니다. 지금 Nexenta를 사용하고 있지만 디스크에 18TB 제한을 초과하여 계속 쌓을 경우 Solaris Express 또는 OpenIndiana로 전환하는 것을 고려하고있었습니다.
osij2은

따라서 L2ARC 또는 ZIL에 SSD를 사용할지 여부에 대한 귀하의 의견을 이해하며 기꺼이 그렇게하겠습니다. 먼저 성능을 확인한 다음 ZIL 및 / 또는 ARC를 추가할지 여부를 결정하십시오. 미러링 대 RAIDZ에 대해서는 귀하의 의견을 읽고이 블로그 게시물 ( constantin.glez.de/blog/2010/01/… )을 읽은 후에 미러링이 약간의 우위를 차지한다고 생각합니다. 실제로 디스크 공간이 필요하지 않지만 중복성 및 빠른 읽기 / 쓰기 기능을 사용할 수 있으면이를 전환 할 것입니다. 내가 찾아 낼 수있는 스토리지 공간이 무엇이든 그만한 가치가 없습니다.
osij2은

또한 압축이 유용하다는 것을 기억하십시오. 나는 클라이언트 시스템 및 18TB보다 큰 모든 것을 위해 상업용 Nexenta를 지불합니다. 그러나 동일한 팁이 OpenIndiana에도 적용됩니다.
ewwhite

NFS 네트워크에 E1000 vnic 또는 VMXNet3 vnic을 사용하고 있습니까? 때문에 난 단지 Nexenta / 솔라리스와 VM웨어 사이 1Gbps의 받고 있어요 비슷한 설정을 사용하여 더욱 속도를 얻는 방법을 알아낼 수 없습니다. NexentaStor의 버전은 무엇입니까? 현재 사용 가능한 버전이 손상된 것 같습니다 ...
Josh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.