Thiết kế đĩa SQL Server trên ISCSI SAN


27

Cách thực hành tiêu chuẩn của nó là tách các tệp nhật ký và dữ liệu để tách các đĩa khỏi HĐH (tempdb, sao lưu và trao đổi tệp) Liệu logic này có còn ý nghĩa khi các ổ đĩa của bạn đều dựa trên SAN và LUNS của bạn không được khắc trên các đĩa cụ thể hoặc đột kích -họ chỉ là một phần của số x ổ đĩa trên SAN và LUN chỉ là phân bổ không gian

Câu trả lời:


37

Nhật ký và ổ đĩa dữ liệu có các mẫu truy cập dữ liệu khác nhau xung đột với nhau (ít nhất là trên lý thuyết) khi chúng chia sẻ một ổ đĩa.

Nhật ký viết

Truy cập nhật ký bao gồm một số lượng rất lớn các bài viết tuần tự nhỏ. Một cách đơn giản, nhật ký DB là bộ đệm vòng chứa danh sách các hướng dẫn để ghi các mục dữ liệu ra các vị trí cụ thể trên đĩa. Mẫu truy cập bao gồm một số lượng lớn các ghi tuần tự nhỏ phải được đảm bảo hoàn thành - vì vậy chúng được ghi ra đĩa.

Lý tưởng nhất là các bản ghi phải ở chế độ yên tĩnh (nghĩa là không chia sẻ với bất kỳ thứ gì khác) âm lượng RAID-1 hoặc RAID-10. Về mặt logic, bạn có thể xem quy trình như DBMS chính ghi ra các mục nhật ký và một hoặc nhiều luồng trình đọc nhật ký tiêu thụ nhật ký và ghi các thay đổi ra đĩa dữ liệu (trong thực tế, quy trình được tối ưu hóa để ghi dữ liệu được ghi ra ngay lập tức nếu có thể). Nếu có lưu lượng khác trên các đĩa nhật ký, các đầu được di chuyển xung quanh bởi các truy cập khác và ghi nhật ký tuần tự trở thành ghi nhật ký ngẫu nhiên. Chúng chậm hơn nhiều, vì vậy các đĩa nhật ký bận rộn có thể tạo ra một điểm nóng hoạt động như một nút cổ chai trên toàn hệ thống.

Dữ liệu ghi

(cập nhật) Ghi nhật ký phải được cam kết vào đĩa (được gọi là phương tiện ổn định) để giao dịch có hiệu lực và đủ điều kiện để cam kết. Người ta có thể xem một cách hợp lý điều này như các mục nhật ký được ghi và sau đó được sử dụng làm hướng dẫn để ghi các trang dữ liệu ra đĩa bằng một quy trình không đồng bộ. Trong thực tế, việc ghi trang đĩa thực sự được chuẩn bị và được đệm vào thời điểm thực hiện nhập nhật ký, nhưng chúng không cần phải được ghi ngay lập tức để giao dịch được thực hiện. Bộ đệm đĩa được ghi ra phương tiện ổn định (đĩa) theo quy trình Lazy Writer (Cảm ơn Paul Randal đã chỉ ra điều này) mà bài viết Technet này thảo luận chi tiết hơn một chút.

Đây là một mẫu truy cập ngẫu nhiên rất nhiều, vì vậy việc chia sẻ cùng một đĩa vật lý với nhật ký có thể tạo ra một nút cổ chai nhân tạo về hiệu năng hệ thống. Các mục log phải được viết cho các giao dịch để thực hiện, do đó, có ngẫu nhiên tìm kiếm chậm lại quá trình này (ngẫu nhiên I / O là nhiều chậm hơn so với tuần tự ghi I / O) sẽ lần lượt đăng nhập từ một sequenital vào một thiết bị truy cập ngẫu nhiên. Điều này tạo ra một nút cổ chai hiệu năng nghiêm trọng trên một hệ thống bận rộn và nên tránh. Điều tương tự áp dụng khi chia sẻ các khu vực tạm thời với khối lượng nhật ký.

Vai trò của bộ nhớ đệm

Bộ điều khiển SAN có xu hướng có bộ nhớ RAM lớn, có thể hấp thụ lưu lượng truy cập ngẫu nhiên ở một mức độ nhất định. Tuy nhiên, đối với tính toàn vẹn giao dịch, mong muốn có đĩa ghi từ DBMS được đảm bảo hoàn thành. Khi bộ điều khiển được thiết lập để sử dụng bộ đệm ghi lại, các khối bẩn được lưu vào bộ đệm và cuộc gọi I / O được báo cáo là hoàn tất cho máy chủ.

Điều này có thể giải quyết rất nhiều vấn đề tranh chấp vì bộ đệm có thể hấp thụ rất nhiều I / O mà nếu không sẽ đi ra đĩa vật lý. Nó cũng có thể tối ưu hóa việc đọc và ghi chẵn lẻ cho RAID-5, giúp giảm bớt ảnh hưởng đến hiệu suất mà các ổ RAID-5 có.

Đây là những đặc điểm thúc đẩy trường phái 'Hãy để SAN đối phó với nó', mặc dù quan điểm này có một số hạn chế:

  • Bộ nhớ đệm ghi lại vẫn có các chế độ thất bại có thể mất dữ liệu và bộ điều khiển đã bị thu hẹp vào DBMS, nói rằng các khối đã được ghi ra đĩa, trong thực tế chúng không có. Vì lý do này, bạn có thể không muốn sử dụng bộ nhớ đệm ghi lại cho một ứng dụng giao dịch, đặc biệt là thứ gì đó chứa dữ liệu quan trọng hoặc nhiệm vụ tài chính trong đó các vấn đề toàn vẹn dữ liệu có thể gây hậu quả nghiêm trọng cho doanh nghiệp.

  • SQL Server (đặc biệt) sử dụng I / O trong chế độ trong đó một cờ (được gọi là FUA hoặc Truy cập cập nhật cưỡng bức) buộc ghi vật lý vào đĩa trước khi cuộc gọi trở lại. Microsoft có một chương trình chứng nhận và nhiều nhà cung cấp SAN sản xuất phần cứng nhằm tôn vinh các ngữ nghĩa này (các yêu cầu được tóm tắt tại đây ). Trong trường hợp này, không có bộ nhớ cache nào sẽ tối ưu hóa việc ghi đĩa, điều đó có nghĩa là lưu lượng truy cập nhật ký sẽ bị phá vỡ nếu nó đang ngồi trên một ổ đĩa chia sẻ bận rộn.

  • Nếu ứng dụng tạo ra nhiều lưu lượng đĩa, bộ làm việc của nó có thể tràn bộ nhớ cache, điều này cũng sẽ gây ra sự cố ghi.

  • Nếu SAN được chia sẻ với các ứng dụng khác (đặc biệt trên cùng một ổ đĩa), lưu lượng truy cập từ các ứng dụng khác có thể tạo ra tắc nghẽn nhật ký.

  • Một số ứng dụng (ví dụ: kho dữ liệu) tạo ra các xung tải lớn thoáng qua khiến chúng khá chống đối xã hội trên SAN.

Ngay cả trên một khối lượng nhật ký riêng SAN lớn vẫn được khuyến khích thực hành. Bạn có thể thoát khỏi việc không lo lắng về bố cục trên một ứng dụng được sử dụng nhẹ. Trên các ứng dụng thực sự lớn, bạn thậm chí có thể nhận được lợi ích từ nhiều bộ điều khiển SAN. Oracle xuất bản một loạt các nghiên cứu trường hợp bố trí kho dữ liệu trong đó một số cấu hình lớn hơn liên quan đến nhiều bộ điều khiển.

Đặt trách nhiệm cho hiệu suất nơi nó thuộc về

Trên một cái gì đó có khối lượng lớn hoặc hiệu suất có thể là một vấn đề, hãy làm cho nhóm SAN chịu trách nhiệm về hiệu suất của ứng dụng. Nếu họ sẽ bỏ qua các đề xuất của bạn về cấu hình, thì hãy đảm bảo rằng ban quản lý nhận thức được điều này và trách nhiệm đối với hiệu suất hệ thống nằm ở vị trí thích hợp. Cụ thể, thiết lập các hướng dẫn có thể chấp nhận cho các thống kê hiệu suất DB chính như I / O chờ hoặc chốt trang chờ hoặc I / O SLA của ứng dụng được chấp nhận.

Lưu ý rằng việc có trách nhiệm phân chia hiệu suất giữa nhiều nhóm sẽ tạo ra động lực để chỉ tay và chuyển khóa cho nhóm khác. Đây là một mô hình chống quản lý đã biết và là một công thức cho các vấn đề kéo dài hàng tháng hoặc hàng năm mà không bao giờ được giải quyết. Tốt nhất, nên có một kiến ​​trúc sư duy nhất có thẩm quyền chỉ định các thay đổi cấu hình ứng dụng, cơ sở dữ liệu và SAN.

Ngoài ra, điểm chuẩn hệ thống dưới tải. Nếu bạn có thể sắp xếp nó, các máy chủ cũ và mảng đính kèm trực tiếp có thể được mua khá rẻ trên Ebay. Nếu bạn thiết lập một hộp như thế này với một hoặc hai mảng đĩa, bạn có thể frig với cấu hình đĩa vật lý và đo lường hiệu quả về hiệu suất.

Ví dụ, tôi đã thực hiện một so sánh giữa một ứng dụng chạy trên SAN lớn (IBM Shark) và hộp hai ổ cắm với mảng U320 đính kèm trực tiếp. Trong trường hợp này, phần cứng trị giá 3.000 bảng mua từ ebay vượt trội so với SAN cao cấp 1 triệu bảng với hệ số hai - trên một máy chủ có cấu hình bộ nhớ và CPU tương đương.

Từ sự cố cụ thể này, có thể lập luận rằng có một cái gì đó như thế này nằm xung quanh là một cách rất tốt để giữ cho các quản trị viên SAN trung thực.


Đó có phải là một cut'n'paste hay TRẢ LỜI TỐT NHẤT MỌI THỨ TRÊN SERVERFAULT !!!!!! :)
Chopper3

Không, tôi chỉ là một người đánh máy nhanh; -}
Mối quan tâmOfTunbridgeWells

Bạn là người đàn ông.
squillman

3
Chỉ tình cờ đọc được điều này từ một liên kết bạn đặt trong một câu trả lời khác. Phần này bạn trả lời sai "Các mục dữ liệu được ghi vào các đĩa dữ liệu bởi trình đọc nhật ký. Điều này tiêu thụ các mục nhật ký và ghi các mục dữ liệu ra đĩa." Việc ghi trang dữ liệu được thực hiện bởi các quy trình của điểm kiểm tra và trình soạn thảo lười biếng trong nhóm bộ đệm và không có gì để làm với các quy trình đọc nhật ký. Trang dữ liệu ghi cũng không tạo ra các bản ghi nhật ký.
Paul Randal

Cũng phát hiện ra. Tôi đã cập nhật bài viết để sửa nó.
Mối quan tâmOfTunbridgeWells

9

Tôi giả sử rằng thẻ Equallogic và nội dung của yêu cầu có nghĩa là bạn đang đánh giá cao về SAN Equallogic. Điều gì sau đây là cụ thể về Equallogic và nó không áp dụng cho các loại SAN khác.

Với các mảng Equallogic, các đĩa cụ thể được sử dụng cho các ổ đĩa không thể được chỉ định chính xác như có thể với các mảng Clariion EMC để cách tiếp cận phải khác một chút.

Kiến trúc Equallogic rất tự động và năng động. Khối xây dựng cơ bản của nó là đơn vị mảng không phải gói RAID \ nhóm trong một mảng như đã thấy trong các SAN khác. Mỗi mảng được cấu hình hoàn toàn cho RAID 5, 6, 10 hoặc 50 mặc dù điều này không có nghĩa là chỉ có một nhóm RAID cho mỗi mảng, bạn không bao giờ có thể quyết định hoặc tương tác với chúng ở cấp độ đó. Bạn đặt mảng vào nhóm Lưu trữ và nhóm của bạn sau đó thuộc về Nhóm lưu trữ. Nhóm lưu trữ có một cụm \ địa chỉ ip ảo mà bạn sử dụng làm mục tiêu Khám phá iSCSI cho tất cả các khối trong nhóm đó - phần mềm quản lý Nhóm EQL và ngăn xếp MPIO lưu trữ xử lý việc chuyển hướng cấp ip cần thiết để thực sự định tuyến đến cổng thích hợp nhất trên các mảng riêng lẻ khi yêu cầu các khối dữ liệu nhưng đó là thứ bạn có ít hoặc không có khả năng kiểm soát.

Khối lượng lưu trữ được chỉ định từ tổng không gian trống trong mỗi hồ bơi. Tất cả các khối trong một nhóm được trải đều trên tất cả các mảng trong nhóm đó (tối đa tối đa 4 mảng riêng biệt) để phân phối IO mạng trên tổng số giao diện mạng (2-4 mỗi mảng Eql tùy thuộc vào mô hình) và IO qua càng nhiều bộ điều khiển càng tốt. Phần mềm quản lý Equallogic theo dõi hiệu suất âm lượng \ mảng theo thời gian và tự động tối ưu hóa việc phân phối các khối trên các mảng thành viên. Nói chung trừ khi bạn biết bạn đang làm gì, bạn nên đặt tất cả các mảng vào một nhóm duy nhất và để nó làm điều đó chỉ cần nhớ để đảm bảo rằng bạn định cấu hình các đĩa tốc độ cao của mình (SAS 10k \ 15k) với RAID 10, tốc độ trung bình với RAID 50 hoặc 5 để đảm bảo rằng quá trình tối ưu hóa thực sự chọn các ổ đĩa hiệu suất cao thực sự.

Với một xấp xỉ thô, bạn sẽ có khoảng 2500-5000 IOP trên mỗi mảng PS tùy thuộc vào loại ổ đĩa và loại RAID. Nếu bạn cung cấp đủ tổng số IOP thì quy trình quản lý tự động cuối cùng sẽ cung cấp cho bạn hiệu suất tốt ngay cả khi bạn chỉ đơn giản gộp tất cả các khối vào một nhóm.

Tuy nhiên, nếu bạn muốn đảm bảo rằng nhật ký, cơ sở dữ liệu, cửa hàng tạm thời, ổ đĩa hệ điều hành của bạn thực sự tách biệt với nhau, bạn có thể thực hiện một số điều. Trước tiên, bạn có thể xác định tùy chọn RAID cho một ổ đĩa sẽ đảm bảo rằng ổ đĩa cụ thể luôn chỉ được lưu trữ trên các mảng của loại RAID đó (nếu chúng có trong nhóm thì âm lượng đó thuộc về). Thứ hai, bạn có thể xác định nhóm lưu trữ theo tầng chỉ chứa các mảng cung cấp các mức hiệu suất khác nhau mà bạn yêu cầu cho tầng cụ thể đó và sau đó phân phối khối lượng của bạn vào các nhóm thích hợp. Cảnh báo về sức khỏe đi kèm với phương pháp này là bạn thường sẽ cần rất nhiều mảng để thực sự mang lại hiệu suất tổng thể tốt hơn - điều đó có thể ít quan trọng với bạn hơn là đảm bảo hiệu suất trên các khối lượng quan trọng của bạn mặc dù vậy nó vẫn thường là tốt nhất sự lựa chọn Kiến trúc tham chiếu của Dell cho Oracle DB sử dụng một nhóm với 2 mảng RAID 10 cho Dữ liệu, Đĩa biểu quyết và OCR và một nhóm riêng biệt với một mảng RAID 5 duy nhất cho Vùng phục hồi Flash.

Tại mọi thời điểm với Equallogic, bạn nên tự hỏi mình nếu các quyết định bạn đưa ra liên quan đến phân vùng được thi hành sẽ cung cấp hiệu suất tổng hợp tốt hơn cho khối lượng của bạn về mặt giao diện mạng, trục chính và bộ điều khiển. Nếu bạn không thể trả lời thì hãy chọn số lượng nhóm tối thiểu và để nó xử lý các chi tiết hoặc nhờ một chuyên gia Equallogic thực hiện một thiết kế thực sự. Nếu bạn chỉ có một mảng thì bạn không thể làm gì về mặt phân tách khối lượng.


5

Chúng tôi lưu trữ các DB của chúng tôi trên các hộp SAN đơn lẻ nhưng với các LUN dữ liệu, nhật ký và sao lưu riêng biệt, mỗi nhóm trên các nhóm đĩa khác nhau, được xếp theo tốc độ - với các nhật ký của chúng tôi về RAID 10 15Krpm LUN, dữ liệu trên RAID 1 10 / 15krpm LUN và sao lưu vào RAID 5 LÚC 7.2krpm. Chúng tôi cũng trình bày nhật ký và dữ liệu thông qua các bộ điều khiển khác nhau trên cùng một SAN.


4

Câu hỏi tuyệt vời!

Trước tiên hãy xem cuộc tranh luận "SteelM BlogMatch" của Brent Ozar về vấn đề này.

Tại công ty của chúng tôi, đối với hầu hết các máy chủ, chúng tôi đặt Dữ liệu và Nhật ký trên cùng một ổ đĩa SAN và để lại cho nhóm SAN để đảm bảo mọi thứ hoạt động tốt.

Tôi bắt đầu nghĩ rằng đây không phải là chiến lược tốt nhất, đặc biệt là đối với các máy chủ có khối lượng cao hơn. Vấn đề tiềm ẩn là tôi thực sự không có cách nào để xác minh rằng nhóm SAN thực sự đang làm bất cứ điều gì hơn là vỗ vào nhau đủ các ổ đĩa cho không gian chúng ta cần. Chúng tôi không chạy các điểm chuẩn IO đối với các ổ đĩa SAN từ phía chúng tôi hoặc bất cứ điều gì, chúng tôi chỉ cho rằng họ đang "làm việc của mình" (điều chỉnh hiệu suất cũng như không gian), có lẽ hơi ngây thơ.

Suy nghĩ khác của tôi là loại truy cập mà dữ liệu và nhật ký cần là khác nhau. Tôi sẽ cố gắng tìm bài báo tôi đọc gần đây đang nói về cách hai loại ổ đĩa khác nhau thực sự nên được tối ưu hóa theo những cách rất khác nhau (tôi nghĩ một cái cần tối ưu hóa cho việc viết tuần tự, cái khác cần tối ưu hóa cho việc đọc ngẫu nhiên, đại loại như thế .)


4

Tóm lại, có, bạn sẽ tạo các khối riêng biệt cho các tệp dữ liệu SQL Server, tệp nhật ký và dữ liệu và tệp nhật ký TempDB.

Vì bạn đã gắn thẻ câu hỏi của mình bằng Equallogic, vui lòng đọc qua Hướng dẫn kiến ​​trúc tham khảo Dell miễn phí : Triển khai Microsoft® SQL Server® với Dell ™ EqualLogic ™ PS5000 Series Lưu trữ (yêu cầu đăng ký) trước khi thiết kế giải pháp của bạn. Thông thường, bạn sẽ thấy rằng hướng dẫn về các cấu hình cụ thể có thể khác biệt đáng kể so với lời khuyên chung chung .


3

Tôi đồng ý với BradC (+1) về hiệu suất. Nói chung, một SAN tốt sẽ có nhiều I / O thô hơn bạn có thể sử dụng.

Vẫn là một ý tưởng tốt để tách BACKUP của bạn khỏi hệ thống trực tiếp của bạn (Rõ ràng tôi biết, nhưng nếu tôi có £ 1 cho mỗi lần tôi thấy điều này ...)

Ngoài ra, nên giữ tempdb khỏi các tệp nhật ký. Anh chàng SAN trợn tròn mắt nhìn bạn khi bạn bắt đầu muốn "các thùng khác nhau" (thuật ngữ kỹ thuật) cho Nhật ký, Dữ liệu và Nhiệt độ, nhưng nếu bạn nói với họ thì bạn có thể đánh giá lượng dữ liệu IO khác nhau đến từng khu vực và làm cho họ để cho bạn thấy đồ thị hiệu suất ưa thích của họ!

Chỉ cần kiểm tra gấp đôi / gấp đôi rằng anh chàng SAN đã thiết lập nó phù hợp với bạn. Nếu bạn muốn RAID 10 thì hãy nhấn mạnh vào nó (tôi đã làm) mặc dù họ cứ nói RAID 5 của họ không bị phạt hiệu năng.

(Đối với các hoạt động "dựa trên tệp", RAID 5 vẫn ổn. Đối với ghi sâu, ngay khi bạn điền vào bộ đệm ghi, bạn đã bắt vít!)


2
+1 cho kỹ thuật xã hội các mọt sách lưu trữ.
pboin

2

Hãy nhận biết tất cả sự pha trộn của các điều khoản ở đây cũng như ..

Nói chung, và rất cơ bản:

  • Mảng = một nhóm đĩa trong cài đặt RAID (như RAID5)
  • Volume = một phần của mảng được trình bày cho máy chủ lưu trữ trên SAN với LUN

Bạn có thể có một số tập trên cùng một mảng, đó là điều cần nhớ khi bạn thực hiện tối ưu hóa cao cấp được thảo luận trong chuỗi này.

Chìa khóa là những gì một số người khác đã đề cập (đừng quên nó), tách biệt dữ liệu / nhật ký / sao lưu trên các trục ổ đĩa khác nhau, không chỉ riêng các ổ đĩa.

Chỉnh sửa: và Helvick ở trên đã cung cấp cho bạn câu trả lời tuyệt vời về SAN tương đươ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.