Ý nghĩa hiệu năng của việc chạy VM trên máy chủ ZFS là gì?


11

Tôi đang xem xét chuyển từ ext3 sang ZFS để lưu trữ dữ liệu trên máy chủ Debian Linux của tôi, sử dụng ZFS trên Linux . Một tính năng giết người của ZFS mà tôi thực sự muốn là đảm bảo tính toàn vẹn dữ liệu của nó. Khả năng tăng dung lượng lưu trữ một cách tầm thường khi nhu cầu lưu trữ của tôi tăng lên cũng là điều tôi mong chờ.

Tuy nhiên, tôi cũng chạy một vài máy ảo trên cùng một máy chủ. (Mặc dù bình thường, trong trường hợp của tôi, chỉ có một VM đang chạy trên máy chủ bất kỳ lúc nào.)

Xem xét hành vi kiểm tra dữ liệu và sao chép dữ liệu của ZFS, cùng với thực tế là hình ảnh đĩa VM là các tệp tương đối lớn (tệp hình ảnh đĩa VM chính của tôi hiện ở mức 31 GB), ý nghĩa về hiệu suất bên trong máy khách VM là gì di cư? Những bước tôi có thể thực hiện để giảm tác động tiêu cực có thể có?

Tôi có thể sống với ít bảo đảm toàn vẹn dữ liệu hơn trên các hình ảnh đĩa VM nếu cần thiết (tôi không làm bất cứ điều gì thực sự quan trọng bên trong bất kỳ máy ảo nào) và có thể dễ dàng tách chúng khỏi phần còn lại của hệ thống tệp, nhưng thật tuyệt nếu tôi không Không phải (thậm chí có chọn lọc) tắt khá nhiều tính năng khiến tôi muốn chuyển sang một hệ thống tệp khác.

Phần cứng khá mạnh đối với hệ thống máy trạm, nhưng sẽ không chứa nhiều nến cho máy chủ cao cấp (RAM 32 GB với mức sử dụng hiếm khi> 10 GB, CPU 6 nhân 3,3 GHz, hiện có thể sử dụng 2,6 TB dung lượng ổ đĩa theo dfvà tổng cộng khoảng 1,1 TB miễn phí, di chuyển sang ZFS có thể sẽ thêm một số dung lượng trống ) và tôi không có kế hoạch chạy sao chép dữ liệu (vì bật tính năng khấu trừ sẽ không thêm nhiều vào tình huống của tôi). Kế hoạch là bắt đầu với cấu hình JBOD (rõ ràng là có bản sao lưu tốt) nhưng cuối cùng tôi có thể chuyển sang thiết lập gương hai chiều nếu có điều kiện.


Cũng nên nhớ rằng ZFS hoạt động tốt hơn RAID5 truyền thống về mặt IOPS . RAIDZ ghi hoạt động ở tốc độ của một đĩa đơn vì nó không phải chịu các hình phạt hiệu năng I / O gây khó khăn cho RAID5 / 6 truyền thống.
Stefan Lasiewski

1
Cảm ơn tất cả những người đã trả lời cho hiểu biết của bạn! Tôi chắc chắn sẽ trở lại câu hỏi này sau.
một CVn

Nhận xét của Stefan là .. tốt, nó chỉ sai. Hiệu suất ZZ RAIDZ kém hơn đáng kể từ góc độ IOPS (những gì bạn thường gặp vấn đề với VM) so với mảng RAID5 truyền thống. Vui lòng không giả sử cải thiện hiệu suất ghi bằng cách chuyển sang ZFS. Nó hiếm khi như vậy. Đọc mức tăng hoàn hảo sẽ phụ thuộc vào RAM có sẵn cho ARC và kích thước và mức cài đặt làm việc của bạn. Thông thường với VM, ZFS ARC kết thúc với hiệu suất đọc tổng thể so với các lựa chọn thay thế. Người viết thường đau khổ, ngay cả trên gương, LUÔN LUÔN với raidz.
Nex7

@ Nex7 Làm thế nào để ghi không có RAID từ ZFS nhưng chỉ có một thiết bị lưu trữ, ví dụ như được cung cấp bởi một số người sợ? ZFS có thực hiện tương đương với các hệ thống tệp khác vì không sử dụng công cụ RAID ưa thích nào không?
Thorsten Schöning

Câu trả lời:


4

Vì ZFS hoạt động ở cấp độ khối, kích thước của các tệp không tạo ra sự khác biệt. ZFS yêu cầu nhiều bộ nhớ và CPU hơn nhưng vốn không chậm hơn đáng kể như một hệ thống tập tin. Mặc dù bạn cần lưu ý rằng RAIDZ không tương đương về tốc độ với RAID5. RAID10 là tốt trong đó tốc độ là một ưu tiên.


4

ZFS trên phần cứng (tức là buff) có thể sẽ nhanh hơn các hệ thống tệp khác, bạn có thể muốn tạo ZIL trên một vị trí nhanh (ví dụ SSD). Đây thực chất là một vị trí để ghi bộ đệm (tốt, giống như một tạp chí trong ext3 / 4). Điều này cho phép hộp ack ghi như được ghi vào đĩa trước khi các trục chính thực sự có dữ liệu.

Bạn cũng có thể tạo L2 ARC trên SSD để đọc bộ đệm. Điều này thật tuyệt vời trong môi trường VM nơi bạn có thể đưa các đĩa vật lý đến đầu gối của họ bằng cách khởi động một số VM cùng một lúc.

Ổ đĩa đi vào VDEV, VDEV đi vào zpool (vui lòng sử dụng toàn bộ đĩa cùng một lúc). Nếu đây là một hệ thống nhỏ hơn, bạn có thể muốn có một zpool duy nhất và (nếu bạn không quá lo lắng về việc mất dữ liệu) một VDEV. VDEV là nơi bạn chọn cấp độ RAID (mặc dù bạn cũng có thể MIRROR VDEV nếu bạn có đủ đĩa). Đĩa chậm nhất trong VDEV xác định toàn bộ VDEV nhanh như thế nào.

ZFS là tất cả về tính toàn vẹn dữ liệu - lý do rất nhiều công cụ truyền thống để bảo trì hệ thống tệp không tồn tại (như fsck) là vấn đề họ giải quyết không thể tồn tại trên hệ thống tệp ZFS.

IMO nhược điểm lớn nhất của ZFS là nếu hệ thống tệp của bạn tiếp cận đầy đủ (giả sử 75% +) thì RẤT chậm. Đừng đến đó.


2

31GB thực sự không lớn chút nào ...

Dù sao, tùy thuộc vào hệ thống tệp bạn hiện đang sử dụng, bạn có thể thấy ZFS chậm hơn một chút nhưng với thông số kỹ thuật phần cứng của bạn, nó có thể không đáng kể.

Rõ ràng ZFS sẽ sử dụng một khối RAM tốt để lưu vào bộ nhớ cache, điều này có thể làm cho máy ảo của bạn có vẻ như 'snappier' trong sử dụng chung (Khi không đọc hoặc viết nặng). Tôi không chắc chắn về cách ZFS được điều chỉnh trên Linux nhưng bạn có thể cần phải hạn chế ARC của nó, nếu có thể, để ngăn chặn nó chạy với tất cả RAM của bạn (Xem như bạn sẽ muốn có một phần còn lại cho hệ thống máy chủ của mình và Máy ảo).

Tôi sẽ kích hoạt tính năng nén (lời khuyên ngày nay là bật nó lên trừ khi bạn có lý do chính đáng để không). Hãy nhớ điều này phải được thực hiện trước khi đưa dữ liệu vào hệ thống tệp. Hầu hết mọi người đều ngạc nhiên khi thấy nó thực sự nhanh hơn khi bật nó, vì các thuật toán nén thường sẽ chạy nhanh hơn so với IO đĩa. Tôi nghi ngờ nó sẽ gây ra nhiều vấn đề về hiệu năng với bộ xử lý 6 lõi của bạn. Tôi không mong đợi máy ảo sẽ nén được nhiều, nhưng tôi đã xoay sở để biến ~ 470GB dữ liệu VM thành 304GB chỉ với cài đặt nén mặc định.

Đừng bận tâm với khoản khấu trừ, nó sẽ quay trở lại ám ảnh bạn sau này và bạn sẽ mất hàng tuần để xáo trộn dữ liệu xung quanh để cố gắng loại bỏ nó.

Nếu bạn gặp phải vấn đề về hiệu năng thì câu trả lời rõ ràng là thêm SSD dưới dạng ZIL / L2ARC hoặc thậm chí cả hai. Không lý tưởng khi sử dụng một thiết bị cho cả hai nhưng rất có thể nó vẫn sẽ cải thiện hiệu suất trên một nhóm chứa một số lượng nhỏ đĩa / vdevs.

Thêm: Tôi thực sự sẽ thử và bắt đầu với một cấu hình dự phòng nếu có thể (lý tưởng là gương) hoặc chuyển đổi sang gương từ một dải càng sớm càng tốt. Mặc dù ZFS sẽ kiểm tra tất cả dữ liệu và phát hiện lỗi khi đang di chuyển (hoặc trong quá trình chà), nhưng nó sẽ không thể làm bất cứ điều gì về nó (mà không sử dụng bản sao = 2 sẽ tăng gấp đôi mức sử dụng đĩa). Bạn sẽ chỉ còn lại nó cho bạn biết có lỗi trong các tệp (có thể là hình ảnh đĩa VM của bạn) mà bạn sẽ không thể làm được gì nhiều mà không xóa và tạo lại các tệp đó.


"Bạn sẽ chỉ còn lại nó nói với bạn rằng có lỗi trong các tệp ... mà bạn sẽ không thể làm được gì nhiều" Đó là một ý kiến ​​tốt và tôi đánh giá cao nó. Điều đó nói rằng, đó là nơi mà các bản sao lưu hàng đêm của tôi xuất hiện. Vì không có gì ngăn cản giữa tôi và tham nhũng dữ liệu thầm lặng, vì vậy ngay cả khi ZFS chỉ từ chối cho phép tôi đọc tệp hoặc một phần của nó cho đến khi tôi khôi phục nó từ (được biết là tốt ) sao lưu, đó là một cải tiến lớn trong đảm bảo tính toàn vẹn dữ liệu.
một CVn

Đối với kích thước tệp, không, 31 GB không thực sự lớn về mặt khách quan (mặc dù nó vẫn chiếm ~ 1,2% tổng dung lượng lưu trữ hệ thống của tôi), nhưng lo lắng của tôi là dọc theo dòng COW đó sẽ khiến hệ thống sao chép tất cả dữ liệu đó liên tục qua lại, một quan niệm sai lầm rằng JamesRyan đã nhanh chóng sửa chữa .
một CVn

1

Tùy thuộc vào trường hợp sử dụng và máy ảo của bạn, tôi sẽ xem xét Sau đây. Hãy để Hệ điều hành máy chủ lưu trữ các tệp bạn đang lưu trữ trên Tập tin ZFS.

Nếu có thể, chỉ tạo LUN cho mọi VM, chỉ chứa Hệ điều hành và các tệp nhị phân cần thiết. Và hiện tại lưu trữ lưu trữ cho Dữ liệu Cá nhân dưới dạng chia sẻ qua NFS, samba hoặc iSCSI (hoặc zvols như được đề cập trong các nhận xét). ZFS có thể theo dõi mọi tệp với kiểm tra và thời gian truy cập. Tất nhiên, nếu tốc độ không quá quan trọng, bạn cũng có thể kích hoạt tính năng nén trên một số Kho dữ liệu. Lợi ích sẽ là một lớp còn thiếu của một Hệ thống tập tin khác. Nếu bạn tạo LUN cho Ổ cứng ảo thứ hai và tạo ra Hệ thống tệp NTFS, thì ZFS phải xử lý một blob nhị phân lớn và không biết bất kỳ nội dung hoặc tệp nào và do đó không thể tận dụng bộ đệm ZIL hoặc ARC trong giống như cách các tập tin máy bay có thể.

Đề cập đến ACL, ZFS có thể sử dụng ACL thông qua NFSv4 hoặc Samba (nếu được bật). Tôi đã thừa nhận rằng tôi sử dụng ZFS trên FreeBSD và không thể đảm bảo làm thế nào để bật Sambas ACL giao phối với khối lượng ZFS. Nhưng tôi chắc chắn đây không phải là một vấn đề lớn.

Chống trùng lặp kết hợp với bộ đệm Đọc là một lợi thế lớn khi tiết kiệm một số dung lượng và cải thiện số lần đọc lớn (Bão khởi động) khi tất cả các máy ảo bắt đầu đọc cùng một khối.

Điều tương tự cũng xảy ra với các ảnh chụp nhanh ZFS cho VM và Datastores. Bạn có thể tạo một tập lệnh shell đơn giản, để đóng băng VM, chụp nhanh VM và Datastore và tiếp tục làm việc, hoặc chỉ một mình Datastore và sao chép VM trình bày Ảnh chụp nhanh của bản gốc và kiểm tra một số thứ.

Khả năng là vô tận với ZFS;)

EDIT: Hy vọng tôi đã giải thích nó tốt hơn một chút

EDIT2: Ý kiến ​​cá nhân: Cân nhắc sử dụng RAIDZ2 (RAID6) vì bạn có thể chịu được lỗi đĩa đôi! Nếu bạn có một đĩa dự phòng duy nhất còn lại, nó sẽ không bao giờ sai, nhưng hai lỗi đĩa là đủ để xử lý nhanh. Tôi chỉ đăng đoạn script của mình để theo dõi tình trạng đĩa ở đây


Tôi không chắc là tôi có được nó. Bạn có nói rằng tôi nên lưu trữ các tệp được VM sử dụng làm các tệp riêng biệt trên hệ thống tệp ZFS, thay vì dưới dạng hình ảnh đĩa không? Còn những thứ như phân vùng, phân vùng khởi động, thuộc tính mà ZFS không biết, Windows ACL trong bối cảnh Linux, ...? Tôi đang hiểu lầm bạn, hoặc bạn đang trả lời một cái gì đó khác với những gì tôi đang hỏi. Bạn có thể vui lòng đọc lại câu hỏi và chỉnh sửa câu trả lời của bạn để làm rõ cách nó giải quyết mối quan tâm về hiệu suất lưu trữ của tôi không?
CVn

Về ảnh chụp nhanh: Có thể không cần thiết phải đóng băng VM. ZFS sử dụng Copy-on-Write (COW), có nghĩa là Ảnh chụp nhanh là tức thời và sẽ cung cấp cho bạn một hình ảnh đĩa hoàn chỉnh. Một số quản trị viên sử dụng điều này cho cơ sở dữ liệu MySQL & PostGRES mà không đóng băng cơ sở dữ liệu của họ (Ví dụ: Không có thời gian chết), mặc dù những người khác thực hiện xóa bảng trước. Nếu bạn cần đóng băng VM, chụp ảnh nhanh ZFS chỉ mất vài giây.
Stefan Lasiewski

Michael Tôi nghĩ Daywalker đang đề cập đến zvols nơi bạn có thể tạo một tệp hoạt động như một thiết bị khối. Tôi sẽ sử dụng NFS chứ không phải các zvols riêng lẻ cho VM (trong trường hợp này có vẻ như tất cả đều là cục bộ nên chỉ là các tệp trong hệ thống tệp). Vâng, zvols có thể được mát mẻ nhưng chúng là một lớp phức tạp thêm. Và ảnh chụp nhanh ZFS theo định nghĩa phù hợp. Điều đó không có nghĩa là HĐH của VM biết rằng nó cần phải xóa dữ liệu của nó vào đĩa nhưng bạn sẽ có được sự thống nhất của hệ thống tệp với mức tương tự như khi bạn mất nguồn trên VM.
TheFiddlerWins

Dedup rất tốn tài nguyên. Sử dụng nén là không và (đối với VM) có thể sẽ giúp bạn lấy lại nhiều dung lượng do khoảng trắng trong các hệ thống tệp VM.
TheFiddlerWins

@ MichaelKjorling Chỉ cần chỉnh sửa Bài đăng của tôi, hy vọng hiểu rõ hơn (cũng với các nhận xét từ TheFiddlerWins và Stefan Lasiewski
Daywalker
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.