Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

13 tháng 2, 2019

Sử dụng phân vùng swap trên môi trường Linux

1. Trước tiên cần hiểu SWAP trên môi trường Linux là gì?
Có thể hiểu đơn giản phân vùng SWAP là  một vùng nhớ bổ sung thêm cho bộ nhớ của hệ thống (RAM), nằm trên ổ đĩa cứng. Nếu bộ nhớ hệ thống bị đầy thì một số vùng nhớ sẽ được đưa xuống SWAP thay vì bị hệ thống hủy tiến trình.
Tuy nhiên, phân vùng SWAP có một vấn đề là do nó là một phần bộ nhớ nằm trên ổ đĩa (HDD hoặc SDD) nên tốc độ của nó sẽ chậm hơn so với tốc độ bộ nhớ chính nên không có nghĩa là bạn có thể sử dụng nó để thay thế hoàn toàn cho bộ nhớ chính.
2. Vậy nguyên tắc hoạt động của phân vùng SWAP như nào?
Có một hiểu lầm phổ biến về việc sử dụng phân vùng SWAP trên các hệ thống, đó là: việc sử dụng phân vùng SWAP gây ảnh hưởng tới hiệu năng của toàn bộ hệ thống do tốc độ đọc ghi trên phân vùng này chậm hơn tốc độ đọc ghi trên RAM. Điều này là hoàn toàn sai lầm. Trong trường hợp hệ thống của bạn có đủ RAM để hoạt động, việc bạn có cấp thêm phân vùng SWAP cho hệ thống hay không cũng không ảnh hưởng gì tới hiệu năng của hệ thống do hệ thống không phải liên tục chuyển đổi giữa RAM và SWAP. Còn trong trường hợp bạn không có đủ RAM thì sao?  Như các bạn đã biết thì bộ nhớ RAM có giá thành cao hơn rất nhiều so với giá của ổ đĩa và rõ ràng là bạn không thể cứ tăng RAM lên liên tục cho hệ thống, khi đó phân vùng SWAP sẽ giải quyết bài toán này cho bạn. Hãy xem ví dụ dưới đây:
  • Nếu bạn không sử dụng phân vùng SWAP và khi RAM của bạn bị sử dụng hết, kernel của hệ thống sẽ lựa chọn một/nhiều tiến trình mà nó nghĩ là cần phải loại bỏ (việc lựa chọn như nào phụ thuộc vào thuật toán được trang bị cho kernel) và loại bỏ chúng (kill).
  • Nếu bạn sử dụng phân vùng SWAP thì khi RAM của bạn bị sử dụng hết, kernel của hệ thống sẽ lựa chọn một vùng nhớ (memory page) ít được sử dụng nhất để đẩy xuống phân vùng SWAP để giải phóng RAM sử dụng vào các mục đích khác. Việc này có thể làm chậm hệ thống một chút nhưng sẽ đảm bảo cho ứng dụng của bạn không bị ảnh hưởng bới những ứng dụng khác.

Tuy nhiên, bạn cần luôn nhớ trong trường hợp nếu bạn có phân vùng SWAP mà vẫn bị hết thì tiến trình sẽ vẫn bị loại bỏ bởi kernel.
3. Vậy câu hỏi đặt ra ở đây là liệu có thực sự cần phân vùng SWAP?
Câu trả lời ở đây chính xác là TỐT NHẤT BẠN NÊN SỬ DỤNG, bởi lý do tôi đã nêu ở trên: nếu bạn đủ RAM thì hệ thống không phải thường xuyên đổ vùng nhớ xuống SWAP nên sẽ không bị ảnh hưởng tới hiệu năng hệ thống, còn trong trường hợp bị thiếu RAM (điều mà bạn không biết chắc lúc nào sẽ xảy ra) thì SWAP sẽ giúp cho các ứng dụng của bạn không bị ảnh hưởng.
4. Vậy tạo phân vùng SWAP như nào?
Để tạo phân vùng SWAP bạn cần có quyền sudo trên hệ thống.
Dùng lệnh dd để tạo file swap trên thư mục gốc của hệ thống, trong đó bs là kích thước block (block size) và count là số block., trong ví dụ dưới đây là tạo một file swap 4GB
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
Trong đó:
- bs và count: có thể là c = 1, w = 2, b = 512, kB = 1000, K = 1024,  MB = 1000 * 1000, M = 1024 * 1024, xM = M, GB = 1000 * 1000 * 1000, G = 1024 * 1024 * 1024 cứ như thế với T, P, E, Z và Y
Cập nhật quyền read, write cho file swap:
sudo chmod 600 /swapfile
Cài đặt phân vùng swap:
sudo mkswap /swapfile
Cho phép hệ thống sử dụng file swap này là vùng nhớ swap:
sudo swapon /swapfile
Kiểm tra xem đã làm đúng các thao tác chưa:
sudo swapon -s
Hoặc:
sudo swapon --show
Cho phép hệ thống sử dụng phân vùng swap vừa tạo ngay cả khi bị khởi động lại:
sudo vi /etc/fstab
Thêm vào dòng sau:

/swapfile swap swap defaults 0 0 
Kiểm tra lại xem fstab đã được chưa bằng lệnh:
mount -a
Nếu không có thông báo lỗi nào hiện ra thì đã thêm vào fstab thành công.
Tham khảo thêm tại:
https://linuxize.com/post/create-a-linux-swap-file/

Không có nhận xét nào:

Đăng nhận xét