Ubuntu 22.04에 스왑 공간을 추가하는 방법

Ubuntu 22.04에 스왑 공간을 추가하는 방법

2022-05-31 last update

10 minutes reading Ubuntu 22.04 Linux Basics Ubuntu

소개


응용 프로그램의 메모리 부족 오류를 방지하는 방법 중 하나는 서버에 교환 공간을 추가하는 것이다.이 설명서에서는 Ubuntu 22.04 서버에 스왑 파일을 추가하는 방법을 설명합니다.

무엇이 기한을 어기는 것입니까?


스왑은 RAM에 저장할 수 없는 데이터를 임시로 저장하기 위해 운영 체제에 예약된 하드 드라이브 스토리지의 일부입니다.이렇게 하면 서버가 작업 메모리에 저장할 수 있는 정보량을 늘릴 수 있지만 주의해야 할 사항이 있습니다.하드디스크의 교환 공간은 주로 RAM에 사용 중인 응용 프로그램 데이터를 저장할 충분한 공간이 없을 때 사용된다.
디스크에 기록된 정보는 RAM에 저장된 정보보다 훨씬 느리지만, 운영체제는 메모리에서 응용 프로그램 데이터를 실행하고 swap로 오래된 데이터를 교환하는 것을 더 좋아한다.전체적으로 말하자면 비SSD 저장소가 있는 시스템에서 교환 공간을 시스템 RAM이 소모될 때의 예비 공간으로 사용하면 메모리 부족 이상을 잘 방지할 수 있다.

1단계 – 시스템 스왑 정보 확인


시작하기 전에, 우리는 시스템이 이미 사용할 수 있는 교환 공간이 있는지 검사할 수 있다.여러 개의 교환 파일이나 교환 구역이 있을 수 있지만, 보통 하나면 충분하다.
다음 내용을 입력하여 시스템이 어떤 교환을 구성했는지 확인할 수 있습니다.
  1. sudo swapon --show
출력이 되돌아오지 않으면 현재 시스템이 사용할 수 있는 교환 공간이 없다는 것을 의미합니다.free 유틸리티를 사용하여 활성 스왑이 없는지 확인할 수 있습니다.
  1. free -h
Output
total used free shared buff/cache available Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi Swap: 0B 0B 0B
출력된 교환 줄에서 보듯이 시스템에 활성 상태의 교환이 없습니다.

2단계 – 하드 드라이브 파티션에서 사용 가능한 공간 확인


교환 파일을 만들기 전에, 우리는 충분한 공간을 확보하기 위해 현재의 디스크 사용 상황을 검사할 것이다.다음을 입력하십시오.
  1. df -h
Output
Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 932K 98M 1% /run /dev/vda1 25G 1.4G 23G 7% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi /dev/loop0 55M 55M 0 100% /snap/core18/1705 /dev/loop1 69M 69M 0 100% /snap/lxd/14804 /dev/loop2 28M 28M 0 100% /snap/snapd/7264 tmpfs 99M 0 99M 0% /run/user/1000
이 예에서 / 열에 있는 Mounted on 장치는 우리 디스크입니다.이 예에서 우리는 대량의 사용 가능한 공간이 있다(1.4G만 사용).사용 방법이 다를 수 있습니다.
비록 교환 공간의 적당한 크기에 대해 많은 의견이 있지만, 이것은 사실상 당신의 개인적인 취향과 응용 프로그램의 요구에 달려 있습니다.일반적으로 시스템의 RAM 수량은 RAM 수량의 두 배와 같거나 좋은 출발점이다.또 다른 좋은 경험법은 RAM 백업으로만 사용한다면 4G를 초과하는 교환은 불필요할 수도 있다는 것이다.

3단계 – 스왑 파일 만들기


이제 우리는 파일 시스템에서 교환 파일을 만들 수 있는 사용 가능한 하드디스크 공간을 알게 되었다.루트 디렉토리 swapfile 에 크기가 / 인 파일을 할당합니다.
교환 파일을 만드는 가장 좋은 방법은 fallocate 프로그램을 사용하는 것이다.이 명령은 지정된 크기의 파일을 즉시 생성합니다.
예제의 서버에 1G RAM이 있으므로 이 설명서에 1G 파일을 작성합니다.서버 요구 사항에 맞게 이 옵션을 조정합니다.
  1. sudo fallocate -l 1G /swapfile
다음 내용을 입력하여 보존 공간이 올바른지 확인할 수 있습니다.
  1. ls -lh /swapfile
  1. -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile
우리의 파일이 만들어졌고 정확한 공간을 남겼습니다.

4단계 – 스왑 파일 활성화


현재 우리는 크기가 정확한 파일을 가지고 있으며, 그것을 교환 공간으로 전환해야 한다.
우선, 루트 권한을 가진 사용자만 내용을 읽을 수 있도록 파일을 잠그는 권한이 필요합니다.이것은 일반 사용자가 이 파일에 접근하는 것을 막고, 이것은 안전에 중대한 영향을 미칠 것이다.
다음 내용을 입력하여 루트 사용자만 파일을 액세스할 수 있도록 합니다.
  1. sudo chmod 600 /swapfile
다음 내용을 입력하여 권한 변경을 확인합니다.
  1. ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile
보시다시피 루트 사용자만 읽기와 쓰기 표시를 사용합니다.
이제 다음 내용을 입력하여 파일을 스왑 공간으로 표시할 수 있습니다.
  1. sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
파일에 태그를 지정하면 스왑 파일을 활성화할 수 있습니다.
  1. sudo swapon /swapfile
다음 내용을 입력하여 교환이 가능한지 확인합니다.
  1. sudo swapon --show
Output
NAME TYPE SIZE USED PRIO /swapfile file 1024M 0B -2
우리는 우리의 발견을 증명하기 위해 free 실용 프로그램의 출력을 다시 한 번 검사할 수 있다.
  1. free -h
Output
total used free shared buff/cache available Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi Swap: 1.0Gi 0B 1.0Gi
우리의 교환이 성공적으로 설정되었고, 우리의 운영체제는 필요할 때 그것을 사용하기 시작할 것이다.

5단계 – 스왑 파일 영구화


우리의 최근 변경 사항은 현재 세션에 교환 파일을 사용합니다.그러나 재부팅하면 서버가 자동으로 스왑 설정을 유지하지 않습니다.우리는 교환 파일을 /etc/fstab 파일에 추가함으로써 이 점을 바꿀 수 있다.
오류가 발생하지 않도록 파일/etc/fstab을 백업합니다.
  1. sudo cp /etc/fstab /etc/fstab.bak
다음 내용을 입력하여 스왑 파일 정보를 /etc/fstab 파일의 끝에 추가합니다.
  1. echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
다음은 교환 공간을 최적화하기 위해 업데이트할 수 있는 설정을 살펴보겠습니다.

6단계 – 스왑 설정 조정


스위치를 처리할 때 시스템 성능에 영향을 미칠 수 있는 옵션을 구성할 수 있습니다.

스왑 속성 조정

swappiness 매개변수 구성 시스템은 RAM에서 스왑 공간으로 데이터를 스왑하는 빈도를 나타냅니다.이것은 0과 100 사이의 값으로 백분율을 나타낸다.
값이 0에 가까우면 절대적으로 필요하지 않으면 코어가 데이터를 디스크로 교환하지 않습니다.RAM과의 상호 작용보다 시간이 오래 걸리고 성능이 현저히 떨어지기 때문에 교환 파일과의 상호작용은 "비싸다"는 것을 기억하십시오.시스템에 너무 의존하지 말라고 말하면 통상적으로 시스템을 더욱 빨리 할 수 있다.
100에 가까운 값은 더 많은 RAM 공간을 사용할 수 있도록 더 많은 데이터를 교환하려고 시도합니다.응용 프로그램의 메모리 프로필이나 서버의 용도에 따라 어떤 경우에는 더 좋을 수 있습니다.
다음 내용을 입력하여 현재 교환 값을 볼 수 있습니다.
  1. cat /proc/sys/vm/swappiness
Output
60
데스크톱에 대해 교환 설정을 60으로 하는 것은 좋은 값이다.서버의 경우 0 가까이로 이동할 수 있습니다.
우리는 sysctl 명령을 사용하여 교환을 다른 값으로 설정할 수 있다.
예를 들어, 스위치를 10으로 설정하려면 다음을 입력합니다.
  1. sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10
이 설정은 다음에 다시 시작할 때까지 유지됩니다.이 행은 /etc/sysctl.conf 파일에 추가하여 재부팅할 때 자동으로 설정할 수 있습니다.
  1. sudo nano /etc/sysctl.conf
아래에서 다음을 추가할 수 있습니다.
/etc/시스템 제어.형태
vm.swappiness=10
완료되면 파일을 저장하고 닫습니다.

캐시 압력 설정 조정


수정할 수 있는 또 다른 관련 값은 vfs_cache_pressure 입니다.이 설정 설정 시스템은 다른 데이터에 inode와dentry 정보를 캐시할 정도를 선택합니다.
기본적으로 이것은 파일 시스템에 대한 데이터에 접근하는 것이다.이것은 보통 매우 비싼 검색과 빈번한 요청이기 때문에 시스템에 캐시는 매우 좋은 일입니다.파일 시스템을 다시 검색하여 현재 값을 볼 수 있습니다.
  1. cat /proc/sys/vm/vfs_cache_pressure
Output
100
현재 설정 때문에, 우리 시스템은 캐시에서 inode 정보를 삭제하는 속도가 너무 빠르다.다음 내용을 입력하여 50과 같은 보다 보수적인 설정으로 설정할 수 있습니다.
  1. sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50
마찬가지로, 이것은 우리의 현재 세션에만 유효하다.우리는 교환 설정에서 한 것처럼 구성 파일에 추가하여 이 점을 바꿀 수 있다.
  1. sudo nano /etc/sysctl.conf
아래에 새 값을 지정하는 행을 추가합니다.
/etc/시스템 제어.형태
vm.vfs_cache_pressure=50
완료되면 파일을 저장하고 닫습니다.

결론


이 안내서의 절차에 따라 메모리 부족 이상을 초래할 수 있는 경우 숨을 돌릴 수 있는 공간이 있습니다.교환 공간은 이런 흔히 볼 수 있는 문제를 피하는 데 매우 유용하다.
만약 OOM(메모리 부족) 오류가 발생하거나 시스템이 필요한 응용 프로그램을 사용할 수 없다는 것을 발견하면 가장 좋은 해결 방안은 응용 프로그램 설정을 최적화하거나 서버를 업그레이드하는 것이다.