Thứ sáu, 28/06/2013 | 00:00 GMT+7

Cách thêm tệp swap trên server cloud Arch Linux


Giới thiệu

Một cách dễ dàng để tăng khả năng đáp ứng của server cloud của bạn là thêm một số không gian swap . Swap là một khu vực của ổ cứng được dùng để tạm thời giữ thông tin thường được lưu trữ trong RAM. Kết quả là có nhiều RAM hơn cho các quy trình hiện đang chạy của bạn.

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.

Dưới mui xe

Nhân Linux lưu trữ thông tin trong RAM thành các phần nhỏ được gọi là “trang”. Một chương trình có thể có một số lượng lớn các trang chiếm dung lượng trong RAM. Khi một tiến trình mới cần truy cập vào bộ nhớ vật lý, các trang mới sẽ được tạo khi cần thiết. Nhưng điều gì sẽ xảy ra khi RAM không còn dung lượng cho nhiều trang nữa?

Nếu một chương trình chưa sử dụng tất cả các trang mà nó đã được cấp phát trong RAM, các trang không sử dụng có thể bị xóa và có thể phân bổ lại không gian. Điều này là do các file trang đó có thể dễ dàng được tạo lại nếu chúng cần thiết. Ví dụ, nếu chương trình A đã được cấp phát 10 trang, nhưng chỉ được viết đến 7, thì 3 có thể bị hủy tạm thời và tạo lại khi chúng thực sự cần thiết. Trong thời gian này, không gian mà 3 trang đó đang sử dụng được dùng bởi các chương trình khác.

Vậy, swap đi vào đâu?

Đôi khi hệ thống phải xóa các trang khỏi RAM chứa dữ liệu không thể tạo lại theo ý muốn. Thông tin được ghi cho chúng không có sẵn trên ổ cứng. Khi hệ thống xóa các trang ở trạng thái này, hệ thống cần một nơi để đặt chúng để không bị mất thông tin đó. Nơi đó được gọi là " swap ".

Không có gì phức tạp lắm về file swap hoặc phân vùng swap . Nó chỉ đơn giản là một khu vực được dành để lưu trữ tạm thời dữ liệu từ RAM. Đây có thể là thông tin trạng thái từ các ứng dụng, dữ liệu được lưu trong bộ nhớ cache hoặc bất kỳ thứ gì khác có thể chiếm RAM. Hệ điều hành sẽ swap thông tin từ RAM sang không gian swap theo nghĩa đen và ngược lại khi nào cần thiết.

Kiểm tra không gian swap

Ta cần đăng nhập với quyền root để hoàn thành các bước trong hướng dẫn này.

su

Trước khi tạo file swap của riêng mình, ta muốn kiểm tra xem liệu hệ thống đã bật không gian swap hay chưa. Ta có thể dễ dàng làm điều này bằng một số cách. Hãy thử lệnh “swapon” trước.

swapon -s
swapon: stat failed -s: No such file or directory

Như bạn thấy , trên một VPS Arch Linux sạch, lệnh này không tạo ra bất kỳ kết quả nào. Lệnh đã được thực thi chính xác, nhưng nó không tìm thấy bất kỳ không gian swap nào.

Hãy thử một cách khác để kiểm tra swap sẽ cung cấp cho ta nhiều phản hồi trực quan hơn.

free -m
             total       used       free     shared    buffers     cached
Mem:           494         60        434          0          6         28
-/+ buffers/cache:         25        469
Swap:            0          0          0

Như mong đợi, swap là 0 trong cột tổng. Điều này xác nhận những gì lệnh "swapon" đã nói với ta .

Kiểm tra hệ thống file

Có nhiều ý kiến khác nhau về kích thước lý tưởng của khu vực swap . Thông thường, nó là đủ để khớp hoặc gấp đôi dung lượng RAM bạn có (trừ khi bạn có một lượng RAM cực lớn, trong trường hợp đó bạn có thể phân bổ ít không gian swap hơn). Cuối cùng, nó phụ thuộc vào sở thích cá nhân và quyết định thường bị ảnh hưởng bởi dung lượng RAM có sẵn và dung lượng ổ cứng trên máy của bạn.

Đối với hướng dẫn này, ta có 512MB RAM và một ổ cứng 20GB. Nếu ta cài đặt một không gian swap lớn gấp đôi RAM của ta , nó sẽ chiếm một phần đáng kể trong ổ cứng của ta . Vì vậy, thay vào đó, ta sẽ trùng với dung lượng RAM mà ta có và tạo ra một không gian swap 512MB.

Trước khi có thể tạo không gian swap của bạn , ta cần kiểm tra xem ta có đủ dung lượng trống trên ổ cứng hay không. Bây giờ hãy kiểm tra điều đó bằng lệnh “df”.

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  965M   18G   6% /
dev             240M     0  240M   0% /dev
run             248M  212K  248M   1% /run
tmpfs           248M     0  248M   0% /dev/shm
tmpfs           248M     0  248M   0% /sys/fs/cgroup
tmpfs           248M     0  248M   0% /tmp

Nếu nhìn vào dòng đầu tiên, ta có thể thấy ổ cứng 20GB và khoảng 18GB trong số đó chưa được sử dụng. Đó là rất nhiều không gian để tạo không gian swap 512MB của ta .

Tạo và kích hoạt file swap

Bây giờ ta đã sẵn sàng để tạo không gian swap của ta . Ta sẽ thảo luận về hai cách khác nhau để thực hiện điều này. Đầu tiên, ta sẽ sử dụng lệnh “dd”.

dd if=/dev/zero of=/swapfile bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 1.96268 s, 274 MB/s

Hãy xác nhận file đã được tạo chính xác.

ls -lh /swapfile
-rw-r--r-- 1 root root 512M Jun 28 18:41 /swapfile

Như bạn thấy , bây giờ ta có một file 512MB được gọi là / swapfile. Hãy thử tạo file swap theo một cách khác. Ta sẽ xóa file swap mà ta vừa tạo để có thể thử lại.

rm /swapfile

Chương trình “fallocate” có thể tạo các file swap nhanh hơn “dd”. Như một quyền bổ sung, cú pháp của nó cũng dễ nhớ hơn.

fallocate -l 512M /swapfile

, ta có thể thấy rằng bây giờ có một file swap có kích thước chính xác.

ls -lh /swapfile
-rw-r--r-- 1 root root 512M Jun 28 18:54 /swapfile

Bây giờ ta có một file trong phân vùng root của ổ cứng có tên là “swapfile”, nhưng ta có thể thấy rằng hệ thống chưa nhận dạng hoặc sử dụng nó.

free -m
             total       used       free     shared    buffers     cached
Mem:           494         41        453          0          1         13
-/+ buffers/cache:         25        468
Swap:            0          0          0

Ngay bây giờ, file chỉ là một file thông thường. Ta có thể gọi nó là “swapfile”, nhưng Linux vẫn chưa biết sử dụng nó như một swap. Ta phải định dạng nó là swap và kích hoạt nó.

Trước khi làm điều đó, ta cần hoàn thành một bước rất quan trọng. Ta cần thay đổi quyền của file để chỉ user root mới có thể đọc và ghi vào file . Một file swap có thể được đọc hoặc ghi bởi user không phải root là một lỗ hổng bảo mật rất lớn. Như bạn đã thấy khi ta chạy “ls”, bất kỳ ai trên hệ thống cũng có thể đọc được. Hãy thay đổi điều đó ngay bây giờ.

chmod 600 /swapfile

Nếu ta kiểm tra lại file , ta có thể thấy rằng các quyền hiện là chính xác.

ls -lh /swapfile
-rw------- 1 root root 512M Jun 28 18:54 /swapfile

Bây giờ file của ta đã được bảo mật, ta có thể định dạng nó.

mkswap /swapfile
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=61f42c98-d1ef-4f27-84c2-713c5f63d434

Cuối cùng, ta có thể kích hoạt file để hệ thống biết để bắt đầu sử dụng nó.

swapon /swapfile

Hãy kiểm tra xem file của ta đã được nhận dạng và đang được sử dụng chưa.

free -m
             total       used       free     shared    buffers     cached
Mem:           494         42        452          0          1         14
-/+ buffers/cache:         25        468
Swap:          511          0        511

Tuyệt quá! Tệp swap của ta được nhận dạng và hệ điều hành sẽ bắt đầu sử dụng nó để lưu trữ dữ liệu từ RAM khi cần thiết.

Tuy nhiên, ta vẫn chưa hoàn thành. Hệ điều hành cần biết rằng có thể an toàn khi sử dụng file này để trao đổi mỗi khi khởi động. Ta có thể thực hiện điều đó bằng cách chỉnh sửa file “/ etc / fstab”.

nano /etc/fstab
# Paste this information at the bottom of the file
/swapfile	none	swap	defaults	0	0

Điều chỉnh cài đặt swap

Có một số điều cần lưu ý khi sử dụng swap. Vì không gian swap nằm trên ổ cứng nên nó sẽ chậm hơn nhiều so với RAM. Điều đó nghĩa là bạn chỉ muốn hệ điều hành sử dụng nó khi nó cần. Nếu các trang đang được chuyển đến không gian swap của bạn trước khi bạn hết RAM, bạn sẽ gặp phải sự chậm lại đáng kể trong hoạt động của bạn .

Tham số kiểm soát tần suất hệ thống di chuyển các mục ra khỏi RAM và vào không gian swap được gọi là "swappiness". Giá trị của nó có thể nằm trong repository ảng từ 0 đến 100. Với các giá trị gần bằng 0, kernel sẽ chọn không swap trừ khi thực sự cần thiết. Với các giá trị gần bằng 100, hệ thống sẽ swap các file sớm hơn nhiều. Điều này có thể dẫn đến các vấn đề về tốc độ vì thông tin phải được tìm nạp từ ổ cứng thay vì RAM.

Ta có thể tìm hiểu cài đặt swappiness hiện tại của bạn bằng lệnh lệnh sau:

cat /proc/sys/vm/swappiness
60

Hệ thống của ta mặc định giá trị swappiness là 60. Đây là giá trị mặc định tốt cho VPS. Nếu ta đang điều chỉnh độ swappiness của màn hình, ta có thể cần chuyển nó về gần 0. Ta có thể thử các giá trị swappiness khác nhau bằng lệnh “sysctl”.

sysctl vm.swappiness=10
vm.swappiness = 10

Ta có thể thấy rằng hệ thống đã chấp nhận giá trị mới của ta cho tham số swappiness.

cat /proc/sys/vm/swappiness
10

Nếu ta muốn đặt cài đặt này mặc định, ta có thể chỉnh sửa file “/etc/sysctl.conf”.

nano /etc/sysctl.conf
# Search for the vm.swappiness setting.  Uncomment and change it as necessary.
vm.swappiness=10

Điều này sẽ cho phép cài đặt của ta vẫn tồn tại cho đến khi khởi động lại. Vui lòng chơi với thông số này để đạt được sự swap tối ưu cho tình huống của bạn.

Một tham số liên quan khác mà ta có thể cần điều chỉnh là cài đặt “vm.vfs_cache_pressure”. Việc thay đổi giá trị áp suất bộ nhớ cache sẽ thay đổi sở thích của hệ thống đối với việc giữ thông tin inode và thông tin được lưu trong bộ nhớ cache thay vì các loại thông tin khác. Điều này nghĩa là hệ điều hành sẽ lưu giữ thông tin về hệ thống file lâu hơn, điều này xảy ra rất tốn kém khi tra cứu và rất thường xuyên được yêu cầu. Điều này thường sẽ dẫn đến tăng hiệu suất.

, ta có thể kiểm tra giá trị hiện tại bằng cách nhìn vào folder / proc.

cat /proc/sys/vm/vfs_cache_pressure
100

Cài đặt hiện tại di chuyển thông tin inode ra khỏi bộ nhớ cache nhanh hơn ta muốn. Áp suất bộ nhớ cache là 50 sẽ tốt hơn nhiều cho mục đích của ta . Ta có thể thay đổi các cài đặt này giống như cách ta đã làm với đầm lầy.

sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50

, ta có thể làm cho điều này tồn tại thông qua khởi động lại bằng cách thêm nó vào file “/etc/sysctl.conf”.

nano /etc/sysctl.conf
# Search for the vm.vfs_cache_pressure setting.  Uncomment and change it as necessary.
vm.vfs_cache_pressure = 50

Điều này làm cho cấu hình áp lực bộ nhớ cache của ta vĩnh viễn.

Bởi Justin Ellingwood

Tags:

Các tin liên quan

Cách cài đặt server DNS BIND trên CentOS 6
2013-06-12
Cách cài đặt eJabberd XMPP Server trên Ubuntu
2013-06-04
Cách cấu hình tmux trên server cloud
2013-05-20
Cách cài đặt cPanel trên server ảo chạy Centos 6
2012-11-02
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Debian
2012-10-04
Cách cài đặt Joomla trên server ảo chạy CentOS 6
2012-09-27
Cách cài đặt Joomla trên server ảo chạy CentOS 6
2012-09-27
Cách cài đặt Drupal trên server ảo chạy CentOS 6
2012-09-25
Cách cài đặt Ruby on Rails trên Arch Linux với RVM
2012-09-21
Cách cài đặt Wordpress trên Arch Linux
2012-09-19