터미널에서 스왑 파일을 제거하지 않고 어떻게 크기를 늘릴 수 있습니까?


59

기존 "스왑 파일"을 삭제하고 다시 만들지 않고 늘리는 방법이 있습니까? 스왑 공간을 1GB에서 2GB로 늘리고 싶습니다. 현재 다음과 같이 설정되어 있습니다.

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        1048572 736640  -1
$ ls -lh /swapfile
-rw------- 1 root root 1.0G Nov  9  2016 /swapfile

우분투 14.04를 사용하고 있습니다.


당신은 얼마나 많은 RAM을 가지고 있습니까? 2G면 충분합니까? swapoff새로운 / 스왑 파일을 생성 mkswap하고swapon -a
heynnema

1
새 스왑 파일을 추가하고 위 질문의 지시를 따르십시오. 당신은 2 스왑 파일을 가질 수 있습니다;)
Ravexina

1
@Ravexina, 초보자 질문 일 수도 있지만 기존 스왑 파일의 크기를 늘리지 않고 새 스왑 파일을 추가하고 싶은 이유는 무엇입니까? 아니면 기존 스왑 파일을 늘릴 수 없습니까?
Dave

당신이 우리가 할 수있는 알 수 있으므로 즉,도 가능 @ 데이브 swapoff다음 ddmkswap마지막으로 swapon. 파일을 만지고 싶지 않다고 생각했습니다.
Ravexina 2016 년

2
@Ravexina 답변으로 게시
Sergiy Kolodyazhnyy 2016 년

답변:


66

먼저 스왑 파일을 비활성화하십시오.

sudo swapoff /swapfile

이제 스왑 파일의 크기를 늘리십시오 :

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc

위의 명령은 스왑 파일 끝에 1GiB의 0 바이트를 추가합니다.

파일을 "스왑 파일"로 설정하십시오.

sudo mkswap /swapfile

스와핑 활성화 :

sudo swapon /swapfile

3
sudo fallocate -l 2G /swapfile아마도 원래 스왑 파일을 유지하지는 않지만 dd보다 안전 할 것 sudo chmod 600 /swapfile입니다.
heynnema 2016 년

7
@heynnema fallocate스파 스 파일을 만들지 않습니까? swapon맨은 스파 스 스왑 파일 (특히 언급 할 문제가있다 말한다 fallocate).
muru

3
@heynnema no, mkswap맨 페이지는 파일에 구멍이 없어야한다고 말합니다.
muru

1
@muru는 내가 틀렸다고 생각합니다 :-) 17.04의 시작으로 / swapfile을 만드는 방법을 읽을 때마다 그들은 fallocate를 사용했습니다. "디스크 디스트리뷰터"만 사용해야한다고 생각합니다.
heynnema 2016 년

1
@heynnema : 할 수있는 일은 fallocate디스크 공간을 미리 할당 한 다음 dd구멍을 0으로 채우는 데 사용 하는 것입니다.
David Foerster

39

당신은 존재 하나의 크기를 조정하는 대신 새로운 스왑 파일을 추가해야합니다 그것은 당신에게 그렇게 아무 비용이 없기 때문에 . 스왑 파일의 크기를 조정하려면 먼저 스왑 파일을 비활성화하여 스왑 내용을 RAM으로 제거하십시오. 그러면 RAM에 대한 압력이 증가하고 OOM 킬러를 소환 할 수도 있습니다 (몇 분 동안 디스크를 스 래싱 할 수 있음은 말할 것도 없습니다). 여러 스왑 파일은 문제가되지 않지만 다른 스왑 파일을 설정하는 것은 간단합니다. 스왑 파일의 크기를 조정하여 다른 파일을 추가하는 것보다 말 그대로 이점이 없습니다.

dd if=/dev/zero of=/some/file count=1K bs=1M
mkswap /some/file
sudo chown root:root /some/file
sudo chmod 600 /some/file
sudo swapon /some/file

sudo chmod 600 /some/file필요 없거나?
heynnema 2016 년

1
그리고 count=1K1G 파일을 제공합니까? 개수가 블록 크기에 있습니다. 예? 그리고 그것은 512/4096 일 수 있습니까? 아니면 내 수학이 틀렸습니까?
heynnema

3
+1이 방법을 사용하면 나중에 디스크 공간이 필요하다고 판단하는 경우 스왑 파일 중 하나를 쉽게 분리 할 수 ​​있습니다.
joeytwiddle

2
이것은 실제로 정답으로 표시되어야합니다. 와우, 브라보!
Beshoy Girgis

1
@muru는 이것이 영구적 인 해결책이라고 생각합니까? 4 월 30 일에이 명령을 수행했지만 5 월에 두 번째 스왑 파일이 사라졌습니다. 삭제하지 않았지만 사라졌습니다
Christopher Rucinski

13

내가 한 것처럼 다른 스왑 파일을 만들 수 있습니다.

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. 그와 함께 작동하는지 확인 sudo swapon --show
    이 영구적으로 파일을 추가하려면 fstab파일 입력 :
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

fallocate스파 스 파일을 생성하므로 파일을 생성하는 데 비트 를 사용해야합니다. 참조man mkswap
Charles Green

@CharlesGreen 그것은 내가 쓴대로 저에게 효과적이므로 almos 누구에게나 효과가 있습니다.
borekon

나는 독서 man mkswap, 특히 "환경"이전의 마지막 단락
찰스 그린

1
5.65 V Armbian와 NanoPi 네오에 근무
BiTinerary

5

나는 블로그 포스트 에서 Arian Acosta의 조언에 따라 우분투 17.04에 좋은 결과를 얻었습니다 . 여기에서 4G sudo fallocate -l 4G /swapfile를 원하는 기가 바이트로 대체 할 수 있습니다 . 예를 들어 sudo fallocate -l 2G /swapfileTS의 경우.

일반적으로 스왑 파일에 권장되는 크기는 RAM 크기의 2 배이지만 필요한만큼 크게 만들 수 있습니다. 디스크에 저장되기 때문에 성능이 훨씬 나 빠지기 때문에 이는 메모리를 대체하지 않습니다.

스왑 파일을 4GB로 늘리고 우분투 16.04에서 테스트하는 간단한 bash 스크립트를 만들었습니다.

이것은 한 줄씩 또는 bash 스크립트로 실행할 수 있지만 헤드리스 설치를 위해 사용합니다.

#!/bin/bash
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Turning Off Swap ======"
sudo swapoff /swapfile
echo "====== Allocating 4GB Swap ======"
sudo fallocate -l 4G /swapfile
echo "====== Making Swap ======"
sudo mkswap /swapfile
echo "====== Setting Permissions to Root Only  ======"
sudo chmod 600 /swapfile
echo "====== Turning On Swap ======"
sudo swapon /swapfile
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Done! ======"

3
추가 할 SWAP의 양인 스크립트에 인수를 추가해야하며 마지막으로 fstab에 추가해야합니다. 그러나 여전히, 나는 이것을 좋아합니다
LnxSlck

0

"스왑 파일의 크기를 조정하는 방법"에 대한 일반적인 답변 :

Bogdan Cornianu에서 여기 : https://bogdancornianu.com/change-swap-size-in-ubuntu/

[QUOTE (ALMOST VERBATIM, 내 의견 추가 몇 개만 포함) START]

다음 예에서는 / swapfile 에서 사용 가능한 스왑 공간을 4GiB 에서 8GiB로 확장합니다 .

  1. 모든 스왑 프로세스 끄기

    sudo swapoff -a
    
  2. 스왑 크기 조정

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

    if= 입력 파일
    of= 출력 파일
    bs= 블록 크기; 여기 1G에있어서, 1 기비 바이트 또는 지브을 나타내며, man dd이고 G = 1024 * 1024 * 1024 바이트
    count블록 = 승산

  3. 파일을 스왑으로 사용 가능하게 만들기

    sudo mkswap /swapfile
    
  4. 스왑 파일을 활성화

    sudo swapon /swapfile
    
  5. 사용 가능한 스왑 금액 확인

    grep SwapTotal /proc/meminfo
    

[견적서 끝]

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.