Hướng dẫn tạo và kích hoạt swap Image Hướng dẫn tạo và kích hoạt swap

Bài viết này hướng dẫn tạo và kích hoạt phân dùng swap trên hệ điều hành Linux.

1. Giới thiệu swap

Phân vùng swap là một khoảng trống trên một ổ cứng đã được chỉ định là nơi mà hệ điều hành có thể lưu trữ dữ liệu tạm thời khi nó không có thể giữ trong bộ nhớ RAM.

Phân vùng swap được sử dụng khi hệ thống của bạn cần sử dụng bộ nhớ RAM và không có đủ bộ nhớ RAM để sử dụng. Nếu hệ thống cần thêm dung lượng bộ nhớ, các trang không hoạt động trong bộ nhớ RAM sẽ được chuyển sang phân vùng swap nhằm giải phóng bộ nhớ RAM cho các mục đích sử dụng khác.

2. Các bước tạo swap

2.1. Kiểm tra swap

Trước khi tạo swap chúng ta cần phải xem máy chủ của chúng ta đã có sẵn dung lượng swap chưa. Chúng ta có thể có nhiều phân vùng swap. Bằng cách chạy lệnh sau:

[root@localhost ~]# swapon -s

Nếu kết quả trả về không có thông tin nào có nghĩa hệ thống chúng ta chưa có phân vùng swap chúng ta cũng có thể kiểm tra phân vùng swap với tiện ích free cho chúng ta thấy mức sử dụng bộ nhớ chung của hệ thống.

root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           976M        140M        424M        6.7M        412M        655M
Swap:            0B          0B          0B

2.2. Kiểm tra dung lượng đĩa

Trước khi tạo swap chúng ta nên biết về việc sử dụng ổ đĩa hiện tại. Bằng cách sử dụng tiện ít df để kiểm tra:

[root@localhost ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/cl-root   17G 1012M   16G   6% /
devtmpfs             478M     0  478M   0% /dev
tmpfs                489M     0  489M   0% /dev/shm
tmpfs                489M  6.8M  482M   2% /run
tmpfs                489M     0  489M   0% /sys/fs/cgroup
/dev/sda1           1014M  139M  876M  14% /boot
tmpfs                 98M     0   98M   0% /run/user/0

2.3. Tạo swap

2.3.1. Tạo swap dùng swapfile

Chúng ta sẽ tạo swap 1G, nếu bạn muốn tạo swap với dung lượng khác bạn thay thế 1G bằng kích thước bạn cần.

Thực hiện các bước sau để tạo swap:

👉 Bước 1: Đầu tiên, tạo một file sẽ được sử dụng làm không gian swap. Cách thực hiện để tạo một file swap chúng ta sử dụng lệnh fallocate. Lệnh này tạo ra một file có kích thước preallocated. Tạo file 1G bằng cách thực hiện như sau:

[root@localhost ~]# fallocate -l 1G /swapfile

Nếu lệnh fallocate không có sẵn trên hệ thống hoặc nhận được thông báo lỗi fallocate failed: Operation not supported(không được hổ trợ), bạn hãy sử dụng lệnh sau để tạo file swap:

dd if=/dev/zero of=/swapfile bs=1024 count=1024

Bạn có thể thay đỗi count=1024 bằng giá trị khác để tạo file swap với dung lượng bạn mong muốn.

Sau khi tạo file swap chúng ta cần kiểm tra dung lượng file swap bằng lệnh ls:

[root@localhost ~]# ls -lh /swapfile
-rw-r--r--. 1 root root 1.0G Apr 11 22:54 /swapfile

👉 Bước 2: Đảm bảo chỉ người dùng root mới có thể đọc và ghi file swap. Thực hiện như sau:

[root@localhost ~]# chmod 600 /swapfile
[root@localhost ~]# ls -lh /swapfile
-rw-------. 1 root root 1.0G Apr 11 22:54 /swapfile

👉 Bước 3: Thiết lập phân vùng swap trên tệp. Sử dụng lệnh sau:

[root@localhost ~]# mkswap /swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=6f7be2b3-49c0-4411-80dd-1aca84e09244

👉 Bước 4: Thiết lập swap tự động được kích hoạt mỗi khi reboot

Chúng ta cần thiết lập swap tự động được kích hoạt mỗi khi reboot bằng cách sử dụng trình soạn thảo vi thêm vào file /etc/fstab. Chúng ta cần phải kích hoạt như sau:

[root@localhost ~]# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Apr 11 21:36:46 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=8c1d2c4f-13d0-4ec9-ae3d-f706311400ad /boot                   xfs     defaults        0 0
/swapfile swap swap defaults 0 0

👉 Bước 5: File swap của chúng ta đã sẵn sàng để được sử dụng như một phân dùng swap. Chúng ta có thể bắt đầu sử dụng bằng cách sử dụng lệnh sau:

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         121         710           7         140         689
Swap:             0           0           0
[root@localhost ~]# swapon -a

Sau khi tạo phân vùng swap chúng ta cần phải kiểm tra xem hệ thống của chúng tôi có báo cáo phân vùng swap chưa:

[root@localhost ~]# swapon -s
Filename				Type		Size	Used	Priority
/swapfile              	file    	1020	   0          -1
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         120         711           7         140         691
Swap:          1024           0        1024

2.3.2. Tạo swap trên partition

👉 Bước 1: Chúng ta có thể tạo một phân vùng mới /dev/sdb1 với dung lượng 2.9GB. Dùng lệnh fdisk -l kiểm tra phân dùng chúng ta đã tạo có chưa:

[root@localhost ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000acf99

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x1025b50f

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     6097151     3047552   82  Linux swap / Solaris

👉 Bước 2: Sử dụng lệnh partprobe để kernel đọc lại phân vùng ổ cứng:

[root@localhost ~]# partprobe /dev/sdb1

Thay thế /dev/sdb1 bằng tên đĩa của bạn.

👉 Bước 3: Thiết lập phân vùng swap trên tệp. Sử dụng lệnh sau:

[root@localhost ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 3047548 KiB
no label, UUID=961ec0db-ff53-4f23-8b55-c52f9e48e3d0

👉 Bước 4: Thiết lập swap tự động được kích hoạt mỗi khi reboot

Chúng ta cần thiết lập swap tự động được kích hoạt mỗi khi reboot bằng cách sử dụng trình soạn thảo vi thêm vào file /etc/fstab. Chúng ta cần phải kích hoạt như sau:

[root@localhost ~]# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Apr 11 21:36:46 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=8c1d2c4f-13d0-4ec9-ae3d-f706311400ad /boot                   xfs     defaults        0 0
UUID=961ec0db-ff53-4f23-8b55-c52f9e48e3d0 swap swap defaults 0 0

Để lấy UUID của các phân vùng chúng ta thực hiện như sau:

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="961ec0db-ff53-4f23-8b55-c52f9e48e3d0" TYPE="swap"

👉 Bước 5: File swap của chúng ta đã sẵn sàng để được sử dụng như một phân dùng swap. Chúng ta có thể bắt đầu sử dụng bằng cách sử dụng lệnh sau:

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         121         710           7         140         689
Swap:             0           0           0
[root@localhost ~]# swapon -a

Sau khi tạo phân vùng swap chúng ta cần phải kiểm tra xem hệ thống của chúng tôi có báo cáo phân vùng swap chưa:

[root@localhost ~]# swapon -s
Filename				Type		Size	Used	Priority
/swapfile                              	file	4044	0	-2
/dev/sdb1                              	partition	3047548	0	-3
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         127         700           7         143         682
Swap:          2980           0        2980

2.4. Cấu hình swappiness

swappiness là một thuộc tính xác định tần suất hệ thống sẽ sử dụng phân vùng swap.

swappiness có thể có giá trị từ 0 đến 100 chúng ta có thể chọn giá trị swappiness sau cho phù hợp nhất đối với chúng ta ý nghĩa các số từ 0 - 10 qua ba ví dụ sau:

  • swappiness = 0: swap chỉ được dùng khi RAM được sử dụng hết.
  • swappiness = 50: swap được sử dụng khi RAM còn 50%.
  • swappiness = 100: swap được uư tiên sử dụng hơn RAM.

Giá trị swappiness mặc định trên CentOS 7 là 30. Chúng ta có thể kiểm tra giá trị trao đổi hiện tại bằng cách nhập lệnh sau:

[root@localhost ~]# cat /proc/sys/vm/swappiness
30

Chúng ta có thể đặt swappiness thành một giá trị khác bằng cách sử dụng lệnh sysctl. Để đặt swappiness thành 20, thực hiện như bên dưới:

[root@localhost ~]# sysctl vm.swappiness=20
vm.swappiness = 20

Để làm giá trị thay đổi này liên tục trên các lần khởi động lại, chúng ta thêm vm.swappiness=20 vào file /etc/sysctl.conf. Thực hiện như sau:

[root@localhost ~]# vi /etc/sysctl.conf

# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
vm.swappiness=20

3. Xoá phân vùng swap

Sử dụng các bước sau để hủy kích hoạt phân vùng swap.

👉 Bước 1: Huỷ kích hoạt swap chúng ta thực hiện cú pháp sau:

[root@localhost ~]# swapoff /swapfile

👉 Bước 2: Chỉnh sửa file /etc/fstab xoá dòng /swapfile swap swap defaults 0 0 lúc naả ta vừa nhập:

[root@localhost ~]# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Apr 11 21:36:46 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=8c1d2c4f-13d0-4ec9-ae3d-f706311400ad /boot                   xfs     defaults        0 0

👉 Bước 3: Xoá file swap như sau:

[root@localhost ~]# rm -rf /swapfile

Thực hiện cách bước trên chúng ta có thể xoá phân vùng swap.

5. Lời kết

Qua bài trên, giúp cho chúng ta biết phân vùng swap có thể lưu trữ dữ liệu tạm thời khi bộ nhớ RAM đã được dùng hết, cách dùng lệnh để kiểm tra, tạo và xoá phân vùng swap trên hệ điều hành Linux.