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.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 
OutputFilesystem      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 
OutputSetting 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 
OutputNAME      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 
Output60 Đố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 
Outputvm.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:
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 
Output100 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 
Outputvm.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:
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.
Các tin liên quan
Cách cài đặt WordPress với LEMP trên Ubuntu 16.042016-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 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 thêm và xóa người dùng trên Ubuntu 16.04
2016-04-21
Cách nâng cấp lên Ubuntu 16.04 LTS
2016-04-08
Cách tạo người dùng Sudo trên Ubuntu [Quickstart]
2016-03-28
Cách cài đặt LAMP trên Ubuntu 14.04 [Quickstart]
2016-03-28
Cách thiết lập múi giờ và đồng bộ hóa NTP trên Ubuntu 14.04 [Quickstart]
2016-03-28
 

