이 "올인원"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 의 성공에 대해서도 들었습니다 .