Tôi có nên chạy cơ sở dữ liệu của mình khỏi cấu hình RAID 5 không?


13

Đôi khi tôi nghe nói rằng hiệu năng ghi của RAID 5 có thể bị kinh khủng. Trong khi tôi muốn sự dư thừa mà nó cung cấp, tôi không muốn hy sinh thời gian chèn / cập nhật cơ sở dữ liệu của mình.

Đây có phải là điều tôi nên lo lắng và nếu vậy, đề xuất để có được sự dư thừa với hiệu suất viết tốt là gì?


1
DB nào? Oracle + RAID 5 từng là không. Không chắc chắn nếu đây vẫn là trường hợp.
cagcowboy

Trong ví dụ cụ thể này, cơ sở dữ liệu chạy trên MySql và MSSQL.
Scott Saad

Cụ thể hơn một chút trong câu hỏi liên quan đến ứng dụng (hỗn hợp đọc / ghi DB, yêu cầu về thời gian và thời gian phục hồi) có thể nhận được câu trả lời phù hợp hơn; những điều này có thể làm cho một sự khác biệt trong giải pháp tốt nhất.
Jay Stevens

Câu trả lời:


23

RAID 10 thường được khuyên dùng vì I / O rất ngẫu nhiên. Đây là một ví dụ. Các tính toán là một chút đơn giản, nhưng đại diện khá.

Giả sử bạn có một mảng 6 ổ đĩa và các ổ đĩa của bạn có thể thực hiện 100 I / O mỗi giây (IOPS). Nếu bạn có 100% số lần đọc, tất cả sáu ổ đĩa sẽ được sử dụng và bạn sẽ có khoảng 600 IOPS cho cả RAID 10 và RAID 5.

Trường hợp xấu nhất là viết 100%. Trong kịch bản đó, hiệu năng của RAID 10 sẽ bị giảm một nửa (vì mỗi lần ghi vào hai ổ đĩa), do đó, nó sẽ nhận được 300 IOPS. RAID-5 sẽ chuyển đổi mỗi lần ghi thành hai lần đọc sau đó là hai lần ghi, do đó, nó sẽ nhận được 1/4 hiệu suất hoặc khoảng 150 IOPS. Đó là một hit khá lớn.

Mẫu đọc / ghi thực tế của bạn sẽ ở đâu đó ở giữa hai thái cực này, nhưng đây là lý do tại sao RAID 10 thường được khuyên dùng cho cơ sở dữ liệu.

Tuy nhiên, nếu bạn không có máy chủ cơ sở dữ liệu bận rộn, thì bạn thậm chí có thể thực hiện RAID-6. Tôi thường làm điều đó nếu tôi biết cơ sở dữ liệu sẽ không bị nghẽn cổ chai vì nó mang lại cho bạn sự an toàn hơn nhiều so với RAID 10 hoặc RAID 5.


22

Cơ sở dữ liệu giao dịch

RAID-5 tương đối chậm để ghi vì bộ điều khiển cần tải đủ dữ liệu để tính toán lại tính chẵn lẻ trên một bản ghi. Thao tác ghi sẽ phát sinh ít nhất bốn thao tác đĩa:

  • Đọc trong khối chẵn lẻ

  • Đọc trong khối cũ (giả sử nó chưa có trong bộ đệm) để XOR giá trị với khối chẵn lẻ.

  • Viết khối chẵn lẻ mới (khối chẵn lẻ cũ XOR khối dữ liệu cũ XOR khối dữ liệu mới)

  • Viết khối dữ liệu mới.

Nếu hệ thống không sử dụng bộ nhớ đệm ghi lại, điều này có nghĩa là tất cả các sự đối lập này nằm trên đường dẫn quan trọng để hoàn thành I / O. Thông thường, đây là trường hợp ghi cơ sở dữ liệu - trên thực tế, Microsoft (ví dụ) có chương trình chứng nhận cho thiết bị SAN để sử dụng với máy chủ SQL yêu cầu các nhà cung cấp đảm bảo hành vi này. Đôi khi, thiết bị RAID-5 cũ hơn không sử dụng tối ưu hóa này và phải tính toán lại tính chẵn lẻ từ toàn bộ dải.

RAID-10 có một bản sao cho mỗi ổ đĩa đơn và không cần đọc thêm dữ liệu để tính chẵn lẻ. Điều này có nghĩa là viết cần ít I / O vật lý hơn.

RAID-50 nằm ở đâu đó ở giữa, với âm lượng được chia thành nhiều ổ RAID-5, lần lượt bị sọc. Trên RAID-50 được tạo từ các nhóm bị sọc trong sơ đồ 3 + 1, ghi sẽ tạo ra tối đa ba yêu cầu I / O đĩa bổ sung. Nếu bạn cảm thấy rất có xu hướng, bạn có thể xem RAID-5 và RAID-10 như các trường hợp đặc biệt của RAID-50. RAID-50 chủ yếu được sử dụng để cung cấp khối lượng lớn trên nhiều đĩa vật lý

Các lược đồ chẵn lẻ khác như RAID-6 (sơ đồ chẵn lẻ có hai đĩa dự phòng cho mỗi bộ) cũng tồn tại, Các đĩa hiện đại đủ lớn để sắp xếp lại một mảng có thể mất nhiều thời gian - đủ lâu để có nguy cơ bị hỏng đĩa thứ hai trong quá trình xây dựng lại là khá quan trọng. RAID-6 giảm thiểu rủi ro này bằng cách có một đĩa chẵn lẻ thứ hai, yêu cầu ba lỗi đĩa để gây mất dữ liệu. Một thủ thuật tương tự với sơ đồ RAID-50 có thể được sử dụng để tạo mảng RAID-60.

Cuối cùng, một cặp nhân đôi duy nhất (được gọi là RAID-1) có thể cung cấp dự phòng và hiệu năng đủ tốt cho một số tác vụ. Cụ thể, bạn có thể sẽ thấy rằng RAID-1 mang lại cho bạn đủ thông lượng cho khá nhiều lưu lượng nhật ký cơ sở dữ liệu. Thêm về điều này dưới đây.

Nếu bạn có khối lượng công việc nặng, bạn có thể sẽ đạt được hiệu suất từ ​​khối lượng RAID-10. Đây có thể là một chiến thắng vì bạn có thể có được thông lượng cần thiết từ một số lượng nhỏ hơn các đĩa vật lý, giả sử các đĩa có đủ dung lượng). Một số mục như nhật ký hoặc khu vực tạm thời trên máy chủ cơ sở dữ liệu nên có trên các ổ RAID-1 hoặc RAID-10, vì các mục này nhận được nhiều lưu lượng ghi.

Nhật ký

Khối lượng nhật ký được đặc trưng bởi mẫu truy cập dữ liệu chủ yếu theo tuần tự và về cơ bản là bộ đệm vòng bao gồm các lệnh dọc theo dòng 'ghi dữ liệu này vào khối này' Chúng được viết ra như một nhà sản xuất bởi công cụ DBMS cốt lõi và được xử lý như một con số bởi chức năng đọc nhật ký. Một cặp nhân đôi duy nhất thực sự sẽ xử lý khá nhiều lưu lượng nhật ký.

Hệ thống tập tin và máy chủ tập tin nặng

Trên một hệ thống nặng đọc như kho dữ liệu, bạn có thể muốn sử dụng một hoặc nhiều ổ RAID-5. Trên một máy chủ tệp, việc truy cập đĩa phần lớn sẽ được thực hiện trên toàn bộ cơ sở tệp, do đó, ghi có thể sẽ ghi ra hầu hết các khối tạo nên khối chẵn lẻ. Trong trường hợp này, hiệu năng của RAID-5 sẽ nhẹ hơn.

Trước đây, tiết kiệm chi phí trên đĩa có thể là đáng kể nhưng điều này ít có khả năng là một vấn đề bây giờ.

Ghi lại bộ nhớ đệm và RAID-5

Trên bộ điều khiển SAN hoặc bộ điều khiển RAID bên trong có bộ đệm được hỗ trợ bằng pin, bạn có thể bật bộ đệm 'Ghi lại'. Bộ nhớ cache này viết và trả lại quyền điều khiển cho ứng dụng. I / O được bộ điều khiển báo cáo là đã hoàn thành. Tuy nhiên, nó không nhất thiết phải ghi dữ liệu ra đĩa ngay lập tức. Cơ sở này cho phép các hoạt động đọc / ghi chẵn lẻ RAID-5 được tối ưu hóa đáng kể và có thể làm giảm hình phạt hiệu suất ghi đối với các ổ RAID-5x.

Tuy nhiên, điều này vẫn mang một rủi ro nhỏ về các vấn đề toàn vẹn dữ liệu. Hệ thống máy chủ đã được thông báo rằng văn bản này đã được hoàn thành khi thực tế không phải vậy. Có thể xảy ra lỗi phần cứng tạo ra sự không nhất quán dữ liệu giữa (nói) khối lượng dữ liệu và nhật ký trên máy chủ cơ sở dữ liệu. Vì lý do này, bộ nhớ đệm ghi lại không được khuyến nghị cho các hệ thống giao dịch, mặc dù nó có thể là một chiến thắng hiệu suất cho một cái gì đó giống như một quy trình ETL.

Tóm lược

Đĩa không gian là giá rẻ như vậy hiện nay các hệ thống giao dịch có lẽ nên sử dụng RAID-1 hoặc RAID-10 cho khối lượng đăng nhập và RAID-10 cho khối lượng dữ liệu. Kích thước đĩa vật lý có thể lớn hơn nhiều so với cơ sở dữ liệu và RAID-10 sẽ cho phép thông lượng ghi nhiều hơn cho cùng một số lượng đĩa, có khả năng giảm số lượng ổ đĩa cần thiết để hỗ trợ hệ thống.

Trên một cái gì đó giống như kho dữ liệu, bạn vẫn có thể nhai không gian với các bảng thực tế được lập chỉ mục lớn để bạn có thể giành được giá nhỏ với khối lượng dữ liệu RAID-5 hoặc RAID-50. Tuy nhiên, nhật ký và tempdb vẫn nên được đặt trên ổ RAID-10 vì chúng có thể sẽ nhận được rất nhiều công việc trong quá trình xử lý ETL. Tuy nhiên, tiết kiệm chi phí trên đĩa có thể khá nhỏ.


Bộ nhớ cache ghi lại: nếu bạn đang mua bộ điều khiển RAID có ghi chú bộ đệm ghi lại "được hỗ trợ bằng pin" mà pin dường như không được bao gồm. Hãy chắc chắn rằng bạn nhận được nhà cung cấp của bạn để bao gồm một.
David Hicks

Một số làm, một số thì không. Tôi đã có một vài chiếc Adaptec 2200 không đi kèm với pin. Một số đi kèm với họ như là tiêu chuẩn.
Mối quan tâmOfTunbridgeWells

1
Bạn có một lỗi trong phản ứng của bạn. Bạn không cần phải đọc mọi ổ đĩa để tính toán lại tính chẵn lẻ. Một viết trở thành 2 đọc và 2 viết. 12 ổ đĩa khác trong mảng 14 ổ đĩa mẫu của bạn sẽ không bị RAID5 chạm vào.
TorgoGuy

Thật ra, tôi tin người đàn ông là đúng. Bạn có thể đọc và XOR tính chẵn lẻ với giá trị cũ của khối và một lần nữa với giá trị mới của khối. Không bao giờ thấy rằng mô tả trước nhưng nó sẽ làm việc.
Mối quan tâmOfTunbridgeWells

3

Vâng, nó phụ thuộc rất nhiều vào lỗi / khả năng chịu rủi ro của bạn. RAID5 có rất nhiều vấn đề . Máy chủ DB của tôi hiện có hai ổ đĩa được nhân đôi và nếu tôi mở rộng quy mô đó, tôi sẽ tìm thứ gì đó có tính chẵn lẻ hơn, có thể là RAID6 hoặc RAID10.

Ngoài ra, nếu ứng dụng của bạn rất quan trọng, có lẽ tôi khuyên bạn nên có hai máy chủ cơ sở dữ liệu với bản sao thay thế, master-master hoặc hot tùng hoặc bất cứ thứ gì. RAID chỉ giúp chống lại lỗi đĩa, nhưng có nhiều lỗi có thể xảy ra trên máy chủ :)


3

Phụ thuộc vào mức độ bạn đang viết.

Nếu đó là một "ứng dụng web" khá nhẹ thì bạn sẽ không thể thấy bất kỳ hiệu năng nào đạt được trên RAID5.

Nếu bạn đang xây dựng kho dữ liệu nhiều GB với số lượng ETL lớn, thì bộ đệm ghi trên RAID 5 sẽ nhanh chóng tràn vào và bạn sẽ đi thẳng vào "hiệu suất ghi kém" của RAID 5.

Mỗi lần ghi RAID5 sẽ gây ra ít nhất 3 lần ghi (cộng với phép tính CRC). Khi được đệm, điều này là tốt và nhanh chóng (các đợt hoạt động ngắn nhỏ - cập nhật và chèn bản ghi đơn lẻ). Nếu điều này được duy trì ghi (chèn / cập nhật số lượng lớn) thì nó sẽ được chú ý.

Đó là sự cân bằng giữa hiệu suất và không gian. RAID 10 (gương của các ổ đĩa sọc) cho cả hiệu năng và khả năng phục hồi, nhưng giảm 50% dung lượng.

RAID5 cho dung lượng cao hơn, hiệu suất đọc tốt nhưng hiệu suất ghi kém (lớn).


2

RAID 1, đó là câu trả lời cuối cùng của tôi

Lý do:

cặp được nhân đôi cung cấp dự phòng đầy đủ cho các đĩa bị lỗi và RAID tiếp tục hoạt động cho đĩa cuối cùng.

cặp được nhân đôi mang lại hiệu suất I / O lớn hơn cho các lần đọc nếu bạn đặt dữ liệu và chỉ mục của mình một cách cẩn thận ... [gợi ý: Sử dụng các khối riêng biệt cho dữ liệu và (các) chỉ mục của nó]. Bạn có thể đạt được hiệu suất cao hơn nữa bằng cách ghép các bộ điều khiển của mình.


Tại sao không RAID 1 + 0?
Brian Knoblauch


2

Câu trả lời ngắn gọn: không.

Câu trả lời dài: trừ khi bạn có một cơ sở dữ liệu rất nhỏ hoặc yêu cầu rất tối thiểu, không. Việc truy xuất dữ liệu phụ thuộc rất nhiều vào các hoạt động I / O của đĩa mỗi giây và chi phí phân loại sẽ ăn hết quyền truy cập đĩa của bạn theo thời gian, đặc biệt với các lần chạy truy vấn dài. Hầu hết các cơ sở dữ liệu được chạy trên thiết lập kiểu RAID 10 hoặc với khối lượng cụ thể chứa các phân vùng dữ liệu. Có, RAID 10 sẽ khiến bạn mất chi phí ghi, nhưng hiệu suất đọc của bạn (với thiết lập đúng) sẽ tăng lên .


1

Điều gì sẽ được khuyến nghị để có được sự dư thừa với hiệu suất viết tốt?

Một bộ đệm ghi lại lớn. Tăng RAM trên bộ điều khiển RAID phần cứng của bạn hoặc RAM có sẵn cho giải pháp RAID phần mềm của bạn (tức là đối với MDADM của Linux, hãy tăng RAM hệ thống, bóng MDADM để sử dụng RAM hệ thống không sử dụng làm bộ đệm ghi). Lời khuyên này dành cho các giá trị đã cho là "lớn" - nếu bạn thường (5% thời gian?) Ghi dữ liệu với tốc độ đủ nhanh để lấp đầy bộ đệm ghi cho dù nó lớn đến đâu thì điều này sẽ tạo ra sự khác biệt nhỏ.


1

Thực sự là về việc tách các tệp dữ liệu, tệp nhật ký của bạn khỏi tệp hệ điều hành của bạn. Nhật ký ghi tuần tự Dữ liệu phát sinh rất nhiều lần đọc ngẫu nhiên và một số ghi ngẫu nhiên

Bằng cách xây dựng các cấu hình RAID hỗ trợ các đặc điểm này, bạn tăng cường hiệu năng rất nhiều

Raid 1 - phản chiếu rất tốt cho các tệp nhật ký Raid 10 rất tốt cho các tệp dữ liệu của bạn. Cũng đáng để xem xét tách TempbDB và sao lưu vào các ổ đĩa riêng biệt. Thêm filegroups là một cách khác để tăng hiệu suất. Khi nói đến SAN, điều này không quá rõ ràng. Nó phụ thuộc vào việc bạn đang xây dựng các cấu hình đột kích cụ thể cho từng LUN hay dựa vào số lượng trục chính.


0

Theo tinh thần của bài viết trên blog StackOverflow gần đây nói rằng chúng tôi không nên trình bày lại câu trả lời đã có sẵn trên Internet, tôi chỉ cho bạn điều này

RAID-5 không phải là duy nhất trong sự dư thừa mà nó cung cấp, nó chỉ làm điều đó trong khi tiêu thụ ít đĩa bổ sung hơn một số giải pháp thay thế. Bạn có thể chọn một cái gì đó khác với độ dự phòng bằng hoặc tốt hơn và hiệu suất viết tốt hơn


0

Chạy một cơ sở dữ liệu ra khỏi RAID5 thường là một sai lầm. Tôi chỉ thấy nó được thực hiện trong hai trường hợp - cơ sở dữ liệu được thiết kế tốt, đọc nhiều với ít lần ghi và cơ sở dữ liệu trong đó "lãng phí không gian" do RAID5 không khả thi về mặt chính trị.

RAID5 sẽ phá hủy hiệu suất giao dịch.

Ngoài ra, nếu bạn đang xem xét RAID5, hãy xem liệu bạn có thể làm cho RAID6 hoạt động không. Độ tin cậy về mặt lý thuyết tốt hơn rất nhiều, mặc dù độ tin cậy trong thế giới thực thường kém hơn do triển khai chưa trưởng thành.

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.