Cải thiện IO với FlashCache


14

Tôi có một máy chủ có 2 ổ cứng (2x 1 TB), chạy trong RAID 1 (SW-RAID). Tôi muốn cải thiện hiệu suất IO bằng cách sử dụng flashcache. Có chạy máy ảo KVM trên đó, sử dụng LVM.

Về điều này, tôi có các câu hỏi sau đây:

  • Điều này thậm chí sẽ làm việc? flashcachehoạt động cho các thiết bị khối, tuy nhiên đây đều là các máy ảo có thiết lập riêng.
  • Tôi mong đợi bao nhiêu để tăng hiệu suất? Hầu hết các máy ảo chạy các trang web và một số trò chơi máy chủ.
  • SSD cần phải lớn như thế nào? Có một ổ SSD lớn hơn sẽ tăng hiệu suất vì nó có thể lưu trữ nhiều tệp hơn?
  • Điều gì xảy ra nếu SSD chết? Sẽ flashcachelấy các tập tin từ ổ cứng truyền thống và tôi chỉ có thể thay thế SSD?
  • Làm thế nào nhanh hơn writebackso với writethroughwritearound?

Thật không may, tôi không có quyền truy cập vào hệ thống kiểm tra, vì vậy tôi có thể cài đặt flashcachetrên máy chủ trực tiếp mà không ngắt kết nối các đĩa không? Tôi tìm thấy một hướng dẫn tuyệt vời ở đây mà tôi sẽ sử dụng.


Tôi nghĩ rằng bạn sẽ tận hưởng hiệu suất ổn định hơn nếu bạn có thể sử dụng SSD làm ổ đĩa chính của mình.
ewwhite

Không có quyền truy cập vào một hệ thống thử nghiệm? Tất cả những gì bạn cần là một máy trạm có ổ cứng, SSD và máy ảo có hai đĩa ảo (một ổ đĩa trên mỗi thiết bị). Hệ thống sản xuất không có nghĩa là được sử dụng như phòng thí nghiệm học tập.
Skyhawk

Liên kết đã chết trên hướng dẫn mà bạn đề cập. Bất kỳ nơi nào khác tôi có thể tìm thấy thông tin đó?
Thaeli

Câu trả lời:


18

Flashcache, đối với những người chưa từng thấy nó trước đây, là một phương pháp để mở rộng bộ đệm khối Linux bằng ổ SSD. Nó rẻ hơn so với việc chạy một máy chủ có nửa TB RAM chỉ để lưu vào bộ đệm.

Điều này thậm chí sẽ làm việc?

Nó nên. Bộ đệm khối Linux hoạt động bằng cách lưu trữ các khối truy cập , không phải các tệp . Miễn là bạn không cho các máy KVM truy cập trực tiếp vào các thiết bị khối (bạn không), Linux Block Cache sẽ hoạt động. Tuy nhiên, nếu bạn đang cho máy KVM chặn truy cập thiết bị trực tiếp câu trả lời có là chưa rõ ràng.

Nếu bạn đang sử dụng đĩa ảo được hỗ trợ tệp, nó chắc chắn sẽ hoạt động.

Nếu bạn đang sử dụng đĩa ảo được LV hỗ trợ, tôi không biết.

Tôi mong đợi bao nhiêu để tăng hiệu suất?

Đó là điều chúng tôi không thể trả lời. Nó phụ thuộc vào một loạt các điều. Trong bản tóm tắt, bạn sẽ có hiệu suất tốt nhất để kích thước ổ SSD của bạn lớn hơn bộ khối hoạt động. Nếu bạn nhận được bộ nhớ đệm hoàn hảo, hiệu suất của bạn sẽ tương tự như chạy toàn bộ hệ thống của bạn trên SSD. Mà bạn sẽ làm một cách hiệu quả.

SSD cần phải lớn như thế nào?

Tìm ra kích thước chính xác bạn cần là điều chúng tôi không thể giúp đỡ. Rõ ràng là nhiều hơn là tốt hơn, nhưng việc tìm ra tỷ lệ chính xác giữa bộ nhớ cache-SSD và bộ nhớ chính không phải là vấn đề đơn giản.

Làm phức tạp điều này là ghi được thiết lập để xóa ngay lập tức, chẳng hạn như các hoạt động hệ thống tệp nhất định và một số cấu hình cơ sở dữ liệu. Những bài viết đó sẽ chỉ được lưu trong thời gian ngắn và hiệu suất của chúng sẽ không bị ảnh hưởng bởi bất kỳ sự hiện diện hay vắng mặt của flashcache.

Điều gì xảy ra nếu SSD chết?

Điều tương tự cũng xảy ra khi bạn nói với Linux về bộ nhớ đệm nhưng với một sự thay đổi. Với bộ nhớ cache, bất kỳ ghi không xóa nào trong bộ đệm ẩn sẽ bị xóa vào đĩa. Điều gì xảy ra khi SSD biến mất tùy thuộc vào chế độ bộ đệm :

Writethpass : Tất cả các ghi được ghi vào bộ nhớ cache và bộ lưu trữ chính song song, do đó khả năng mất SSD đột ngột gây ra lỗi trên máy ảo là rất nhỏ.

Writearound : Tất cả các ghi được ghi vào bộ lưu trữ chính và chỉ được lưu trong bộ nhớ cache khi đọc. Không có lỗi trong các máy ảo.

WritBack : Tất cả các ghi đều vào Cache trước và được ghi vào bộ lưu trữ chính trong nền. Nhiều khả năng gây ra lỗi trong máy ảo của bạn nếu SSD bị lỗi và tôi sẽ không sử dụng chế độ này trong sản xuất.

Làm thế nào nhanh hơn sẽ viết so với văn bản thông qua và viết?

Phụ thuộc vào mức độ bạn đang viết. Nếu ghi của bạn định kỳ bão hòa bộ nhớ chính của bạn, hiệu suất tăng có thể khá đáng kể. Nếu bạn chủ yếu đọc với một số viết, bạn sẽ không nhận thấy sự cải thiện.

Ngoài ra, viết lại là một chính sách tồi cho những gì bạn đang làm vì vậy đừng sử dụng nó.


1
Xin chào sysadmin, cảm ơn câu trả lời toàn diện của bạn. Tôi sẽ không sử dụng writebackvì nó có thể làm hỏng mọi thứ mà không có BBU. Rốt cuộc, tôi sẽ không sử dụng bộ nhớ cache SSD, mà chỉ là một ổ SSD bình thường. Cảm ơn một lần nữa!
Devator

4

Có, nó sẽ hoạt động tốt miễn là bạn sử dụng đúng thiết bị khối. Và có một mẹo.

Khi LVM quét các PV, nó sẽ thấy phân vùng thông qua chính ổ cứng thực tế và thông qua thiết bị "ảo" flashcache.

Một triệu chứng rõ ràng là các công cụ LVM phàn nàn về các PV trùng lặp.

Cách khắc phục, để tránh những cảnh báo đó và quan trọng hơn, hãy đảm bảo rằng thiết bị flashcache được LVM2 sử dụng, là để điều chỉnh bộ lọc trong /etc/lvm/lvm.conf.

Trang LVM.CONF(5)này sẽ giải thích nó tốt hơn tôi, nhưng tôi sẽ để lại cho bạn một ví dụ, nếu tất cả các tập vật lý được hỗ trợ bởi flashcache:

filter = [ "a/.*dm.*/" ]


1

Một số ứng dụng mở tệp theo cách không đệm.

http://man7.org/linux/man-pages/man2/open.2.html

O_DIRECT (Kể từ Linux 2.4.10) Cố gắng giảm thiểu hiệu ứng bộ đệm của I / O đến và từ tệp này. Nói chung, điều này sẽ làm giảm hiệu suất, nhưng nó rất hữu ích trong các tình huống đặc biệt, chẳng hạn như khi các ứng dụng thực hiện bộ nhớ đệm của riêng chúng. Tệp I / O được thực hiện trực tiếp đến / từ bộ đệm không gian người dùng. Bản thân cờ O_DIRECT nỗ lực truyền dữ liệu một cách đồng bộ, nhưng không đảm bảo cho cờ O_SYNC rằng dữ liệu và siêu dữ liệu cần thiết được truyền. Để đảm bảo I / O đồng bộ, O_SYNC phải được sử dụng cùng với O_DIRECT. Xem GHI CHÚ dưới đây để thảo luận thêm.

Ví dụ, điều này rất phổ biến cho cơ sở dữ liệu. Vì vậy, hãy kiểm tra kỹ xem flashcache có hoạt động với bộ ứng dụng này không.

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.