Thứ hai, 25/04/2016 | 00:00 GMT+7

Cách thêm không gian swap trên Ubuntu 16.04

Một trong những cách dễ nhất để tăng khả năng đáp ứng của server của bạn và đề phòng lỗi hết bộ nhớ trong các ứng dụng là thêm một số không gian swap . Trong hướng dẫn này, ta sẽ trình bày cách thêm file swap vào server Ubuntu 16.04.

Cảnh báo

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. Hướng dẫn này được cung cấp để tham khảo cho những user có thể có hệ thống đĩa quay ở nơi khác.

Nếu bạn cần cải thiện hiệu suất của server của bạn trên DigitalOcean, 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.

Swap là gì?

Swap là một khu vực trên ổ cứng đã được chỉ định làm 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 RAM. Về cơ bản, đ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ớ” đang hoạt động của nó, với một số lưu ý. Không gian swap trên ổ cứng sẽ được sử dụng chủ yếu khi RAM không còn đủ dung lượng để chứa dữ liệu ứng dụng đang sử dụng.

Thông tin được ghi vào đĩa sẽ chậm hơn đáng kể so với thông tin được lưu trong RAM, nhưng hệ điều hành sẽ thích tiếp tục chạy dữ liệu ứng dụng trong bộ nhớ và sử dụng swap cho dữ liệu cũ hơn. Nhìn chung, có không gian swap để dự phòng khi RAM của hệ thống bị cạn kiệt có thể là một mạng lưới an toàn tốt chống lại các trường hợp ngoại lệ hết bộ nhớ trên các hệ thống có sẵn bộ nhớ không phải SSD.

Kiểm tra hệ thống để biết thông tin swap

Trước khi bắt đầu, ta có thể kiểm tra xem hệ thống đã có sẵn một số dung lượng swap chưa. Có thể có nhiều file swap hoặc swap phân vùng, nhưng nhìn chung chỉ cần 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 không bằng lệnh :

  • sudo swapon --show

Nếu bạn không nhận lại bất kỳ kết quả nào, điều này nghĩa là hệ thống của bạn hiện không có dung lượng swap .

Bạn có thể xác minh không có swap đang hoạt động bằng cách sử dụng trình free :

  • free -h
Output
total used free shared buff/cache available Mem: 488M 36M 104M 652K 348M 426M Swap: 0B 0B 0B

Như bạn thấy trong hàng " Swap " của kết quả , không có swap nào đang hoạt động trên hệ thống.

Kiểm tra dung lượng trống trên phân vùng ổ cứng

Cách phổ biến nhất để 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 cho nhiệm vụ. Tuy nhiên, không phải lúc nào cũng có thể thay đổi sơ đồ phân vùng. 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 kiểm tra mức sử dụng đĩa hiện tại bằng lệnh :

  • df -h
Output
Filesystem Size Used Avail Use% Mounted on udev 238M 0 238M 0% /dev tmpfs 49M 624K 49M 2% /run /dev/vda1 20G 1.1G 18G 6% / tmpfs 245M 0 245M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 245M 0 245M 0% /sys/fs/cgroup tmpfs 49M 0 49M 0% /run/user/1001

Thiết bị dưới /dev là đĩa của ta trong trường hợp này. Ta có nhiều dung lượng trống trong ví dụ này (chỉ sử dụng 1,1G). Cách sử dụng của bạn có thể sẽ 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 , nhưng nó thực dependencies vào sở thích cá nhân và yêu cầu ứng dụng của bạn. Nói chung, một số lượng bằng hoặc gấp đôi dung lượng RAM trên hệ thống của bạn là một điểm khởi đầu tốt. Một nguyên tắc nhỏ khác là bất kỳ thứ gì qua 4G trao đổi có thể không cần thiết nếu bạn chỉ sử dụng nó như một bộ nhớ RAM dự phòng.

Tạo file swap

Bây giờ ta biết dung lượng ổ cứng còn trống của bạn , ta có thể bắt đầu tạo một file swap trong hệ thống file của bạn . Ta sẽ tạo một file có kích thước swap mà ta muốn gọi là swapfile trong folder root (/) của ta .

Cách tốt nhất để tạo file swap là sử dụng chương trình fallocate . Lệnh này tạo một file có kích thước được phân bổ trước ngay lập tức.

Vì server trong ví dụ của ta có 512MB RAM, ta sẽ tạo file 1 Gigabyte trong hướng dẫn này. Điều chỉnh điều này để đáp ứng nhu cầu của server của bạn :

  • sudo fallocate -l 1G /swapfile

Ta có thể xác minh lượng không gian chính xác đã được đặt trước bằng lệnh :

  • ls -lh /swapfile
  • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Tệp của ta đã được tạo với dung lượng chính xác được dành riêng.

Bật file swap

Bây giờ ta đã có một file có kích thước chính xác, ta cần thực sự biến file này thành không gian swap .

Đầu tiên, ta cần khóa quyền của file để chỉ những user có quyền root có thể đọc nội dung. Điều này ngăn user bình thường có thể truy cập file , điều này sẽ có tác động bảo mật đáng kể.

Đặt file chỉ có thể truy cập vào root bằng lệnh :

  • sudo chmod 600 /swapfile

Kiểm tra thay đổi quyền bằng lệnh :

  • ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Như bạn thấy , chỉ user root mới được bật cờ đọc và ghi.

Bây giờ ta có thể đánh dấu file là không gian swap bằng lệnh :

  • sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Sau khi đánh dấu file , ta có thể bật file swap , cho phép hệ thống của ta bắt đầu sử dụng nó:

  • sudo swapon /swapfile

Ta có thể xác minh swap có sẵn bằng lệnh :

  • sudo swapon --show
Output
NAME TYPE SIZE USED PRIO /swapfile file 1024M 0B -1

Ta có thể kiểm tra lại kết quả của tiện ích free để chứng thực những phát hiện của ta :

  • free -h
Output
total used free shared buff/cache available Mem: 488M 37M 96M 652K 354M 425M Swap: 1.0G 0B 1.0G

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

Những thay đổi gần đây của ta đã kích hoạt file swap cho phiên hiện tại. Tuy nhiên, nếu ta khởi động lại, server sẽ không tự động giữ lại cài đặt swap . Ta có thể thay đổi điều này bằng cách thêm file swap vào file /etc/fstab của ta .

Backup file /etc/fstab trong trường hợp xảy ra sự cố:

  • sudo cp /etc/fstab /etc/fstab.bak

Bạn có thể thêm thông tin file swap vào cuối file /etc/fstab của bạn bằng lệnh :

  • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Chỉnh sửa Cài đặt Swap của bạ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 .

Điều chỉnh Thuộc tính Swappiness

Tham số swappiness cấu hình tần suất hệ thống của bạn swap dữ liệu từ RAM sang không gian swap . Đây là giá trị từ 0 đến 100 thể hiện phần trăm.

Với các giá trị gần bằng 0, kernel 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" ở chỗ chúng mất nhiều thời gian hơn so với tương tác với RAM và chúng có thể làm giảm hiệu suất đáng kể. Nói với hệ thống không dựa vào swap nhiều nói chung 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 nhiều dung lượng RAM trống 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 , điều này có thể 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 lệnh :

  • cat /proc/sys/vm/swappiness
Output
60

Đối với Máy tính để bàn, cài đặt swappiness là 60 không phải là một giá trị tồi. Đối với một server , bạn có thể cần di chuyển nó gần hơn về 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
Output
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. Ta có thể đặt giá trị này tự động khi khởi động lại bằng cách thêm dòng vào file /etc/sysctl.conf của ta :

  • sudo nano /etc/sysctl.conf

Ở dưới cùng, bạn có thể thêm:

/etc/sysctl.conf
vm.swappiness=10 

Lưu file khi bạn hoàn tất.

Điều chỉnh cài đặt áp suất bộ nhớ cache

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 cấu hình mức độ hệ thống sẽ chọn để lưu vào bộ nhớ cache thông tin inode và răng cưa trên dữ liệu khác.

Về cơ bản, đây là dữ liệu truy cập về hệ thống file . Điều này nói chung là rất tốn kém để tra cứu và rất thường xuyên được yêu cầu, vì vậy đó là một điều tuyệt vời để hệ thống của bạn lưu vào bộ nhớ cache. Bạn có thể thấy giá trị hiện tại bằng cách truy vấn lại hệ thống file proc :

  • cat /proc/sys/vm/vfs_cache_pressure
Output
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 thận trọng hơn như 50 bằng lệnh :

  • sudo sysctl vm.vfs_cache_pressure=50
Output
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 ta giống như ta đã làm với cài đặt swappiness:

  • sudo nano /etc/sysctl.conf

Ở dưới cùng, thêm dòng chỉ định giá trị mới của bạn:

/etc/sysctl.conf
vm.vfs_cache_pressure=50 

Lưu file khi bạn hoàn tất.

Kết luận

Làm theo các bước trong hướng dẫn này sẽ cung cấp cho bạn một số phòng thở trong các trường hợp có thể dẫn đến ngoại lệ mất trí nhớ. Không gian swap có thể cực kỳ hữu ích trong việc tránh một số vấn đề phổ biến này.

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.


Tags:

Các tin liên quan

Cách cài đặt WordPress với LEMP trên Ubuntu 16.04
2016-04-25
Cách cài đặt Java với Apt-Get trên Ubuntu 16.04
2016-04-23
Cách cài đặt WordPress với LAMP trên Ubuntu 16.04
2016-04-22
Cách thêm và xóa người dùng trên Ubuntu 16.04
2016-04-21
Cách cài đặt Git trên Ubuntu 16.04
2016-04-21
Có gì mới trong Ubuntu 16.04
2016-04-21
Cách nâng cấp lên Ubuntu 16.04 LTS
2016-04-08
Cách thiết lập múi giờ và đồng bộ hóa NTP trên Ubuntu 14.04 [Quickstart]
2016-03-28
Cách cài đặt LAMP trên Ubuntu 14.04 [Quickstart]
2016-03-28
Cách tạo người dùng Sudo trên Ubuntu [Quickstart]
2016-03-28