Các thực tiễn tốt nhất để chạy SQL Server trong Máy ảo là gì?


21

Các thực tiễn tốt nhất để chạy SQL Server trong Máy ảo là gì? Các hoạt động giao dịch trực tuyến của tôi rất thấp, nhưng có một lượng xử lý dữ liệu cao cho mục đích cung cấp dữ liệu báo cáo cho nhiều trang web.


2
Các đĩa được lưu trữ ở đâu? trên ổ cứng 5400 RPM cục bộ? Trên SAN có kết nối Fiber và đĩa trục chính 15k? Tất cả các máy ảo ngày nay là về IO, CPU gần như không có gì để xem xét.
jcolebrand

Không, không phải địa phương. Nhưng tôi không biết chi tiết về SAN.
JerryOL

2
Tôi không thể thêm nhận xét vì tôi chưa có đủ danh tiếng, nhưng [theo Microsoft] [1] năm 2008 R2 có rất ít sự khác biệt về hiệu năng giữa các đĩa ảo cố định và động. [1]: blogs.msdn.com/b/tvoellm/archive/2009/08/05/...
Terry Bochaton

@Terry, trong tương lai, vui lòng gắn cờ câu trả lời như vậy và chúng tôi sẽ chuyển đổi nó cho bạn.
jcolebrand

Câu trả lời:


18

Như với máy móc vật lý IO là vua. Sẽ có một cú đánh IO đáng chú ý từ ảo hóa (mức độ tấn công phụ thuộc vào công nghệ bạn chọn), vì vậy hãy chắc chắn rằng bạn không làm gì có thể làm trầm trọng thêm điều này và làm hại hiệu suất IO hơn nữa.

  • Luôn sử dụng kích thước cố định, không phải đĩa ảo động và đảm bảo rằng các ổ / mảng bên dưới là đủ. Vdisks động ít hiệu suất hơn so với kích thước cố định.
  • Nếu dữ liệu trong máy ảo không phải là nhiệm vụ quan trọng, hãy bật khả năng của giải pháp VM để ghi bộ đệm (nói dối hiệu quả với hệ điều hành khách về thời điểm mọi thứ được ghi vào đĩa vật lý) để có hiệu suất cao hơn. Điều này hữu ích cho máy phát triển và thử nghiệm, nơi dữ liệu dễ dàng được thay thế hoặc sao chép chỉ đọc cục bộ thành bản gốc có thể được tạo lại nếu gặp bất kỳ sự cố nào, nhưng chúng tôi khuyên các tùy chọn đó nên dừng lại cho các hệ thống sản xuất và sao lưu như chúng làm tăng khả năng mất dữ liệu (hoặc tệ hơn là tham nhũng) nếu máy tắt bất ngờ.
  • Đảm bảo rằng mỗi VM có đủ RAM dành riêng cho nó để bộ làm việc bình thường của mỗi cơ sở dữ liệu phù hợp với bộ nhớ với một lượng phòng trống dự phòng để tránh IO không cần thiết. Ngoài ra, đảm bảo rằng trình ảo hóa sẽ không loại bỏ RAM VM bất cứ lúc nào (ví dụ: hầu hết các sản phẩm VMWare có thể làm điều này, cho phép bạn chạy một bộ VM lớn hơn so với trên phần cứng khác, nhưng sự suy giảm hiệu năng có thể có khối lượng lớn - có một tùy chọn để điều chỉnh hoặc tắt hành vi này).
  • Nếu máy chủ sử dụng mảng RAID5, hãy xem xét chuyển sang RAID10. Điều này sẽ giảm dung lượng có sẵn nhưng loại bỏ các vấn đề về hiệu suất ghi có thể thấy rõ với RAID5 (hoặc 6).
  • Đối với các máy ảo có khả năng nhìn thấy nhiều hoạt động IO, hãy xem xét cung cấp cho chúng ổ đĩa hoặc mảng của riêng chúng hoặc chỉ để chúng chia sẻ (các) ổ đĩa / mảng của chúng với dữ liệu thấy hoạt động thấp.

Tất nhiên, nếu toàn bộ DB của bạn (và mọi thứ khác mà VM đang chạy) phù hợp với RAM được phân bổ cho VM và nó thấy rất ít hoạt động ghi, hiệu suất IO có thể ít gặp sự cố hơn.

Chỉnh sửa: một vài điểm nữa:

  • Nếu sử dụng đĩa ảo, đảm bảo rằng loại bộ điều khiển tốt nhất được sử dụng cho hiệu suất. Một số giải pháp ảo hóa cung cấp một số loại bộ điều khiển ảo để tương thích với khách tốt hơn và bạn có thể thấy một số loại kém hiệu quả hơn các loại khác do hạn chế giao thức trong thiết kế mà chúng mô phỏng và các hạn chế trong trình điều khiển của hệ điều hành khách.
  • Nếu giải pháp ảo hóa của bạn cung cấp các trình điều khiển cụ thể cho bộ điều khiển ổ đĩa ảo, hãy đảm bảo HĐH khách của bạn đang sử dụng chúng - chúng có thể tăng tốc IO số lượng lớn bằng cách giảm số lượng bản sao bộ nhớ vào bộ nhớ và lưu trữ <-> hypanneror <-> bối cảnh khách thiết bị chuyển mạch tham gia vào một số hoạt động.
  • Hai điểm trên áp dụng nếu bạn đang sử dụng bộ lưu trữ mạng như cổ phiếu SMB đơn giản hoặc iSCSI: đảm bảo rằng bạn đang sử dụng bộ điều khiển mạng ảo hiệu quả nhất được cung cấp và hệ điều hành khách của bạn đang sử dụng trình điều khiển được đề xuất cho nó, nếu không cả độ trễ và băng thông có thể bị giới hạn nhiều hơn nhu cầu của lớp ảo hóa.

1
Vâng, có và không. Một khối lượng SAN được gắn vào VM thông qua bộ khởi tạo iSCSI sẽ khá nhanh!
Gaius

1
@Gaius: điểm tốt. Tôi đã thêm một lưu ý liên quan đến vNIC và trình điều khiển, có khả năng là nguồn gây ra tắc nghẽn thêm trong những trường hợp đó.
David Spillett

9

1
~ Có phần nào mà bạn có thể muốn làm nổi bật từ các bài viết không?
jcolebrand

2
Không. Vì ảo hóa có thể là một chủ đề phức tạp, tôi khuyên bạn nên đọc tất cả. Nó không thực sự nhiều như vậy. Nếu OP đang tìm kiếm một câu trả lời nhanh, có lẽ nó sẽ không phải là câu trả lời chính xác.
Eric Humphrey - lotahelp

Tôi đã sau khi thực hành tốt nhất nói chung. Vừa mới chuyển SQLServer 2000 Standard sang một VM mới, tôi đang cố gắng giải quyết các vấn đề với các trang web gọi các thủ tục được lưu trữ mà hết thời gian nếu chúng không được lưu trong bộ nhớ; mặc dù bộ nhớ được gán vật lý và VM là như nhau, 4GB.
JerryOL

1
@JerryOL: Đảm bảo rằng RAM được phân bổ cho VM không được phép bỏ qua (phân bổ 4Gb cho VM không giống như có 4GB trên máy vật lý) và nếu giải pháp ảo hóa bạn sử dụng cung cấp các loại bộ điều khiển ảo khác nhau đảm bảo chọn cái tốt nhất và trình điều khiển phù hợp được sử dụng bởi hệ điều hành khách.
David Spillett
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.