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 3: Người dùng
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
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
 

