Cấu hình RAID được đề xuất cho cơ sở dữ liệu Oracle là gì?


16

RAID (Mảng dư thừa của đĩa rẻ tiền) đi kèm với các cấu hình khác nhau (RAID-0, RAID-1 ...). Cấu hình RAID được khuyến nghị mà tôi nên thiết lập và sử dụng khi cài đặt cơ sở dữ liệu Oracle. Cơ sở dữ liệu sẽ chủ yếu được sử dụng làm kho dữ liệu.


RAID0 và RAID1 là những thứ hoàn toàn khác nhau. Bạn chỉ sử dụng RAID0 cho hiệu năng và RAID1 cho khả năng chịu lỗi trong trường hợp ổ đĩa bị lỗi.
Jonas

4
RAID0 không bao giờ nên được sử dụng trên máy chủ cơ sở dữ liệu. Trừ khi bạn thích khôi phục từ băng.
mrdenny

Câu trả lời:


13

Nó phụ thuộc. Khi xem xét kho dữ liệu, nếu bạn không có thiết kế cụ thể, quản lý lưu trữ tự động có thể là một lộ trình tuyệt vời.

Hãy xem xét các cuộc thảo luận tại AskTom , Diễn đàn OTN , Diễn đàn OTN 2Diễn đàn OTN 3 .

Không có cách nào đúng để giải quyết mọi việc và câu trả lời thay đổi dựa trên một loạt các yếu tố phần cứng và mạng. Để tự mình khám phá, hãy tải trước kho dữ liệu mẫu (chỉ một hoặc hai, đủ để chơi) trên máy dựa trên ASM, trên SAN với Raid được ảo hóa bởi linux và trên máy đột kích dựa trên phần cứng.

Bằng cách xác định thời gian kết quả của các truy vấn trên cả ba môi trường, bạn sẽ có thể khám phá phương pháp nào hoạt động tốt nhất cho bạn về hiệu năng. Tôi đã triển khai cơ sở dữ liệu bằng cách sử dụng các cuộc tấn công ảo dựa trên ASN và linux và một cuộc đột kích ảo hoạt động tốt hơn một chút (một vài năm trước.) Tuy nhiên, tôi nghi ngờ đó là một phần trong cách các ổ đĩa được thiết lập.

Không có câu trả lời đúng số ít. Nếu bạn có thể cung cấp cho chúng tôi chi tiết hơn về các yêu cầu về kích thước và hiệu suất, có thể khám phá các trường hợp thử nghiệm khác nhau.

--Biên tập--

Mỗi " nhóm đĩa " có thể được tạo thành từ một hoặc nhiều đĩa, thư mục hoặc tệp trên hệ thống con thích hợp. Oracle khuyến nghị "Để có hiệu suất và độ tin cậy tốt nhất, hãy chọn một thiết bị RAID hoặc âm lượng hợp lý trên nhiều thiết bị vật lý và thực hiện phương pháp sọc và gương-mọi thứ (SAME)." khi đặt các tập tin trên một hệ thống tập tin. Điều đó đọc như thể oracle đang khuyến nghị RAID 1 + 0.

Tuy nhiên, nhóm đĩa được quản lý ASM, "Nhóm đĩa dự phòng bình thường yêu cầu tối thiểu hai nhóm lỗi (hoặc hai thiết bị đĩa) nếu bạn đang sử dụng phản chiếu hai chiều. Không gian đĩa hiệu quả trong nhóm đĩa dự phòng bình thường là một nửa tổng số không gian đĩa trong tất cả các thiết bị của nó "dường như tự động cung cấp phản chiếu.

Bản thân các thiết bị này có thể bao gồm các thiết bị RAID, v.v. Trong các thử nghiệm thực tế khi tôi đang thiết lập kho dữ liệu RAID, một RAID 5 ảo đơn giản trên hệ thống tập tin cung cấp hiệu suất chấp nhận được và ASM bổ sung không thêm lợi ích hiệu năng. Trong loại nhiệm vụ tối ưu hóa này, trước tiên, hãy xác định tài nguyên của bạn, sau đó kiểm tra mọi cấu hình có thể, vì đôi khi kết quả có thể cực kỳ phản trực giác.


1
Cuộc đột kích ảo nghe có vẻ khá buồn cười: /
jcolebrand

10

Nếu bạn có hai ổ đĩa vật lý:

RAID0: Nhanh nhưng không dư thừa. Bất kỳ lỗi ổ đĩa sẽ giết chết toàn bộ mảng. Một số người đặt bộ nhớ tạm thời trên RAID0 (tức là tempdb theo MSSQL) nhưng tôi vẫn sẽ coi điều này là nguy hiểm vì trong khi bạn sẽ không mất bất kỳ dữ liệu có ý nghĩa nào nếu mảng bị đổ thì bạn sẽ bị cúp máy chủ cho đến khi tình huống được sửa chữa.

RAID1: Đi cho điều này nếu bạn có hai ổ đĩa. Không có lợi ích hiệu suất ghi mặc dù bạn có thể thấy tăng hiệu suất đọc với bộ điều khiển tốt. Tính năng chính của RAID1 là sống sót khi một trong các ổ đĩa bị chết.

Nếu bạn có ba ổ đĩa vật lý:

Các tùy chọn của bạn là RAID5, RAID10 3 ổ đĩa không chuẩn (hoặc RAID1E do bộ điều khiển IBM tham chiếu) nếu được hỗ trợ. Tất nhiên bạn có thể sử dụng RAID1 và giữ thêm ổ đĩa dự phòng khi một trong những ổ đĩa khác bị hỏng, nhưng dù sao bạn cũng nên giữ các phụ tùng trong môi trường quan trọng cho nhiệm vụ để điều này không cần phải nói.

RAID5 cung cấp nhiều không gian hơn RAID10 (hai ổ đĩa có giá trị thay vì một rưỡi) nhưng có vấn đề về hiệu năng ghi tiềm năng vì đối với mọi khối được ghi, bộ điều khiển cần đọc khối chẵn lẻ, cập nhật và ghi lại. Vấn đề về hiệu suất ghi này có thể được nhân đôi cho việc ghi cơ sở dữ liệu vì có ít nhất hai lần ghi cho mỗi bản cập nhật: một cho nhật ký giao dịch và một cho các vùng dữ liệu thực tế. Vì dung lượng rẻ trong những ngày này, tôi sẽ khuyên dùng RAID10 3 ổ đĩa nếu được hỗ trợ để có hiệu suất ghi tốt hơn. Phần mềm RAID của Linux cung cấp điều này, cũng như nhiều bộ điều khiển IBM (họ gọi nó là RAID1E). Bạn cũng có thể tìm thấy nó dưới các tên khác vì nó không được coi là một sự sắp xếp tiêu chuẩn nên không có tên tiêu chuẩn.

Cả R5 và R10 trên ba đều có cùng mức dự phòng (bất kỳ một ổ đĩa nào cũng có thể bị lỗi tại một thời điểm và mảng sẽ tồn tại) và các số liệu hiệu suất đọc tương tự (tương tự như mảng RAID0 hai ổ đĩa).

Nếu bạn có bốn ổ đĩa vật lý:

Nếu chỉ tạo một mảng thì có hai tùy chọn (bỏ qua các biến thể "có phụ tùng nóng"): RAID6 và RAID10 "truyền thống" (RAID0 của RAID1).

Cả hai đều cho cùng một không gian (hai ổ đĩa của bốn bạn). RAID6 cung cấp khả năng dự phòng tốt hơn vì bất kỳ hai ổ đĩa nào cũng có thể bị hỏng tại thời điểm - vì RAID10 chỉ có thể tồn tại bốn trong số sáu tình huống có thể xảy ra với hai ổ đĩa. Cả hai đều cho hiệu năng đọc simialr nhưng RAID6 có vấn đề về hiệu suất ghi tương tự RAID5 (tương tự trên bộ điều khiển tốt, mặc dù nó có thể chậm hơn RAID5 trên bộ điều khiển kém hoặc với RAID phần mềm tùy thuộc vào khả năng điều khiển I / O của hệ điều hành. RAID10 là thường được ưa thích cho cơ sở dữ liệu vì lý do hiệu suất - nếu bạn cần dự phòng thêm, bạn có thể sử dụng sáu ổ đĩa và có RAID1 hoặc 2 RAID1 ổ đĩa.

Khi bạn có bốn ổ đĩa trở lên mặc dù mọi thứ trở nên thú vị hơn vì bạn có thể có một cặp mảng RAID1 riêng biệt. Điều này có thể mang lại lợi ích hiệu suất đáng kể với đĩa quay bằng cách giữ các kho lưu trữ dữ liệu của bạn trên một mảng và nhật ký giao dịch trên một mảng khác - điều này có thể làm giảm đáng kể chuyển động đầu trong một số trường hợp và tìm kiếm thời gian do truy cập "ngẫu nhiên" là một kẻ giết người hiệu suất thực sự. Đối với kho dữ liệu, giả sử điều này có nghĩa là nó sẽ thấy rất ít ghi tương đối, việc chia nhật ký giao dịch từ các tệp dữ liệu có thể có lợi ích hạn chế hơn nhưng bạn vẫn có thể muốn xem xét nhiều mảng và thay vào đó phân vùng dữ liệu của bạn để có hiệu suất đọc tốt hơn .

Nếu bạn có nhiều hơn bốn ổ đĩa:

Các tùy chọn của bạn trở nên rộng mở ở đây và nó thực sự phụ thuộc vào dữ liệu của bạn là gì và mức tải / đọc / cập nhật dự kiến ​​của bạn là gì. Chẳng hạn, một khi các dịch vụ của chúng tôi chạy trên các ổ đĩa 12 ~ 70Gb:

  • 4x như RAID10 cho các khu vực hệ thống (OS, SQL Server (MSSQL trong trường hợp của chúng tôi), hoán đổi, tempdb).
  • 4x như RAID10 cho các tệp dữ liệu
  • 4x như RAID10 cho nhật ký giao dịch

Tempdb được giữ trên mảng hệ thống. Chúng tôi có thể di chuyển nó sang hai mảng khác và chỉ chạy mảng hệ thống như 2 ổ đĩa trong RAID1 vì tốc độ tăng thêm không cần thiết cho các khối sytem (vì điều đó chỉ thực sự quan trọng trong quá trình khởi động hoặc khi trao đổi và chúng tôi đảm bảo có đủ RAM để nó không bao giờ cần phải trao đổi), nhưng với cách chúng tôi trả tiền cho nhà cung cấp dịch vụ lưu trữ cho bộ máy đó, chúng tôi sẽ không mất bất kỳ chi phí nào để bỏ hai ổ đĩa. Sao lưu cũng đi đến mảng hệ thống, trước khi được sao chép vào các vị trí sao lưu ngoài máy chủ, ngoại vi và ngoại tuyến.

Tất nhiên điều này là quá mức cần thiết cho một số cơ sở dữ liệu (sẽ không có vấn đề gì khi chạy một máy chủ blog nhỏ theo cách này!) Nhưng ứng dụng chính của chúng tôi thực hiện rất tốt với sự sắp xếp này.

Nếu bạn có sáu ổ đĩa, bạn có thể xem xét ba mảng RAID1 hoặc hai mảng RAID10 ba ổ đĩa.

Nói chung là

Thật không may, không có "thực hành tốt nhất" đơn giản thực sự vì nó phụ thuộc rất nhiều vào kích thước và cách sử dụng các mẫu của hệ thống của bạn. Các quy tắc chung duy nhất tôi có thể nghĩ hoặc là:

  • tránh RAID5 và 6 trừ khi bạn biết vấn đề về hiệu suất ghi sẽ không ảnh hưởng đáng kể đến bạn
  • với bốn hoặc nhiều ổ đĩa dựa trên đĩa quay, hãy cân nhắc việc chia nhỏ nhiều mảng để giảm chuyển động của đầu (lợi ích đầy đủ của nhiều mảng sẽ không áp dụng cho SSD tốt vì không có chuyển động đầu vật lý nào, mặc dù bạn có thể thấy một số khác biệt tùy thuộc vào chiến lược kết hợp ghi của bộ điều khiển của SSD và vv)
  • kiểm tra, kiểm tra và kiểm tra lại: luôn luôn tốt để thử tìm thời gian để xác minh rằng sự sắp xếp bạn đã chọn thực sự tối ưu

RAID phần cứng hay phần mềm?

Trước đây, hiệu suất của RAID phần mềm thấp hơn so với RAID phần cứng cho RAID 5 do tính toán chẵn lẻ và cho tất cả các sắp xếp do giao diện chậm giữa các ổ đĩa và CPU. Với các CPU hiện đại, vấn đề chẵn lẻ không thực sự là một vấn đề, nhưng nếu bạn có ổ đĩa cứng rất nhanh, RAID vẫn có thể chiến thắng nếu tổng tốc độ của các ổ đĩa có thể đến bất cứ nơi nàogần (trong một trật tự cường độ, theo phỏng đoán) đến mức độ máy có thể nói chuyện với bộ điều khiển đĩa nhanh như thế nào. Nếu bạn có một mảng RAID1 bốn ổ đĩa (tức là bốn bản sao của cùng một dữ liệu để dự phòng) với phần mềm RAID, mỗi thao tác ghi sẽ dẫn đến việc HĐH gửi bốn lô dữ liệu tới bộ điều khiển I / O, có thể theo tuần tự - với phần cứng Bộ điều khiển HĐH chỉ gửi một yêu cầu ghi và bộ điều khiển gửi nó tới bốn ổ đĩa, có thể song song.

RAID phần cứng tốt cũng có thể cung cấp các lợi thế khác: ví dụ, một số bộ điều khiển thông số kỹ thuật cao có bộ đệm ghi với pin dự phòng để việc ghi chờ xử lý không bị mất khi bị cắt điện ngay cả khi UPS của bạn bị hỏng.

RAID phần mềm rõ ràng là rẻ hơn và dễ mang theo hơn, do đó bạn không bị ràng buộc với một bộ điều khiển cụ thể nếu bạn phải di chuyển các mảng do lỗi bộ điều khiển / máy.

RAID phần cứng giá rẻ thường kết hợp các tiêu cực của RAID phần mềm và phần cứng với một vài (hoặc không có) lợi ích của một trong hai cách này là tốt nhất nên tránh.

Tôi có xu hướng sử dụng RAID phần mềm trên các máy chủ dev, test và UAT của chúng tôi và RAID phần cứng tốt cho các máy chủ chạy các dịch vụ khách hàng / công khai trực tiếp.


5

Các " Oracle Database Performance Tuning Guide " có một chương dành riêng cho tôi O Cấu hình / . Nói ngắn gọn:

  • Sử dụng phân loại (RAID phần cứng, RAID phần mềm, ASM)
  • Không sử dụng RAID5 để lưu trữ và làm lại nhật ký
  • Căn chỉnh kích thước khối Hệ thống tập tin và kích thước khối DB

4

Trong một số trường hợp, JBOD là câu trả lời đúng (nghĩa là không phải RAID).

Vấn đề là, nếu bạn có quá nhiều nhóm RAID, bạn không có khả năng linh hoạt chỉ định cách lưu trữ vật lý trong cơ sở dữ liệu, chẳng hạn như đảm bảo rằng các chỉ mục và bản ghi cho một bảng được lưu trữ trên các trục chính riêng biệt, và đảm bảo rằng bạn đang cân bằng ghi trên tất cả các đĩa của bạn.

Bạn có thể sử dụng tính năng phân loại (RAID0) để cân bằng ghi, nhưng nếu đó là một nhóm lớn, bạn không thể tách các chỉ mục so với các bản ghi.

Phản chiếu (RAID1) có khả năng chịu lỗi và đọc nhanh hơn (vì bạn có thể đọc từ bất kỳ trục chính nào không bận), nhưng việc ghi có thể chậm hơn khi bạn phải chờ cả hai bản sao được viết.

Tôi sẽ không bao giờ đi RAID5 hoặc RAID6 trên cơ sở dữ liệu. Nếu dữ liệu quan trọng, hãy mua thêm đĩa và đi với RAID1; RAID5 / 6 hoạt động chậm (đặc biệt là phần mềm) và với kích thước ổ cứng ngày nay có thể mất nhiều ngày để xây dựng lại sau khi thay thế các ổ đĩa bị lỗi cho một nhóm đĩa lớn ... chưa kể rằng cách mà hầu hết các hệ thống RAID5 / 6 xử lý các lỗi chẵn lẻ là chỉ tính lại tính chẵn lẻ ... nhưng tỷ lệ cược là, lỗi thuộc về dữ liệu, không phải là tính chẵn lẻ nhưng bạn không biết lỗi đó ở đâu. (thật không may, tôi không nghĩ có cái gì đó giống như LOCKSS cho cơ sở dữ liệu)

...

Bố cục thú vị nhất tôi từng thấy trên cơ sở dữ liệu thực sự liên quan đến việc có hai phân vùng trên mỗi trục chính - phần trong cùng của đĩa được sử dụng cho cơ sở dữ liệu sản xuất, các phần trên của đĩa được sử dụng để sao lưu. (và họ đảm bảo rằng một phân vùng không được sao lưu vào cùng một trục chính; tôi nghĩ rằng có nhiều cơ sở dữ liệu, vì vậy mỗi phân vùng được sao lưu vào các đĩa từ một cái khác nhau). Điều này mang lại cho họ lợi thế của việc truyền bá mọi thứ trên nhiều trục chính hơn trong ngày làm việc, và sau đó vào ban đêm, họ sẽ chạy các bản sao lưu.

Tôi đoán sẽ có sự phục hồi chậm hơn nếu có sự cố xảy ra và bạn cần khôi phục, vì bạn có một số lần đọc từ đĩa bên ngoài xảy ra trong khi cơ sở dữ liệu được sử dụng suốt cả ngày, nhưng luôn có sự đánh đổi trong mọi thứ.

...

Vì vậy, dù sao đi nữa, điểm mà tôi đang cố gắng thực hiện - không có ai trả lời phù hợp với mọi tình huống. Nếu có, các DBA sẽ mất việc và các công ty sẽ mua các thiết bị cơ sở dữ liệu được xây dựng sẵn.

Các cơ sở dữ liệu tôi xử lý là những gì ông chủ của tôi gọi là 'CÔNG VIỆC': Viết một lần, Đọc không bao giờ; anh ấy nói đùa, nhưng "kho dữ liệu" có thể có nghĩa là bất kỳ mức độ hoạt động nào ... Tôi đã thấy một số được tải từ băng hàng đêm / hàng tuần (và chỉ là bản sao của ví dụ OLTP, và giúp chúng tôi xác minh các băng từ tốt) và các công việc phân tích lớn đã được thực hiện trên chúng và các công việc khác, nơi có một dòng đầu vào liên tục và đọc thỉnh thoảng, nhưng không có sự cạnh tranh thực sự đối với tài nguyên.


1
Grr vì không có upvote. Tôi sẽ trở lại với điều này tối nay, vì tôi thích một số điểm của bạn rất nhiều. Tôi cũng là một fan hâm mộ lớn của JBOD, hoặc tốt nhất là rất nhiều cặp RAID1.
jcolebrand

Tài khoản nhưng ông đã đưa ra một giải pháp tốt hơn cho các cài đặt Oracle gần đây.
Joe

Mà yêu cầu một JBOD giống như bạn đề nghị, có?
jcolebrand

@jcolebrand: khá nhiều. (điều đó được khuyến khích, nhưng tôi không nghĩ là bắt buộc )
Joe

3

Đề xuất của tôi cho các máy chủ luôn là RAID 5 . Thời gian và nỗ lực dành cho việc khôi phục ổ cứng thất bại đầu tiên của bạn sẽ luôn đáng nhớ. Nếu bạn thiết lập mảng RAID, tôi thực sự khuyên bạn nên chuẩn hóa một kích thước ổ đĩa đơn và bỏ 2 ổ cứng dự phòng trong phòng máy chủ. Một ổ đĩa xấu đi? Đặt một trong những thay thế trong (và để mảng xây dựng lại). Tôi đã thấy các mảng RAID gặp khó khăn vì ổ đĩa thứ hai bị hỏng trong khi họ chờ đợi chiếc đầu tiên đến (giao hàng ngày hôm sau vẫn còn quá muộn).


Nhưng thay đổi ổ đĩa cứng không phải là miền của DBA phải không? Các đĩa giám sát suốt đời và tỷ lệ thất bại là dành cho các công cụ tự động của đám đông SF. Chúng ta đừng trùng lặp công việc và phá hủy các lý do chuyên môn hóa. Chúng tôi là của dba sau tất cả;)
jcolebrand

Raid 5 thực hiện ở đâu? Phần cứng? Phần mềm? Oracle? Trên bao nhiêu đĩa? Điều gì về mảng ổ đĩa được đề nghị của Oracle? Đây không phải là những gì làm lại nhật ký lưu trữ cho?
Brian Ballsun-Stanton

2
RAID5 có thể có vấn đề về hiệu suất ghi đáng kể. RAID10 phổ biến hơn cho các máy chủ DB.
David Spillett

@jcolebrand, Nhiều công ty tôi từng làm việc cho quản trị viên mạng == quản trị viên máy chủ == quản trị viên cơ sở dữ liệu. Ở một số người, chỉ có một vài người có quyền truy cập vào trung tâm dữ liệu sản xuất, vì vậy những người đó phải đội 2 chiếc mũ cùng một lúc. Trong nhiều lần tôi làm việc, quản trị viên máy chủ không biết chuyện gì đang xảy ra, do đó tôi tham gia, vì vậy tôi cũng phải biết công việc của họ.
Tangurena

Chà điều đó thật tuyệt và nó hút cùng một lúc. Vui mừng khi có tiếng nói của kinh nghiệm;) [PS: của tôi là +1]
jcolebrand

2

Bạn dự định sử dụng bao nhiêu dữ liệu và tần suất bạn sẽ đọc so với ghi từ hệ thống? Có rất nhiều kế hoạch đi sâu vào vấn đề này, đủ để một số người dành toàn bộ sự nghiệp học tập cho môn học này.

Thông thường tôi sẽ bảo bạn đọc Wikipedia và đọc bài viết trước khi tiếp tục, vì có khá nhiều loại RAID và mỗi loại được sử dụng tốt nhất ở một nơi khác nhau.

Những điều cơ bản như thế này:

RAID0

Tốt cho các game thủ video. Xấu cho bất cứ ai khác. Sẽ không tệ khi sử dụng điều này cho một máy chủ bộ đệm mà không cần giữ dữ liệu trong bất kỳ khoảng thời gian nào. Khi một đĩa bị lỗi hệ thống bị hỏng. Trò chơi kết thúc.

RAID1

Tuyệt vời cho độ tin cậy. Không có nhiều khả năng mở rộng. Khá tốt về tốc độ.

RAID5

Sự pha trộn ưa thích giữa RAID0 và RAID1 (sắp xếp).

Bây giờ, sau này, nó thực sự trở thành thứ cần được hỏi trên ServerFault vì thực tế là cấu hình máy chủ của nó thay vì thiết kế cơ sở dữ liệu. Luôn thảo luận về hiệu suất máy chủ với Quản trị viên Máy chủ của bạn. Đó là những gì họ đang ở đó. Nếu đây không phải là phiên bản beta riêng tư, tôi sẽ bỏ phiếu để chuyển bạn sang đó.


2
Mặc dù ServerFault chắc chắn sẽ không phải là một vị trí sai cho câu hỏi này, nhưng đây có lẽ là chính xác. Các vấn đề về hiệu năng I / O là điều mà một DBA nên nhận thức rõ.
David Spillett

@David Tôi hoàn toàn đồng ý, nhưng có một sự khác biệt trong nhận thức và tự mình suy đoán. Theo kinh nghiệm của tôi, nó chưa bao giờ là nhiệm vụ của một người khi trang web sẽ trở nên rộng lớn và bận rộn. Hai cái đầu tốt hơn một và tất cả những thứ đó
jcolebrand
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.