Sử dụng swap (RAM ảo) cho máy chủ Linux (CentOS, Ubuntu…) giúp tăng tốc, giảm quá tải RAM và ổn định cho server. Trong bài viết này, tôi sẽ hướng dẫn các bạn cách thiết lập cấu hình swap trong CentOS. Với các dòng Linux khác như Ubuntu thì thao tác cũng khá tương tự.
SWAP là gì và ý nghĩa của swap trong Linux
Swap trong Linux cũng tương tự như pagefile trong Windows (RAM ảo) là phần bộ nhớ ngoài (ổ cứng) được hệ điều hành sử dụng như bộ nhớ RAM (nên còn gọi là RAM ảo). Swap trong Linux/ hay pagefile trong Windows có vai trò giúp hệ điều hành chạy ổn định hơn, giảm scrash, tăng tốc máy tính (một chút).
Swap và pagefile đặc biệt có ý nghĩa quan trọng với những máy tính mà có dung lượng RAM hạn chế. Với những máy tính/server có dung lượng RAM lớn, đôi khi người ta vẫn tạo thêm swap /pagefile để tăng sự ổn định cho server.
Ngày nay, khi server đang dần sử dụng ổ SSD thay cho các loại ổ cứng cũ, tốc độ đọc/ghi dữ liệu tăng lên gấp hàng chục lần thì việc sử dụng swap /pagefile càng hiệu quả hơn.
Thông thường, dung lượng RAM ảo (swap hay page file) được thiết lập bằng 1.5 lần dung lượng RAM thật. Nếu dung lượng RAM ảo lớn quá (>2 lần RAM thật) thì sẽ làm giảm tốc độ máy vì dù sao tốc độ ổ cứng vẫn thấp hơn nhiều so với tốc độ của RAM.
Hướng dẫn chi tiết cách tạo swap file trong CentOS 6 64bit
Trước hết, bạn cần vào màn hình Console (dòng lệnh, tương tự như dòng lệnh Command Line của DOS). Với các máy chủ cloud (VPS) thì các bạn có thể dùng phần mềm Putty để kết nối qua giao thức SSH. Để tạo swap file trong CentOS 6 64bit (và các dòng CentOS khác) các bạn lần lượt thực hiện các bước sau:
Bước 1: Kiểm tra xem server của bạn đã có SWAP chưa bằng dòng lệnh:
swapon -s
Nếu VPS của bạn chưa có Swap thì kết quả sẽ như sau:
Filename Type Size Used Priority
Bước 2: Tạo file SWAP cho CentOS bằng lần lượt 2 dòng lệnh sau:
dd if=/dev/zero of=/swapfile bs=1024 count=2048k
mkswap /swapfile
Câu lệnh trên sẽ tạo 2048K swap (2GB), bạn có thể thay đổi con số này cho hợp lý với cấu hình server của mình (như ở trên mình đã giải thích, bạn nên tạo swap có dung lượng khoảng gấp rưỡi dung lượng RAM thật là phù hợp)
Sau khi tạo thành công, bạn sẽ nhìn thấy dòng thông báo tương tự như sau:
Setting up swapspace version 1, size = 2048572 KiB
no label, UUID=2fwebe8e9-51de-1c12-a11d-cdadeadffff4
Bước 3:. Kích hoạt SWAP và thiết lập quyền cho Swap file bằng dòng lệnh
swapon /swapfile
chown root:root /swapfile
chmod 0600 /swapfile
Đến đây swap đã hoạt động được rồi, tuy nhiên nếu khởi động lại server thì swap sẽ bị tắt (bạn phải tự kích hoạt lại bằng lệnh swap on). Để swap khởi động cùng CentOS, các bạn tiến hành tiếp bước 4.
Bước 4. Kích hoạt SWAP tự động khởi động cùng hệ điều hành
– Mở file /etc/fstab bằng trình soạn thảo nano hoặc vi:
nano /etc/fstab (hoặc vi /etc/fstab => tùy bạn quen cách nào)
Thêm vào cuối fstab dòng sau:
/swapfile none swap sw 0 0
Sau đó nhấn CTRL + O để lưu – > Enter -> CTRL + X để thoát ra (đối với nano).
Vậy là bạn đã tạo thành công swap cho VPS của mình rồi. Bạn có thể kiểm tra lại dung lượng swap của server (bằng câu lệnh swapon -s) xem đã đúng chưa hoặc xem tình trạng hoạt động của swap
Cấu hình swappiness tối ưu cho swap
– Swappiness là mức độ ưu tiên sử dụng swap của hệ điều hành, khi lượng RAM còn lại bằng giá trị của swappiness (tính theo tỷ lệ phần trăm) thì swap sẽ được sử dụng. Swappiness có giá trị trong khoảng 1 – 100.
- swappiness = 0: swap chỉ được dùng khi RAM được sử dụng hết
- swappiness = 10: swap được sử dụng khi RAM còn 10%.
- swappiness = 60: giá trị mặc định
- swappiness = 100: swap được ưu tiên như là RAM.
– Kiểm tra cấu hình swappiness của swap bằng câu lệnh:
cat /proc/sys/vm/swappiness
– Cấu hình tối ưu swappiness cho swap: Do tốc độ đọc ghi dữ liệu của RAM cao hơn nhiều tốc độ đọc ghi dữ liệu của ổ cứng nên nếu đặt mức ưu tiên sử dụng swap cao thì sẽ ảnh hưởng đến hiệu suất hoạt động của hệ thống. Chúng ta nên đặt swappiness khoảng 10-20 là phù hợp.
– Cách thiết lập lại swappiness tối ưu cho swap: Các bạn mở file sysctl.conf và tìm dòng vm.swappiness rồi sửa thành vm.swappiness =20 là OK
vi /etc/sysctl.conf
vm.swappiness=20
OK roài đó, mình vừa hướng dẫn các bạn cách tạo SWAP file trong CENTOS giúp ổn định server. Với VPS UBuntu (Ubuntu 10.04, 12.04, 14.04) hay các Distro linux khác bạn đều làm tương tự.
Have fun!