Cách thêm swap trên CentOS 7
Một trong những cách dễ nhất để làm cho server của bạn phản hồi nhanh hơn và bảo vệ khỏi lỗi hết bộ nhớ trong ứng dụng của bạn là thêm một số không gian swap . Swap là một khu vực trên ổ lưu trữ, nơi hệ điều hành có thể tạm thời lưu trữ dữ liệu mà nó không còn có thể lưu giữ trong bộ nhớ.Điều này cung cấp cho bạn khả năng tăng lượng thông tin mà server của bạn có thể lưu giữ trong bộ nhớ hoạt động của nó, với một số lưu ý. Đọc từ và ghi vào swap chậm hơn so với sử dụng bộ nhớ, nhưng nó có thể cung cấp một mạng lưới an toàn tốt khi server của bạn sắp hết bộ nhớ.
Nếu không có trao đổi, một server hết bộ nhớ có thể bắt đầu giết các ứng dụng để giải phóng bộ nhớ hoặc thậm chí là sập. Điều này có thể khiến bạn mất dữ liệu chưa được lưu hoặc trải qua thời gian chết. Để đảm bảo truy cập dữ liệu tin cậy , một số ứng dụng yêu cầu swap để hoạt động.
Trong hướng dẫn này, ta sẽ trình bày cách tạo và kích hoạt file swap trên server CentOS 7.
Mặc dù swap thường được khuyến khích cho các hệ thống sử dụng ổ cứng quay truyền thống, nhưng sử dụng swap với SSD có thể gây ra sự cố xuống cấp phần cứng theo thời gian. Do sự cân nhắc này, ta không khuyên bạn nên bật tính năng swap trên DigitalOcean hoặc bất kỳ nhà cung cấp nào khác sử dụng bộ nhớ SSD. Làm như vậy có thể ảnh hưởng đến độ tin cậy của phần cứng cơ bản đối với bạn và những người hàng xóm của bạn.
Nếu bạn cần cải thiện hiệu suất của server , ta khuyên bạn nên nâng cấp Server của bạn . Điều này sẽ dẫn đến kết quả tốt hơn nói chung và sẽ giảm khả năng góp phần vào các vấn đề phần cứng có thể ảnh hưởng đến dịch vụ của bạn.
Yêu cầu
Trước khi bạn bắt đầu với hướng dẫn này, có một số bước cần được hoàn thành trước.
Bạn cần một server CentOS 7 được cài đặt và cấu hình với user không phải root có quyền sudo
. Nếu bạn chưa làm điều này, bạn có thể chạy qua các bước từ 1 đến 4 trong hướng dẫn cài đặt server ban đầu CentOS 7 để tạo account này.
Sau khi có user không phải root, bạn có thể sử dụng nó để SSH vào server CentOS và tiếp tục cài đặt file swap của bạn .
Kiểm tra hệ thống để biết thông tin swap
Trước khi bắt đầu, ta nên xem xét dung lượng lưu trữ của server để xem liệu ta đã có sẵn một số dung lượng swap chưa. Mặc dù ta có thể có nhiều file swap hoặc swap phân vùng, nhưng nhìn chung thì một file là đủ.
Ta có thể xem liệu hệ thống có bất kỳ swap được cấu hình nào bằng cách sử dụng swapon
, một tiện ích swap có mục đích chung. Với cờ -s
, swapon
sẽ hiển thị tóm tắt về mức độ sử dụng và tính khả dụng của swap trên thiết bị lưu trữ của ta :
swapon -s
Nếu không có gì được trả về bởi lệnh, thì bản tóm tắt trống và không có file swap nào tồn tại.
Một cách khác để kiểm tra không gian swap là với tiện ích free
, cho ta thấy mức sử dụng bộ nhớ tổng thể của hệ thống. Ta có thể xem bộ nhớ hiện tại và mức sử dụng swap (tính bằng megabyte) bằng lệnh :
free -m
total used free shared buffers cached Mem: 3953 315 3637 8 11 107 -/+ buffers/cache: 196 3756 Swap: 0 0 4095
Như bạn thấy , tổng không gian swap của ta trong hệ thống là 0. Điều này trùng với những gì ta đã thấy với swapon
.
Kiểm tra dung lượng bộ nhớ còn trống
Cách điển hình để phân bổ không gian cho trao đổi là sử dụng một phân vùng riêng biệt dành riêng cho nhiệm vụ. Tuy nhiên, việc thay đổi sơ đồ phân vùng không phải lúc nào cũng có thể thực hiện được do các hạn chế về phần cứng hoặc phần mềm. May mắn là ta có thể dễ dàng tạo một file swap nằm trên một phân vùng hiện có.
Trước khi thực hiện việc này, ta nên biết việc sử dụng ổ đĩa hiện tại của bạn . Ta có thể lấy thông tin này bằng lệnh :
df -h
Filesystem Size Used Avail Use% Mounted on /dev/vda1 59G 1.5G 55G 3% / devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 8.3M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
Lưu ý: cờ -h
chỉ đơn giản là yêu cầu dh
xuất thông tin ổ đĩa ở định dạng đọc thân thiện với con người. Ví dụ: thay vì xuất ra số khối bộ nhớ thô trong một phân vùng, df -h
sẽ cho ta biết mức sử dụng không gian và tính khả dụng theo M (đối với megabyte) hoặc G (đối với gigabyte).
Như bạn thấy ở dòng đầu tiên, phân vùng lưu trữ của ta có sẵn 59 gigabyte, vì vậy ta có khá nhiều dung lượng để làm việc. Lưu ý đây là version VPS mới, có kích thước trung bình, vì vậy mức sử dụng thực tế của bạn có thể rất khác.
Mặc dù có nhiều ý kiến về kích thước thích hợp của không gian swap , nó thực dependencies vào yêu cầu ứng dụng và sở thích cá nhân của bạn. Nói chung, một lượng bằng hoặc gấp đôi dung lượng bộ nhớ trên hệ thống của bạn là một điểm khởi đầu tốt.
Vì hệ thống của tôi có 4 gigabyte bộ nhớ và việc tăng gấp đôi sẽ chiếm một phần lớn hơn từ không gian lưu trữ của tôi so với mức tôi sẵn sàng chia tay, nên tôi sẽ tạo không gian swap 4 gigabyte để phù hợp với bộ nhớ của hệ thống.
Tạo file swap
Bây giờ ta biết không gian lưu trữ có sẵn của bạn , ta có thể bắt đầu tạo file swap trong hệ thống file của bạn . Ta sẽ tạo một file có tên là swapfile
trong folder root ( /
) của ta , mặc dù bạn có thể đặt tên file khác nếu bạn muốn. Tệp phải phân bổ dung lượng mà ta muốn cho file swap của bạn và nó phải được tạo trong một khối liền kề.
Cách tốt nhất để làm điều này là sử dụng trình dd
. Lệnh này sẽ tạo một file 4 gigabyte:
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
Sau khi nhập password của bạn để cho phép quyền sudo
, file swap sẽ được tạo. Quá trình này có thể mất vài phút, sau đó dấu nhắc sẽ được trả lại cho bạn. Ta có thể xác minh lượng không gian chính xác đã được dành cho swap bằng cách sử dụng ls
:
ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile
Như bạn thấy , file swap của ta đã được tạo với lượng không gian chính xác được dành riêng.
Bật file swap
Ngay bây giờ, file của ta đã được tạo, nhưng hệ thống của ta không biết rằng file này phải được sử dụng để swap . Ta cần yêu cầu hệ thống của bạn định dạng file này dưới dạng swap và sau đó kích hoạt nó.
Trước khi làm điều đó, ta nên điều chỉnh các quyền trên file swap của bạn để không ai có thể đọc được nó ngoài account root . Việc cho phép user khác đọc hoặc ghi vào file này sẽ là một rủi ro bảo mật rất lớn. Ta có thể khóa các quyền bằng chmod
:
sudo chmod 600 /swapfile
Điều này sẽ hạn chế cả quyền đọc và ghi đối với account root . Ta có thể xác minh file swap có quyền chính xác bằng cách sử dụng lại ls -lh
:
ls -lh /swapfile
-rw------- 1 root root 4.0G Oct 30 11:00 /swapfile
Như vậy, file swap của ta đã an toàn hơn, ta có thể yêu cầu hệ thống của bạn cài đặt không gian swap để sử dụng bằng lệnh :
sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf
Tệp swap của ta hiện đã sẵn sàng để sử dụng làm không gian swap . Ta có thể bắt đầu sử dụng nó bằng lệnh :
sudo swapon /swapfile
Để xác minh quy trình đã thành công, ta có thể kiểm tra xem hệ thống của ta có báo cáo không gian swap ngay bây giờ hay không:
swapon -s
Filename Type Size Used Priority /swapfile file 4194300 0 -1
Kết quả này xác nhận ta có một file swap mới. Ta có thể sử dụng lại tiện ích free
để chứng thực những phát hiện của bạn :
free -m
total used free shared buffers cached Mem: 3953 315 3637 8 11 107 -/+ buffers/cache: 196 3756 Swap: 4095 0 4095
Giao dịch swap của ta đã được cài đặt thành công và hệ điều hành của ta sẽ bắt đầu sử dụng nó khi cần thiết.
Đặt file swap vĩnh viễn
Tệp swap của ta đã được kích hoạt tại thời điểm này, nhưng khi ta khởi động lại, server sẽ không tự động bật file để sử dụng. Ta có thể thay đổi điều đó bằng cách sửa đổi file fstab
, là một bảng quản lý hệ thống file và phân vùng.
Chỉnh sửa file với các quyền sudo
trong editor của bạn:
sudo nano /etc/fstab
Ở cuối file , bạn cần thêm một dòng thông báo cho hệ điều hành tự động sử dụng file swap mà bạn đã tạo:
/swapfile swap swap sw 0 0
Khi bạn hoàn tất việc thêm dòng, bạn có thể lưu file . Server sẽ kiểm tra file này trong mỗi lần khởi động, vì vậy file swap sẽ sẵn sàng để sử dụng từ bây giờ.
Tinh chỉnh cài đặt swap của bạn (Tùy chọn)
Có một số tùy chọn mà bạn có thể cấu hình sẽ có tác động đến hiệu suất hệ thống của bạn khi xử lý swap . Các cấu hình này là tùy chọn trong hầu hết các trường hợp và những thay đổi bạn thực hiện sẽ tùy thuộc vào nhu cầu ứng dụng và sở thích cá nhân của bạn.
Swappiness
Tham số swappiness
xác định tần suất hệ thống của bạn swap dữ liệu từ bộ nhớ sang không gian swap . Đây là một giá trị từ 0 đến 100 đại diện cho phần trăm sử dụng bộ nhớ sẽ kích hoạt việc sử dụng swap .
Với các giá trị gần bằng 0, hệ thống sẽ không swap dữ liệu vào ổ đĩa trừ khi thực sự cần thiết. Lưu ý các tương tác với file swap “đắt tiền” ở chỗ chúng chậm hơn rất nhiều so với tương tác với bộ nhớ và sự khác biệt về tốc độ đọc và ghi này có thể làm giảm đáng kể hiệu suất của ứng dụng. Yêu cầu hệ thống không dựa vào swap nhiều thường sẽ làm cho hệ thống của bạn nhanh hơn.
Các giá trị gần hơn 100 sẽ cố gắng đưa nhiều dữ liệu hơn vào swap để cố gắng giữ cho bộ nhớ trống nhiều hơn. Tùy thuộc vào cấu hình bộ nhớ ứng dụng của bạn hoặc những gì bạn đang sử dụng server của bạn , đây có thể là lựa chọn tốt hơn trong một số trường hợp.
Ta có thể thấy giá trị swappiness hiện tại bằng cách đọc file cấu hình swappiness
:
cat /proc/sys/vm/swappiness
30
CentOS 7 mặc định cài đặt swappiness là 30, đây là mức trung bình hợp lý cho hầu hết các máy tính để bàn và server local . Đối với hệ thống VPS, ta có thể cần chuyển nó về gần 0.
Ta có thể đặt swappiness thành một giá trị khác bằng cách sử dụng lệnh sysctl
. Ví dụ, để đặt swappiness thành 10, ta có thể nhập:
sudo sysctl vm.swappiness=10
vm.swappiness = 10
Cài đặt này sẽ vẫn tồn tại cho đến lần khởi động lại tiếp theo. Để giữ nguyên cài đặt giữa các lần khởi động lại, ta có thể thêm dòng đã xuất vào file cấu hình sysctl
của ta :
sudo nano /etc/sysctl.conf
Thêm cài đặt swappiness của bạn vào cuối file :
vm.swappiness = 10
Khi bạn hoàn tất việc thêm dòng, bạn có thể lưu file . Server bây giờ sẽ tự động đặt swappiness thành giá trị bạn đã khai báo trên mỗi lần khởi động.
Áp suất bộ nhớ đệm
Một giá trị liên quan khác mà bạn có thể cần sửa đổi là vfs_cache_pressure
. Cài đặt này ảnh hưởng đến việc lưu trữ các mục nhập metadata hệ thống file đặc biệt. Thường xuyên đọc và làm mới thông tin này thường rất tốn kém, vì vậy việc lưu trữ nó trên bộ nhớ cache lâu hơn sẽ mang lại hiệu quả tuyệt vời cho hệ thống của bạn.
Bạn có thể thấy giá trị hiện tại của áp suất bộ nhớ cache này bằng cách truy vấn lại hệ thống file proc
:
cat /proc/sys/vm/vfs_cache_pressure
100
Vì nó hiện đang được cấu hình , hệ thống của ta xóa thông tin inode khỏi bộ nhớ cache quá nhanh. Ta có thể đặt cài đặt này thành cài đặt bảo thủ hơn, chẳng hạn như 50, bằng cách sử dụng sysctl
:
sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50
, điều này chỉ hợp lệ cho phiên hiện tại của ta . Ta có thể thay đổi điều đó bằng cách thêm nó vào file cấu hình của bạn , giống như ta đã làm với cài đặt swappiness của bạn :
sudo nano /etc/sysctl.conf
Ở dưới cùng, thêm dòng chỉ định giá trị mới của bạn:
vm.vfs_cache_pressure = 50
Khi bạn hoàn tất việc thêm dòng, bạn có thể lưu file . Server bây giờ sẽ tự động đặt áp suất bộ nhớ cache thành giá trị bạn đã khai báo trên mỗi lần khởi động.
Kết luận
Theo các bước trong hướng dẫn này, bạn sẽ cung cấp cho server của bạn một khoảng thở về mặt sử dụng bộ nhớ. Không gian swap cực kỳ hữu ích trong việc tránh một số vấn đề phổ biến.
Nếu bạn đang gặp phải lỗi OOM (hết bộ nhớ) hoặc nếu bạn thấy rằng hệ thống của bạn không thể sử dụng các ứng dụng bạn cần, giải pháp tốt nhất là tối ưu hóa cấu hình ứng dụng hoặc nâng cấp server của bạn. Tuy nhiên, việc cấu hình không gian swap có thể mang lại cho bạn sự linh hoạt hơn và có thể giúp bạn mua thời gian trên một server kém mạnh mẽ hơn.
Các tin liên quan
Cách cài đặt và cấu hình OpenShift Origin trên CentOS 6.52014-10-31
Cách cài đặt WordPress trên CentOS 7
2014-10-30
Cách cài đặt Git trên CentOS 7
2014-10-29
Cách thêm và xóa người dùng trên server CentOS 7
2014-10-28
Giới thiệu về SELinux trên CentOS 7 - Phần 1: Các khái niệm cơ bản
2014-09-05
Giới thiệu về SELinux trên CentOS 7 - Phần 2: Tệp và Quy trình
2014-09-05
Giới thiệu về SELinux trên CentOS 7 - Phần 3: Người dùng
2014-09-05
Cách cài đặt puppet ở chế độ độc lập trên CentOS 7
2014-09-04
Cách cài đặt Node.js trên server CentOS 7
2014-08-18
Cách sử dụng Logstash và Kibana để tập trung log trên CentOS 7
2014-07-15