Tôi đã xây dựng một số thiết lập lưu trữ ZFS "tất cả trong một" này. Ban đầu lấy cảm hứng từ các bài đăng xuất sắc tại Ubiquitous Talk , giải pháp của tôi có một cách tiếp cận hơi khác với thiết kế phần cứng, nhưng mang lại kết quả của việc lưu trữ ZFS ảo hóa được đóng gói.
Để trả lời câu hỏi của bạn:
Xác định xem đây có phải là một cách tiếp cận khôn ngoan thực sự phụ thuộc vào mục tiêu của bạn. Bạn đang cố gắng để thực hiện? Nếu bạn có một công nghệ (ZFS) và đang tìm kiếm một ứng dụng cho nó, thì đây là một ý tưởng tồi. Tốt hơn hết là bạn nên sử dụng bộ điều khiển RAID phần cứng phù hợp và chạy VM trên phân vùng VMFS cục bộ. Đó là con đường ít kháng cự nhất. Tuy nhiên, nếu bạn có một lý do cụ thể cho việc muốn sử dụng ZFS (sao chép, nén, bảo mật dữ liệu, tính di động, v.v.), thì điều này hoàn toàn có thể nếu bạn sẵn sàng nỗ lực.
Hiệu suất phụ thuộc rất nhiều vào thiết kế của bạn bất kể bạn đang chạy trên kim loại trần hay ảo. Sử dụng PCI-passthrough (hoặc AMD IOMMU trong trường hợp của bạn) là điều cần thiết, vì bạn sẽ cung cấp quyền truy cập trực tiếp VM ZFS vào bộ điều khiển lưu trữ và đĩa của SAS. Miễn là VM của bạn được phân bổ một lượng tài nguyên RAM và CPU thích hợp, hiệu năng gần như nguyên gốc. Tất nhiên, thiết kế hồ bơi của bạn có vấn đề. Vui lòng xem xét các gương so với RAID Z2. ZFS chia tỷ lệ trên vdevs chứ không phải số lượng đĩa .
Nền tảng của tôi là VMWare ESXi 5 và hệ điều hành có khả năng ZFS ưa thích của tôi là NexentaStor Community Edition .
Đây là máy chủ nhà của tôi . Đó là HP ProLiant DL370 G6 chạy ESXi với thẻ SD bên trong. Hai đĩa 72GB được nhân đôi ở trung tâm được liên kết với bộ điều khiển RAID Smart Array P410 bên trong và tạo thành một khối VMFS. Khối lượng đó chứa một máy ảo NexentaStor. Hãy nhớ rằng máy ảo ZFS cần phải sống ở đâu đó trên bộ nhớ ổn định.
Có một bộ điều khiển SAS LSI 9211-8i được kết nối với lồng ổ đĩa chứa sáu đĩa SATA 1TB ở bên phải. Nó được truyền qua máy ảo NexentaStor, cho phép Nexenta xem các đĩa dưới dạng thiết lập RAID 1 + 0. Các ổ đĩa là các ổ WD10EARS Western Digital Green Green được căn chỉnh đúng với một zpool
nhị phân được sửa đổi .
Tôi không sử dụng thiết bị ZIL hoặc bất kỳ bộ đệm L2ARC nào trong cài đặt này.
VM có 6GB RAM và 2 vCPU được phân bổ. Trong ESXi, nếu bạn sử dụng thông qua PCI, việc đặt trước bộ nhớ cho toàn bộ lượng RAM được chỉ định của VM sẽ được tạo.
Tôi cung cấp cho NexentaStor VM hai giao diện mạng. Một là cho quản lý lưu lượng. Phần còn lại là một phần của vSwitch riêng biệt và có giao diện vmkernel (không có đường lên bên ngoài). Điều này cho phép VM cung cấp lưu trữ NFS có thể gắn kết bởi ESXi thông qua mạng riêng. Bạn có thể dễ dàng thêm giao diện đường lên để cung cấp quyền truy cập vào máy chủ bên ngoài.
Cài đặt máy ảo mới của bạn trên kho dữ liệu xuất khẩu ZFS. Đảm bảo đặt các tham số "Khởi động / Tắt máy ảo" trong ESXi. Bạn muốn VM lưu trữ khởi động trước các hệ thống khách và tắt lần cuối.
Dưới đây là kết quả của bonnie ++ và iozone khi chạy trực tiếp trên NexentaStor VM. Quá trình nén ZFS bị tắt để thử nghiệm hiển thị các số có thể tin cậy hơn, nhưng trong thực tế, luôn luôn phải nén nén ZFS (không phải gzip) .
# 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
Đây là biểu đồ DTrace của NexentaStor hiển thị IOPS của VM lưu trữ và tốc độ truyền trong quá trình chạy thử. 4000 IOPS và 400+ Megabyte / giây là khá hợp lý cho các đĩa cấp thấp như vậy. (kích thước khối lớn, mặc dù)
Ghi chú khác.
- Bạn sẽ muốn kiểm tra ổ SSD của mình để xem liệu chúng có thể được trình bày trực tiếp với VM hay không nếu DirectPath chọn toàn bộ bộ điều khiển bo mạch chủ.
- Bạn không có nhiều năng lượng CPU, vì vậy hãy giới hạn đơn vị lưu trữ ở mức 2 vCPU.
- Không sử dụng RAIDZ1 / Z2 / Z3 trừ khi bạn thực sự cần dung lượng đĩa.
- Đừng sử dụng sự trùng lặp. Nén là miễn phí và rất hữu ích cho máy ảo. Sự trùng lặp sẽ đòi hỏi nhiều RAM + L2ARC hơn để có hiệu quả.
- Bắt đầu mà không cần SSD và thêm chúng nếu cần thiết. Một số khối lượng công việc nhất định không đạt ZIL hoặc L2ARC .
- NexentaStor là một gói hoàn chỉnh. Có một lợi ích khi có một GUI quản lý vững chắc, tuy nhiên, tôi cũng đã nghe nói về thành công với Napp-It .