Thứ hai, 28/04/2014 | 00:00 GMT+7

Cách thêm swap trên Ubuntu 14.04

Một trong những cách dễ nhất để tăng khả năng phản hồi của server và phòng tránh lỗi hết bộ nhớ trong các ứ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 ổ 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 ý. Dung lượng trên ổ cứng sẽ được sử dụng chủ yếu khi dung lượng RAM không còn đủ cho dữ liệu.

Thông tin được ghi vào đĩa sẽ chậm hơn 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 hệ thống của bạn cạn kiệt là một mạng lưới an toàn tốt.

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 Ubuntu 14.04.

Ghi chú

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.

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

Trước khi bắt đầu, ta sẽ xem xét hệ điều hành của bạn để xem liệu ta đã có sẵn một số dung lượng swap chưa. Ta 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 -s 

Filename                Type        Size    Used    Priority 

Nếu bạn chỉ lấy lại tiêu đề của bảng, như tôi đã trình bày ở trên, bạn hiện không bật bất kỳ không gian swap nào.

Một cách khác quen thuộc hơn để 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ớ hệ thống. Ta có thể xem bộ nhớ hiện tại của bạn và mức sử dụng swap tính bằng Megabyte bằng lệnh :

<pre>
miễn phí -m
</pre>
<pre>
tổng số cache chia sẻ miễn phí đã sử dụng được lưu vào bộ nhớ đệm
Mem: 3953 154 3799 0 8 83
- / + cache / bộ nhớ đệm: 62 3890
<span class = “highlight”> Swap : 0 </span> 0 0
</pre>

Như bạn thấy ở trên, 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 lệnh trước đó.

Kiểm tra dung lượng trống trên phân vùng ổ cứ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 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 biết tình trạng 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 :

<pre>
df -h
</pre>
<pre>
Kích thước hệ thống file Đã sử dụng Tính sẵn có% Được gắn trên
<span class = “highlight”> / dev / vda 59G 1.3G 55G 3% / </span>
không 4.0K 0 4.0K 0% / sys / fs / cgroup
udev 2.0G 12K 2.0G 1% / nhà phát triển
tmpfs 396M 312K 396M 1% / lần chạy
không 5.0M 0 5.0M 0% / chạy / khóa
không 2.0G 0 2.0G 0% / run / shm
không 100 triệu 0 100 triệu 0% / lần chạy / user
</pre>

Như bạn thấy ở dòng đầu tiên, phân vùng ổ cứng của ta có sẵn 55 Gigabyte, vì vậy ta có một lượng lớn dung lượng để làm việc. Tuy nhiên, đâ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 , 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.

Vì hệ thống của tôi có 4 Gigabyte RAM và việc tăng gấp đôi sẽ chiếm một phần đáng kể dung lượng ổ đĩa mà tôi không sẵn sàng chia tay, nên tôi sẽ tạo không gian swap 4 Gigabyte để phù hợp với RAM của hệ thố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ó tên là swapfile trong folder root (/) của ta . Tệp phải phân bổ dung lượng mà ta muốn cho file swap của ta . Có hai cách chính để làm điều này:

Cách truyền thống, chậm

Theo truyền thống, ta sẽ tạo một file với không gian được phân bổ trước bằng cách sử dụng lệnh dd . Tiện ích đĩa đa năng này ghi từ vị trí này sang vị trí khác.

Ta có thể sử dụng điều này để ghi các số không vào file từ một thiết bị đặc biệt trong hệ thống Linux đặt tại /dev/zero chỉ xuất ra nhiều số không theo yêu cầu.

Ta chỉ định kích thước file bằng cách sử dụng kết hợp bs cho kích thước khối và count số khối. Những gì ta gán cho mỗi tham số gần như hoàn toàn tùy ý. Điều quan trọng là kết quả của việc nhân lên chúng sẽ ra sao.

Ví dụ, trong ví dụ của ta , ta đang tìm cách tạo một file 4 Gigabyte. Ta có thể làm điều này bằng cách chỉ định kích thước khối là 1 Gigabyte và số lượng là 4:

sudo dd if=/dev/zero of=/swapfile bs=1G count=4 

4+0 records in 4+0 records out 4294967296 bytes (4.3 GB) copied, 18.6227 s, 231 MB/s 

Kiểm tra lệnh của bạn trước khi nhấn ENTER vì điều này có khả năng phá hủy dữ liệu nếu bạn trỏ of (viết tắt của file kết quả ) đến sai vị trí.

Ta có thể thấy rằng 4 Gigabyte đã được phân bổ bằng lệnh :

<pre>
ls -lh / swapfile
</pre>
<pre>
-rw-r – r– 1 root root <span class = “highlight”> 4.0G </span> ngày 28 tháng 4 17:15 / swapfile
</pre>

Nếu bạn đã hoàn thành lệnh trên, bạn có thể nhận thấy rằng nó mất khá nhiều thời gian. Trên thực tế, bạn có thể thấy trong kết quả rằng hệ thống của tôi đã mất 18 giây để tạo file . Đó là bởi vì nó phải ghi 4 Gigabyte số không vào đĩa.

Nếu bạn muốn tìm hiểu cách tạo file nhanh hơn, hãy xóa file và làm theo bên dưới:

sudo rm /swapfile 

Con đường nhanh hơn

Cách nhanh hơn để lấy cùng một file 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 mà không cần phải ghi nội dung giả.

Ta có thể tạo file 4 Gigabyte bằng lệnh :

sudo fallocate -l 4G /swapfile 

Dấu nhắc sẽ được trả lại cho bạn gần như ngay lập tức. Ta có thể xác minh lượng không gian chính xác đã được đặt trước bằng lệnh :

<pre>
ls -lh / swapfile
</pre>
<pre>
-rw-r – r– 1 root root <span class = “highlight”> 4.0G </span> ngày 28 tháng 4 17:19 / swapfile
</pre>

Như bạn thấy , file 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 cần điều chỉnh các quyền trên file của bạn để không ai có thể đọc được ngoài 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 lệnh :

sudo chmod 600 /swapfile 

Xác minh file có quyền chính xác bằng lệnh :

<pre>
ls -lh / swapfile
</pre>
<pre>
<span class = “highlight”> - rw ——- </span> 1 root root 4.0G ngày 28 tháng 4 17:19 / swapfile
</pre>

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

Bây giờ file 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 bằng lệnh :

sudo mkswap /swapfile 

Setting up swapspace version 1, size = 4194300 KiB no label, UUID=e2f1e9cf-c0a9-4ed4-b8ab-714b8a7d6944 

Tệp của ta hiện đã sẵn sàng để sử dụng làm không gian swap . Ta có thể kích hoạt điều này bằng lệnh :

sudo swapon /swapfile 

Ta có thể xác minh quy trình đã thành công bằng cách kiểm tra xem hệ thống của ta có báo cáo không gian swap bây giờ hay không:

<pre>
sudo swapon -s
</pre>
<pre>
Loại tên file Kích thước được sử dụng Ưu tiên
<span class = “highlight”> / swapfile file 4194300 0 -1 </span>
</pre>

Ta có một file swap mới ở đây. 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 :

<pre>
miễn phí -m
</pre>
<pre>
tổng số cache chia sẻ miễn phí đã sử dụng được lưu vào bộ nhớ đệm
Mem: 3953 101 3851 0 5 30
- / + cache / bộ nhớ đệm: 66 3887
<span class = “highlight”> Swap : 4095 </span> 0 4095
</pre>

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

Ta đã bật file swap của bạn , nhưng khi ta khởi động lại, server sẽ không tự động bật file . Tuy nhiên, ta có thể thay đổi điều đó bằng cách sửa đổi file fstab .

Chỉnh sửa file với quyền root 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 bạn đã tạo:

/swapfile   none    swap    sw    0   0 

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

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 .

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 

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 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. 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.

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 

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 

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:

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ố khoảng trống về việc sử dụng RAM của bạn. 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, 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.

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan

Cách cài đặt WordPress trên Ubuntu 14.04
2014-04-24
Cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 14.04
2014-04-23
Cách cài đặt Solr trên Ubuntu 14.04
2014-04-23
Cách cài đặt Git trên Ubuntu 14.04
2014-04-23
Cách thêm và xóa người dùng trên VPS Ubuntu 14.04
2014-04-22
Cách cài đặt và cấu hình Slim Framework trên Ubuntu 14.04
2014-04-22
Cách cài đặt Ruby on Rails trên Ubuntu 14.04 bằng RVM
2014-04-22
Cách cài đặt kho lưu trữ trình soạn nhạc tùy chỉnh trên Ubuntu
2014-04-21
Cách cài đặt và sử dụng Fish Shell trên VPS Ubuntu
2014-04-09
Cách thiết lập hệ thống tệp phân tán Tahoe-LAFS trên server Ubuntu 14.04
2014-04-03