Server vật lý và các giới hạn

“Necessity is the mother of invention.” – English proverb

3 min
Nội dung bài viết
Bài viết này cũng có bản English.
banner

Hi các bạn 👋. Mình là Hùng Anh.

Đây là bài thứ hai trong series Kubernetes Fundamentals. Ở bài trước, mình đã tìm hiểu các thuật ngữ liên quan đến kernel, driver, và sandbox trong Linux. Lần này cùng mình phân tích xem 1 server vật lý thực sự trông như thế nào, và vì sao không thể cứ deploy mãi lên cùng 1 server nhé.

Bắt đầu thôi.

1. Server vật lý là gì

server-stack

1 server vật lý đơn giản là 1 máy tính thật — 1 chiếc máy đang nằm trong datacenter hoặc thậm chí nó có thể chỉ là 1 chiếc laptop. Các thành phần của nó bao gồm:

  • Hardware: CPU, RAM, ổ đĩa, card mạng.
  • Kernel: Thành phần duy nhất được phép giao tiếp trực tiếp với phần cứng.
  • Driver: Module dịch các lệnh chung của kernel thành lệnh mà phần cứng cụ thể hiểu được.
  • OS (hệ điều hành): Bao gồm kernel cộng với mọi thứ đi kèm nó như shell, package manager, các service hệ thống.
  • Application: Các ứng dụng đang chạy trên server.

Mọi thành phần trên server đều sử dụng 1 kernel duy nhất, chạy trên đúng 1 bộ phần cứng duy nhất.

2. Các giới hạn của server vật lý

Giả sử bạn cần deploy 1 web application. Cách đơn giản nhất là thuê hoặc mua 1 máy vật lý, cài OS, deploy app lên đó. Thời gian đầu, cách này chạy tốt nhưng nó cũng có một vài nhược điểm:

  • Chưa tận dụng hết tài nguyên: Các khảo sát về server x86 thông thường cho thấy mức sử dụng CPU trung bình chỉ khoảng 10-15%. 85-90% còn lại là tài nguyên bạn đã trả tiền nhưng gần như không dùng tới.
  • 1 máy, 1 môi trường: Giả sử app thứ hai cần 1 môi trường khác — 1 phiên bản OS khác. Lựa chọn duy nhất là thêm 1 máy vật lý khác.
  • Scale rất chậm: Traffic tăng đột biến, cần thêm tài nguyên? Mua, lắp, đấu dây thêm 1 máy vật lý mất từ vài ngày đến vài tuần — trong khi 1 đợt traffic tăng thực tế chỉ có vài phút.
  • Tất cả các app có thể cùng go down: 1 máy, 1 điểm lỗi duy nhất. Nếu phần cứng hỏng, mọi app đang chạy trên đó đều sập cùng lúc.
two-machines

3. Tổng kết

1 server vật lý bao gồm 1 kernel, 1 bộ phần cứng và 1 OS đã cài lên nó. Đơn giản, nhưng có giới hạn: phần lớn tài nguyên rảnh rỗi mà không chia sẻ được, chỉ chạy được 1 OS/1 môi trường tại 1 thời điểm, và scale hệ thống đồng nghĩa với việc phải mua, lắp thêm phần cứng.

Liệu có cách nào để 1 phần cứng vật lý duy nhất chạy được nhiều OS khác nhau cùng lúc và tận dụng được phần tài nguyên đang rảnh không? Đó chính là ý tưởng đứng đằng sau Virtual Machine (VM) - chủ đề mà mình và bạn sẽ cùng tìm hiểu ở bài tiếp theo.

Giờ thì tạm biệt và hẹn gặp lại.

Happy reading! 🍵

Tài liệu tham khảo

  1. The history of virtualization and its mark on data center management - TechTarget
  2. What is Server Utilization Rate? A Guide to Data Center Efficiency - Hyperview

Bài viết liên quan

Đừng bỏ lỡ bài mới nhé!