Những hạn chế của việc chạy cơ sở dữ liệu bên trong một máy ảo là gì? Làm thế nào để tôi vượt qua chúng? [đóng cửa]


66

Chạy bất cứ thứ gì bên trong một máy ảo sẽ có một số mức hiệu năng đạt được, nhưng nó thực sự ảnh hưởng đến hiệu năng của một hệ thống cơ sở dữ liệu đến mức nào?

Tôi tìm thấy tài liệu tham khảo học thuật này với một số điểm chuẩn thú vị, nhưng nó chỉ là một bài kiểm tra giới hạn chỉ sử dụng Xen và PostgreQuery. Kết luận là việc sử dụng VM "không có chi phí cao về hiệu năng" (mặc dù bạn có thể nghĩ dữ liệu thực tế nói khác).

Các nhược điểm kỹ thuật, quản trị và các nhược điểm khác liên quan đến việc chạy cơ sở dữ liệu trong máy ảo là gì?

Xin vui lòng gửi câu trả lời có thể được hỗ trợ bởi các sự kiện khách quan, tôi không quan tâm đến suy đoán hoặc bất kỳ tranh luận bán tôn giáo nào khác (niềm đam mê của geek là tốt theo nhiều cách, nhưng điều đó sẽ không giúp chúng tôi ở đây).

Điều đó đang được nói,

  • Vấn đề gì hiển thị khi chạy cơ sở dữ liệu trong Máy ảo? (xin vui lòng gửi tài liệu tham khảo)
  • Là những vấn đề quan trọng?
    • Có phải họ chỉ có ý nghĩa trong các kịch bản nhất định?
  • Cách giải quyết là gì?

+1 Tôi chủ yếu quan tâm đến việc nghe phản hồi về các kịch bản SQL Server và Windows 2008 R2
goodguys_activate

4
@Shane Madden - Bạn có thể vui lòng giải thích việc đóng cửa một chút không? Tôi hy vọng rằng động lực được thúc đẩy bởi một câu trả lời không cụ thể (sau đó bị trật bánh trong các bình luận), chứ không phải chính câu hỏi. Liên quan đến câu hỏi, 44 phiếu bầu và 12 lượt yêu thích trong khoảng một ngày tồn tại trước khi đóng cửa ngụ ý với tôi rằng đó là một câu hỏi hay với câu trả lời / thông tin hữu ích (đặc biệt là so với những gì có vẻ là điển hình cho lưu lượng câu hỏi của ServerFault). Đây là những gì các trang web SE khác nhau đang nhắm đến. Bạn có muốn đặt một câu hỏi cụ thể hơn, so với câu "nó tệ đến mức nào?".
Nga

1
@ErikA, Shane, Womble, mikeyb, Ben - Tôi đã thực hiện một chỉnh sửa cộng đồng có thể làm cho câu hỏi này mang tính xây dựng hơn. Hãy xem xét mở lại điều này, hoặc đăng một câu hỏi tương tự lên một câu hỏi mới / sạch.
goodguys_activate

Câu trả lời:


41

Mặc dù nhiều nhà cung cấp DB rất chậm để làm điều này, nhưng gần như tất cả họ hiện chính thức hỗ trợ phần mềm của họ chạy trong môi trường ảo hóa.

Chúng tôi chạy nhiều phiên bản Oracle 11g trong linux trên ESXi và chắc chắn có thể có được hiệu năng rất tốt. Như với tất cả các tỷ lệ phần cứng, bạn chỉ cần đảm bảo rằng máy chủ ảo hóa có nhiều tài nguyên (RAM, CPU) và lớp đĩa của bạn có nhiệm vụ cung cấp bất kỳ hiệu suất IO nào bạn yêu cầu.


7
+1 Như đã lưu ý, Quan trọng là các tài nguyên tùy theo nhiệm vụ. Đĩa đã là nút cổ chai lớn đối với chúng tôi và cần có kế hoạch cẩn thận.
Dave M

2
+1 Bạn cần làm bài tập về nhà trước khi sử dụng cơ sở dữ liệu . Nếu hộp vật lý của bạn đang bị tấn công trên mức sử dụng trên 40% thì lợi thế của bạn đối với nó bắt đầu tan biến. Điều đó đang được nói rằng chúng tôi có hàng tấn sql cô lập dành riêng cho ứng dụng nhỏ đang chạy trên vm mà không có vấn đề gì. Nhưng các máy sử dụng nặng lớn của chúng tôi có phần cứng chuyên dụng vì thiếu lợi thế.
Nate

5
Chắc chắn Disk IO là thủ phạm lớn và những gì môi trường ảo hóa có xu hướng không ổn định.
lynxman

1
@lynxman - Đồng ý. Chúng tôi chạy tất cả các phiên bản Oracle của chúng tôi trên các đĩa SAN Cấp 1 của chúng tôi, đó là 15k SAS. Từ những gì tôi có thể nói, chúng tôi rất gần với hiệu suất bản địa.
EEAA

10
"Một ounce thử nghiệm có giá trị một pound đoán."
Chris B. BehDR

21

Như ErikA nói, điều này ngày càng trở nên phổ biến. Tôi đang ở trong trại SQL Server và cá nhân tôi không có bất kỳ hệ thống sản xuất nào đang chạy trong VM, nhưng tôi sẽ không do dự (sau khi nghiên cứu thêm về chủ đề này). Tuy nhiên, chắc chắn có một số điều cần xem xét trước khi bạn đi vào con đường đó, (ít nhất là đối với SQL Server). Đĩa IO (như những người khác đã đề cập) và phân bổ bộ nhớ chỉ là 2 ví dụ. Mọi thứ cũng sẽ khác nhau giữa các siêu giám sát khác nhau.

Brent Ozar là một chuyên gia được công nhận trong việc ảo hóa SQL Server, đặc biệt là trong VMWare. Tôi rất muốn giới thiệu đọc qua tài liệu của mình.

http://www.brentozar.com/community/virtualization-best-practices/


11

thể và sau đó nên có . Một tàu hộ tống có thể đi 150 dặm một giờ, nhưng bạn có nên đi trên đường cao tốc công cộng? Bạn có thể làm hại chính mình một cách không cần thiết.

Cơ sở dữ liệu là hệ điều hành khách. Bằng cách thiết kế khi họ bắt đầu, họ lấy các khối tài nguyên và quản lý trực tiếp vì lý do hiệu suất. Ngay khi bạn biến hệ điều hành lõi của máy chủ cơ sở dữ liệu thành khách trong môi trường lưu trữ ảo hóa, thì bạn đang đặt một lớp phân xử với bộ ảo hóa giữa phần tử được phân bổ của đĩa và RAM và máy chủ cơ sở dữ liệu. Nó sẽ chậm lại. Các truy vấn của bạn càng không hiệu quả, nó sẽ càng chậm. Những sự thiếu hiệu quả này có thể được che dấu ngày hôm nay trên phần cứng chuyên dụng, nhưng ngay khi bạn giới thiệu trọng tài cho tài nguyên phụ thuộc của mình, bạn sẽ tìm ra thực sự nhanh chóng.

Điều mà rất nhiều máy đếm đậu đang yêu cầu ảo hóa không thể nhận ra là các máy chủ cơ sở dữ liệu, với tư cách là hệ điều hành khách, cung cấp lớp hợp nhất của riêng chúng. Không có lý do tại sao bạn không thể di chuyển hợp nhất nhiều trường hợp cơ sở dữ liệu lôgic trên một máy chủ vật lý, thậm chí đến điểm di chuyển địa chỉ IP, thiết lập tên máy chủ bổ sung, v.v ... để cho phép diễn ra dịch vụ kết hợp tự nhiên này. Và, với mô hình này, bạn không chỉ giữ được sự tiết kiệm chi phí mà ban quản lý đang thúc đẩy giảm số lượng máy chủ vật lý, mà bạn còn giữ quyền truy cập khối vào tài nguyên vật lý mà không cần đến trình ảo hóa tùy ý, đôi khi có thể đưa ra quyết định có lợi khác.

Điều tương tự cũng đúng với các hệ điều hành khách khác, như Java. Các giải pháp ảo hóa thường là các môi trường bận rộn và nhà ảo thuật phải đưa ra nhiều quyết định về việc ai "lấy mã thông báo" trên một tài nguyên. Bất cứ lúc nào bạn có thể loại bỏ lớp đó bạn sẽ trở nên tốt hơn.

Trước tiên, kết hợp nhiều trường hợp sử dụng lớp hệ điều hành khách tự nhiên. Vấn đề là bạn sẽ có thể đạt được các mục tiêu hợp nhất và hiệu suất nền tảng của mình dễ dàng hơn.


4
Định nghĩa thú vị của "hệ điều hành khách." Trong khi quan điểm của bạn được đưa ra liên quan đến hiệu năng thuần túy, không bị biến đổi, tần suất cơ sở dữ liệu của bạn thực sự bị tắc nghẽn ở CPU là bao nhiêu? I / O có nhiều khả năng hơn và đối với các ứng dụng hiệu suất cao hơn, bạn đã chia sẻ thời gian I / O tại SAN. Tôi hy vọng rằng bạn sẽ xem xét lại triết lý ảo hóa của mình khi sự cố bảo mật với một ứng dụng làm ảnh hưởng đến tất cả các băm mật khẩu của cơ sở dữ liệu hợp nhất của bạn hoặc khi một tiến trình chạy trong JVM của bạn tiêu tốn từng byte dung lượng heap có sẵn.
Shane Madden

5
Để rõ ràng, tôi hoàn toàn đồng ý rằng một máy chủ cơ sở dữ liệu hiệu suất cao được điều chỉnh tốt, ồ ạt, nên có phần cứng vật lý riêng. Nhưng những điều đó không phải là chuẩn mực, và những lợi ích khác của ảo hóa có xu hướng lớn hơn hiệu suất đạt được, không thể phân biệt với hầu hết khối lượng công việc.
Shane Madden

3
Tôi không đồng ý với quan điểm của bạn về việc luôn đi đến các lớp hợp nhất hiện có trước tiên. Đôi khi điều đó có ý nghĩa. Nhưng nhìn, chẳng hạn, với sự đánh đổi chi phí trong việc cân bằng lại các nguồn lực giữa việc hợp nhất nhiều cơ sở dữ liệu trên một HĐH duy nhất và hợp nhất nhiều kết hợp cơ sở dữ liệu / HĐH trên một trình ảo hóa. Việc đầu tiên là hiệu quả hơn. Thứ hai là dễ dàng hơn để cân bằng lại. Di chuyển và hệ điều hành / cơ sở dữ liệu sang một máy chủ mới ít gây gián đoạn hơn nhiều so với việc di chuyển cơ sở dữ liệu sang hệ điều hành mới.
Jake Oshins

Nhận xét của tôi đến từ những quan sát trực tiếp tại hiện trường về việc di chuyển thành công và thất bại sang các giải pháp ảo hóa trong thập kỷ qua với tư cách là một kỹ sư hiệu suất. Có hàng tấn ứng dụng cơ sở dữ liệu xấu ngoài kia có sử dụng bừa bãi các vấn đề về hiệu năng của mặt nạ phần cứng. Thêm ảo hóa và những vấn đề được đưa ra ánh sáng. Nếu bạn có một ứng dụng đòi hỏi một đồng hồ chính xác cho mục đích kiểm tra thời gian hoặc kiểm toán, thì với đồng hồ nổi trong ảo hóa phần mềm, bạn sẽ không bị săn lùng.
James Pulley

1
Wow, thật tuyệt vời James. Tôi không có thời gian cũng như không kiên nhẫn để bỏ qua tất cả những điểm bạn đưa ra trong câu trả lời của bạn và những bình luận tiếp theo, nhưng tôi chỉ cảm thấy mình cần phải bình luận ở đây cho bất kỳ ai có thể xảy ra với câu trả lời này. Quan điểm của James là, của chính ông, và không phản ánh những gì thực sự có thể. Nếu bạn đăng ký vượt mức thì tất nhiên bạn sẽ có hiệu suất kém. Vì vậy, đừng đăng ký quá nhiều. Hoàn toàn có thể có một môi trường ảo hóa hiệu năng rất cao. Thật là điên rồ khi đưa ra một đề nghị chống lại nó bởi vì nó "hoạt động kém".
EEAA

6

Có hai điều cần nhận ra ở đây:

  • Đơn vị hiệu suất DB trên mỗi đơn vị Phần cứng thấp hơn một chút đối với db ảo hóa. Điều này có nghĩa là bạn cần mua thêm một chút phần cứng để có cùng mức hiệu năng.
  • Điều đó không có nghĩa là cùng mức hoặc mức hiệu suất mong muốn là không thể đạt được. Những lợi ích bạn nhận được từ cải thiện quản lý và lợi ích khác (như dễ dàng hơn HA) thường cách hơn bù đắp chi phí phần cứng tăng nhẹ.

Điều đó nói rằng, nơi tôi làm việc, cài đặt Sql Server của chúng tôi là một trong hai máy chủ mà tôi không có ý định ảo hóa bất cứ lúc nào (cái còn lại là DC chính).


4

Chạy SQL Server là một VM sẽ ổn, miễn là bạn có thể cung cấp đủ tài nguyên cho VM để chạy ứng dụng của bạn. Nếu trong thế giới vật lý bạn cần 24 lõi và 256 Gigs RAM thì bạn cần cung cấp 24 vCPU và 256 Gigs RAM trong thế giới ảo.

Tôi vừa viết một bài báo trong tháng trước tạp chí SQL Server về việc chạy SQL Server theo vSphere của VMware.


2

Tôi chạy hai cơ sở dữ liệu, một PostgreSQL và MySQL khác, trong một môi trường ảo (Xen) nơi các dom0 rất khả dụng. Tất cả các hệ thống tệp domU đều nằm trên iSCSI SAN LUN, được khắc với các khối logic LVM2. Cơ sở dữ liệu MySQL chỉ dành cho Cacti và do đó không thấy sử dụng nhiều, và cũng nằm trên iSCSI LUN.

Cơ sở dữ liệu PostgreSQL là cơ sở dữ liệu cho môi trường dàn dựng của chúng tôi và do đó thấy mức độ sử dụng cao hơn so với db db. Vì lý do này, cơ sở dữ liệu được đặt trên bộ RAID10 cục bộ và DRBD được sao chép sang nút cụm thứ hai. Tuy nhiên, về mặt tải thực, cơ sở dữ liệu dàn này không thấy tải rất cao. Mà theo tôi, làm cho nó trở thành một ứng cử viên tốt / tuyệt vời để ảo hóa.

Một số lợi ích cho tổ chức của chúng tôi là giảm mức tiêu thụ điện năng, tiết kiệm không gian giá đỡ và chi phí quản lý phần cứng ít hơn.

Mặt khác, cơ sở dữ liệu sản xuất của chúng tôi, tôi không thể tưởng tượng được việc ảo ....


2

Tôi làm việc với các máy chủ MSSQL và MySQL trên nhiều máy chủ. Cách đây vài năm, tôi đã do dự khi bắt đầu thiết lập máy chủ SQL trên máy ảo vì tôi đã nghe về các vấn đề về hiệu năng khi chạy máy chủ SQL trên máy ảo. Tuy nhiên, tôi đã rất ngạc nhiên sau khi tôi thiết lập một vài máy chủ SQL đầu tiên của mình và thấy hiệu suất không thay đổi. Ngày càng có nhiều máy chủ tôi làm việc trên VM và hầu hết tất cả các máy khách doanh nghiệp lớn hơn mà tôi làm việc đều có máy chủ SQL có đạo đức.

Có, VM sẽ thêm một số chi phí trên không và nếu bạn sẽ lưu trữ nhiều VM trên một hộp, bạn sẽ cần một máy chủ khỏe mạnh. Một vấn đề tài nguyên phổ biến cần chú ý là thêm các VM bổ sung và làm loãng các tài nguyên có sẵn. Đó là thực tế phổ biến để lập kế hoạch cho một số tăng trưởng, nhưng nếu bạn đã mua máy chủ của mình để lưu trữ 2 hoặc 3 máy ảo và bây giờ nó đang chạy 10 máy ảo, bạn có thể sẽ thấy hiệu suất cao.

Tôi sẽ nói dối nếu tôi nói rằng tôi chưa bao giờ thấy các vấn đề về hiệu năng khi chạy máy chủ SQL trên máy ảo. Nhưng, tôi đã học được rằng nếu bạn đang thấy hiệu suất kém, có lẽ có điều gì đó không ổn với môi trườ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.