Lưu trữ một máy chủ ZFS như một khách ảo


23

Tôi vẫn chưa quen với ZFS. Tôi đã sử dụng Nexenta nhưng tôi đang nghĩ đến việc chuyển sang OpenIndiana hoặc Solaris 11 Express. Ngay bây giờ, tôi đang xem xét ảo hóa máy chủ ZFS với tư cách là khách trong ESXi, Hyper-V hoặc XenServer (Tôi chưa quyết định cái nào - Tôi nghiêng về ESXi để hỗ trợ VMDirectPath và FreeBSD).

Lý do chính là dường như tôi có đủ tài nguyên để đi khắp nơi mà tôi có thể dễ dàng có 1-3 máy ảo khác chạy đồng thời. Chủ yếu là Windows Server. Có lẽ máy ảo Linux / BSD cũng vậy. Tôi muốn máy chủ ZFS ảo hóa lưu trữ tất cả dữ liệu cho các máy ảo khác để dữ liệu của chúng có thể được lưu trên các đĩa riêng biệt từ các đĩa ZFS (gắn dưới dạng iscsi hoặc nfs).

Máy chủ hiện có AMD Phenom II với 6 lõi (2 đã mở khóa), 16GB RAM (tối đa hóa) và LSI SAS 1068E HBA với (7) 1TB SATA II được gắn (lập kế hoạch trên RAIDZ2 với dự phòng nóng). Tôi cũng có (4) SSD 32 GB SATA II gắn vào bo mạch chủ. Tôi hy vọng sẽ phản chiếu hai trong số các ổ SSD thành một máy nhân bản khởi động (cho máy chủ ảo) và để lại hai ổ SSD còn lại cho ZIL và L2ARC (cho khách ZFS VM). Tôi sẵn sàng thêm hai đĩa nữa để lưu trữ máy khách VM và phân bổ tất cả bảy đĩa hiện tại dưới dạng lưu trữ ZFS. Lưu ý: Bo mạch chủ không có hỗ trợ IOMMU vì 880G không hỗ trợ nó, nhưng tôi có bảng 890FX có IOMMU nếu nó tạo ra sự khác biệt lớn.

Câu hỏi của tôi là:

1) Có phải là khôn ngoan để làm điều này? Tôi không thấy bất kỳ nhược điểm rõ ràng nào (điều này khiến tôi tự hỏi tại sao không có ai khác đề cập đến nó). Tôi cảm thấy mình có thể thực hiện một cuộc giám sát lớn và tôi ghét phải cam kết với điều này, chuyển qua tất cả dữ liệu của tôi chỉ để đi qua một vài chi tiết mà tôi đã bỏ lỡ.

2) Hiệu suất khách ảo ZFS? Tôi sẵn sàng thực hiện một cú đánh hiệu suất nhỏ nhưng tôi nghĩ nếu máy khách VM có quyền truy cập đĩa đầy đủ vào các đĩa thì ít nhất, hiệu năng I / O của đĩa sẽ không đáng kể (so với việc chạy ZFS không ảo hóa) . Bất cứ ai cũng có thể nói điều này từ kinh nghiệm lưu trữ máy chủ ZFS với tư cách là khách VM?


Bạn nói rằng bạn muốn lưu trữ dữ liệu cho tất cả các VM khác. Bạn có thấy mình muốn lặp lại ở một số điểm? Nếu vậy, điều này thực sự nên có trên máy của chính nó, vì sự trùng lặp rất tốn bộ nhớ. Tại sao không xem xét một cái gì đó như SmartOS cho nhu cầu ZFS của bạn? Bằng cách đó bạn cũng có được một siêu giám sát.
devicenull

Tôi đã nghĩ về khoản khấu trừ nhưng trước mắt, không, tôi không muốn sử dụng nó. Tôi sẽ điều tra SmartOS. Tôi chưa nghe về nó vì vậy tôi sẽ kiểm tra xem.
osij2is

Câu trả lời:


38

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 zpoolnhị 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.

nhập mô tả hình ảnh ở đâ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.


nhập mô tả hình ảnh ở đây

Dưới đây là kết quả của bonnie ++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ù) nhập mô tả hình ảnh ở đây

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 .

+1. Cảm ơn tất cả các thông tin! Để trả lời câu hỏi của bạn, tôi đang làm điều này vì một vài lý do. Tôi chủ yếu làm điều này để tận dụng các lõi CPU khác để tạo một hoặc hai VM khác (không thực hiện ZFS) và để cung cấp mục tiêu iSCSI cho máy chủ ảo Opteron của tôi. Lý do của tôi cho ZFS là (không theo thứ tự cụ thể) nén và bảo mật & sao chép dữ liệu. Dedupe trông rất tuyệt, nhưng về tài nguyên và dữ liệu của tôi, tôi không chắc có cần thiết không. Tôi đang sử dụng Nexenta ngay bây giờ nhưng tôi đang cân nhắc chuyển sang Solaris Express hoặc OpenIndiana nếu tôi tiếp tục chồng chất lên các đĩa để vượt quá giới hạn 18TB.
osij2is

Vì vậy, tôi hiểu nhận xét của bạn về việc nên sử dụng SSD cho L2ARC hay ZIL và tôi sẵn sàng làm điều đó. Trước tiên hãy xem hiệu suất, THEN xác định xem có nên thêm ZIL và / hoặc ARC không. Đối với phản ánh vs RAIDZ, sau khi đọc bình luận của bạn và đọc bài viết trên blog này ( constantin.glez.de/blog/2010/01/... ) Tôi đoán mirroring nắm giữ một lợi thế cạnh nhẹ. Tôi không thực sự cần dung lượng đĩa nhưng nếu tôi có thể có một số khả năng đọc / ghi nhanh, tôi nghĩ tôi sẽ chuyển sang đó. Bất cứ không gian lưu trữ nào tôi có thể tìm ra thực sự sẽ không có giá trị.
osij2is

Thêm vào đó, hãy nhớ rằng nén là hữu ích. Tôi trả tiền cho Nexenta thương mại cho các hệ thống máy khách và bất cứ thứ gì lớn hơn 18TB. Nhưng những lời khuyên tương tự áp dụng cho OpenIndiana.
ewwhite

Bạn đang sử dụng một vnic E1000 hay vnic VMXNet3 cho mạng NFS? Bởi vì tôi chỉ nhận được 1gbps giữa Nexenta / Solaris và VMware bằng cách sử dụng một thiết lập tương tự và không thể tìm ra cách để có thêm tốc độ. Phiên bản nào của NexentaStor? Tôi nghi ngờ phiên bản hiện tại họ có sẵn đã bị hỏng ...
Josh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.