Linux에서 스왑 파일을 만드는 방법

Linux 컴퓨터에 스왑 공간을 추가하거나 파티션을 엉망으로 만들지 않고 이미 있는 스왑 공간을 늘리십시오. 스왑 공간을 조정하는 쉬운 방법을 보여줍니다.

스왑 파일 대 스왑 파티션

Linux 컴퓨터에 기존 스왑 공간을 늘리거나 새 스왑 공간을 추가하려는 몇 가지 시나리오가 있습니다.

아마도 스왑 공간이 최대 또는 최대에 가깝게 자주 실행되고 있을 것입니다.
설치 과정에서 잘못된 옵션을 클릭하고 실수로 시스템에 스왑을 추가하는 것을 거부하기 쉽습니다.
어쩌면 당신은 이전에 당신이 너무 많은 것을 가지고 있다고 결정했을 것입니다. 랜덤 액세스 메모리 (RAM) 스왑이 필요하지 않았고 마음이 바뀌었습니다.
때때로 당신은 결코 발견할 수 없는 이유로 스왑이 없는 시스템의 관리를 상속받습니다.

이 모든 것에 대한 간단한 해결책은 다음을 추가하는 것입니다. 파일을 컴퓨터로 스왑. 이것은 스왑 공간으로 사용하기 위해 미리 할당되고 예약된 특수 파일입니다. 스왑 파일은 스왑 파일이든 스왑 파티션이든 기존 스왑과 함께 작동합니다.

한때 스왑 파티션에 비해 스왑 파일을 사용하면 성능이 저하되었습니다. 기계식(회전하는) 하드 드라이브의 성능이 향상되고 Linux 운영 체제 내에서 스왑 기능의 효율성이 향상되면 더 이상 그렇지 않습니다. 사실, 일부 Linux 배포판은 이제 기본적으로 스왑 파티션이 아닌 스왑 파일을 생성합니다.

스왑은 메모리가 부족할 때 RAM을 확보하는 수단으로만 사용되지 않습니다. 잘 작동하는 시스템의 중요한 부분입니다. 스왑이 없으면 커널이 정상적인 메모리 관리를 달성하기가 매우 어려워집니다. 스왑 공간을 추가하는 쉬운 방법을 살펴보겠습니다.

시작하기 전에: Btrfs 및 SSD

빨리 논의하고 싶은 두 가지 사항이 있습니다.

그만큼 Btrfs 파일 시스템 스왑 파일에 대한 특정 주의 사항이 있습니다. 한때 두 사람 사이에 갈등이 있었다. 기록 중 복사 한 방식으로 작동하고 다른 방식으로 작동하는 데 필요한 파일을 스왑하려는 Btrfs의 특성. 스왑 파일이 의존하는 일부 기능은 구현되지 않았으며, 스왑 파일 내의 블록 번호 지정에 대한 일부 가정은 Btrfs에서 사실이 아닙니다. 따라서 스왑 파일은 지원되지 않았습니다.

커널 5.0 이후로 당신은 Btrfs 파일 시스템에 스왑 파일을 가질 수 있음 다음 요구 사항으로 설정된 경우:

NOCOW(기록 중 복사) 파일이 없습니다.
압축되지 않았습니다.
서로 다른 하드 드라이브에 걸쳐 있지 않습니다.

대부분의 독자는 기본 ext4 파일 시스템을 사용할 것이므로 이는 문제가 되지 않습니다.

SSD(Solid-State Drive)가 처음 나왔을 때 파일 시스템 쓰기가 빈번한 상황에서 SSD를 사용하는 것에 대한 우려가 있었습니다. 사람들은 SSD에 스왑 공간을 두거나 SSD에 시스템 로깅을 하지 말라는 경고를 받았습니다.

  MS Word에서 문서 내 링크를 추가하는 방법

요즘은 걱정거리가 훨씬 줄어들고 판매되는 많은 SSD는 대부분의 PC보다 수명이 길다. SSD의 스왑 파일은 기계식 하드 드라이브의 스왑 파티션보다 성능이 훨씬 좋습니다.

기존 스왑 공간 확인

뛰기 전에 보세요. 컴퓨터에서 사용할 수 있는 스왑 공간을 확인해 보겠습니다. 두 가지 방법으로 이 작업을 수행할 수 있으며 둘 다 사용합니다. free 명령은 사용된 메모리와 사용 가능한 메모리를 표시합니다. -h(사람이 읽을 수 있음) 옵션은 메모리 값을 표시할 때 합리적인 단위를 자유롭게 사용할 수 있도록 합니다.

free -h

free의 출력은 이 시스템에 구성된 스왑 공간이 없음을 보여줍니다.

스왑은 RAM 및 여유 RAM 자르기 없이 논의되지 않습니다. 따라서 여유 RAM이 237MB로 제공된다는 점은 주목할 가치가 있습니다. 사용할 수 있는 총 RAM으로 착각하지 마십시오. 이 값은 881MB인 “사용 가능한” 수치로 제공됩니다.

Linux는 파일 캐싱 및 커널 버퍼와 같은 자체 목적을 위해 여유 RAM을 사용합니다. 전용 RAM의 양은 871MB인 “버프/캐시” 수치입니다. 그러나 그 메모리는 여전히 “사용 가능한” 것으로 간주되고 계산됩니다. “buf/cache” RAM의 내용은 즉시 폐기될 수 있으며 약간의 메모리가 필요한 모든 응용 프로그램에서 사용할 수 있습니다.

스왑 공간이 사용 가능한지 확인하는 또 다른 방법은 swapon 명령을 사용하는 것입니다. –show 옵션은 컴퓨터의 스왑 변경 사항. 통계만 제공합니다.

swapon --show

이 명령의 출력이 없으면 구성된 스왑이 없는 것입니다.

이러한 명령을 통해 일부 스왑 공간이 이미 구성되어 있음이 밝혀진 경우 기존 스왑 공간의 크기는 만들려는 스왑 파일의 크기와 관련된 결정에 고려되어야 합니다.

얼마나 많은 스왑 공간이 필요합니까?

전통적인 반응은 “당신이 가지고 있는 RAM의 두 배”였습니다. 그러나 이것은 컴퓨터의 RAM이 매우 제한적일 때 만들어졌습니다. RAM이 저렴해지고, 메모리를 많이 요구하는 프로그램과 게임이 늘어남에 따라 PC 사양도 이에 맞춰 조정되었습니다. 32GB RAM이 장착된 가정용 PC는 오늘날 흔하지 않습니다. 그리고 32GB의 RAM이 있는 경우 공간을 교체하기 위해 64GB의 하드 드라이브 공간을 할당하지 않을 것입니다. 그것은 명백히 과도하다.

필요한 스왑의 양은 “최고의 편집자”에 필적하는 소동의 주제입니다. 우리가 이 주제에 관해 본 가장 합리적인 토론 중 하나는 우분투 스왑 FAQ. 이것은 짧고 상식적인 접근 방식입니다(많은 사람들과 마찬가지로 Linux에서 스왑이 작동하는 방식을 오해하지만). 시스템에 있는 RAM의 양과 컴퓨터를 최대 절전 모드로 전환할지 여부에 대한 권장 스왑 공간의 양을 보여주는 편리한 표가 있습니다.

좋은 소식은 어떤 값을 선택하느냐가 중요하지 않다는 것입니다. 우리는 항상 스왑 파일을 제거하고 더 큰 파일이나 더 작은 파일로 교체할 수 있습니다. 또는 다른 스왑 파일을 추가할 수 있습니다.

  iPhone 및 iPad에서 사진 및 비디오에 캡션을 추가하는 방법

선택하다 테이블의 스왑 파일 크기, 잠시 동안 실행하십시오. 시스템의 스왑 공간 사용을 모니터링합니다. 미세 조정이 필요한 경우 쉽게 변경할 수 있습니다. 스왑 파일을 사용하면 2분이면 됩니다. 라이브 Linux 컴퓨터에서 파티션을 조정하는 것과 비교하십시오.

스왑 파일 생성

fallocate 명령을 사용하면 안 됩니다. 스왑 파일을 생성하려면. 이것은 swapon의 매뉴얼 페이지에서 가져온 것입니다.

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

따라서 fallocate가 더 빠르지만 dd를 사용하여 스왑 파일 생성. 이 기사를 연구하는 데 사용된 컴퓨터에는 2GB의 RAM이 있습니다. 1GB 스왑 파일을 만들 것입니다.

옵션은 다음과 같습니다.

if: 입력 파일. 이 예에서 우리는 0바이트의 스트림을 제공할 /dev/zero를 사용하고 있습니다.
of: 출력 파일입니다. 루트 디렉토리에 swapfile이라는 파일을 생성할 것입니다.
bs: 바이트 단위의 블록 크기. 한 번에 입력 파일에서 읽고 출력 파일에 쓸 바이트 수를 지정합니다.
count: 읽고 쓸 블록 수. 이 숫자에 bs 값을 곱하여 파일 크기를 구합니다.

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

파일이 생성될 때 일부 통계가 제공됩니다.

파일에 기록된 블록(레코드)의 수, 파일의 크기, 파일을 생성하는 데 걸린 시간 및 유효 데이터 전송 속도를 볼 수 있습니다.

ls 명령을 사용하여 루트 디렉터리에 있는 파일을 확인합니다.

ls /

스왑 파일 준비

우리는 할 필요가 스왑 파일 준비 사용하기 전에 mkswap 명령을 사용합니다. 파일의 경로와 이름 외에 mkswap에 매개변수를 제공할 필요가 없습니다.

sudo mkswap /swapfile

파일은 스왑 파일로 사용할 준비가 되었습니다. 파일 권한에 대한 경고에 유의하십시오. 루트 사용자만 스왑 파일을 읽고 쓸 수 있도록 변경해야 합니다.

스왑 파일 사용

기본 권한은 너무 자유로우므로 루트만 스왑 파일을 사용할 수 있도록 제한해야 합니다. chmod를 사용하여 파일 권한을 변경합니다.

sudo chmod 600 /swapfile

이렇게 하면 파일 그룹 구성원과 다른 사람의 모든 권한이 제거되지만 파일 소유자인 루트는 파일을 읽고 쓸 수 있습니다.

사용할 수 있는 새 스왑 파일이 있음을 Linux에 알리기 위해 swapon 명령을 사용해야 합니다. 경로와 파일 이름만 제공하면 됩니다.

sudo swapon /swapfile

이제 스왑 파일이 활성화되었습니다.

  Linux에 Fade In Screenwriting 소프트웨어를 설치하는 방법

fstab에 스왑 파일 추가

재부팅 후 스왑 파일을 사용할 수 있는지 확인하려면 /etc/fstab 파일에 추가하십시오. 원하는 텍스트 편집기를 사용할 수 있지만 그래픽 Gedit 텍스트 편집기를 사용하여 프로세스를 보여줍니다.

sudo gedit /etc/fstab

파일 맨 아래에 추가해야 하는 줄은 다음과 같습니다.

/swapfile    none    swap    sw    0    0

필드는 다음과 같습니다.

파일 시스템: 스왑 파일의 경로와 이름입니다.
마운트 지점: 파일은 파일 시스템처럼 마운트되지 않으므로 항목은 “없음”입니다.
유형: “스왑”입니다.
옵션: 부팅 시 swapon -a(스왑으로 표시된 모든 장치 시작)는 부팅 스크립트 중 하나에서 호출됩니다. 이 옵션은 이 항목을 swapon -a 명령의 제어 하에 있어야 하는 스왑 리소스로 처리하도록 Linux에 지시합니다. 일부 Linux 사용자 사이에 이 필드가 무시된다는 잘못된 믿음이 있기 때문에 여기에서 “기본값”이 사용되는 것을 보는 것이 일반적입니다. 우리가 보게 되겠지만, 그것은 사실이 아닙니다. 따라서 올바른 옵션을 사용하는 것이 좋습니다.
덤프: 0으로 설정할 수 있습니다. 이 경우에는 관련이 없습니다.
통과: 0으로 설정할 수 있습니다. 이 경우에는 관련이 없습니다.

변경 사항을 저장하고 편집기를 닫습니다.

스왑 사용량 확인

스왑 공간이 사용되고 있는지 확인하려면 –show 옵션과 함께 swapon 명령을 사용하십시오.

swapon --show

열은 다음과 같습니다.

이름: 스왑 파티션 또는 스왑 파일의 이름입니다.
유형: 스왑 장치의 유형입니다.
크기: 스왑 리소스의 크기입니다.
사용됨: 사용된 스왑 공간의 양입니다.
Prio: 이 스왑 공간의 우선 순위입니다.

스왑 공간 우선 순위

각 스왑 공간에는 우선 순위가 할당됩니다. 제공하지 않으면 자동으로 할당됩니다. 자동으로 할당된 우선 순위는 항상 음수입니다. 수동으로 할당할 수 있는 우선순위 범위는 0~32767입니다. 우선순위가 높은 스왑 자원이 먼저 사용됩니다.

둘 이상의 스왑 공간이 동일한 우선 순위를 갖고 있으면 둘 다 가득 찰 때까지 번갈아 사용되며 시스템은 다음으로 낮은 우선 순위의 스왑 공간을 찾습니다. 단일 스왑 공간만 있는 경우 우선 순위는 물론 관련이 없습니다. 그러나 우리는 그것을 수행하는 방법을 보여주기 위해 만든 스왑 파일의 우선 순위를 변경할 것입니다.

우선 순위를 설정하려면 pri=(우선 순위) 옵션을 /etc/fstab 항목에 추가합니다. /etc/fstab에 추가한 줄을 다음과 같이 편집합니다.

/swapfile    none    swap    sw,pri=10    0    0

즉, “sw”와 쉼표로 구분하여 옵션 필드에 pri=10을 추가합니다. “sw”, 쉼표 및 “pri=10” 사이에 공백을 두지 마십시오. 컴퓨터를 재부팅하고 swapon –show 명령을 사용합니다.

swapon -- show

이 스왑 공간의 우선 순위가 10으로 높아졌습니다. 이는 /etc/fstab 항목의 옵션 필드가 무시되지 않는다는 확실한 증거입니다.

손쉬운 스왑 공간

설명과 설명을 생략하면 다음과 같이 쉽고 빠르게 새 스왑 파일을 만들 수 있습니다.

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

작동했는지 확인합시다.

swapon --show

영구적으로 삭제하려면 /etc/fstab 파일에 넣으십시오.

팔. 작업 완료.