이 페이지는 gnu/Linux 에서 스왑 공간 및 페이징에 대한 소개를 제공합니다. 스왑 파티션 및 스왑 파일의 생성 및 활성화를 다룹니다.
Linux 스왑 공간에 관한 모든 것:
Linux 는 물리적 RAM(랜덤 액세스 메모리)을 pages 라는 메모리 덩어리로 나눕니다. 교환하는 프로세스에 의하여 페이지의 메모리로 복사를 미리 구성된 하드 디스크 공간이라는 스왑을 하는 페이지의 메모리입니다. 실제 메모리와 스왑 공간의 결합 된 크기는 사용 가능한 가상 메모리의 양입니다.
스왑에 대한 지원은 Util-linux 패키지의 Linux 커널 및 사용자 공간 유틸리티에 의해 제공됩니다.
스왑 공간
스왑 공간은 디스크 파티션이나 파일의 형태를 취할 수 있습니다. 사용자는 설치 중에 또는 나중에 원하는대로 스왑 공간을 만들 수 있습니다. 스왑 공간을 위해 사용될 수 있 두 가지 목적으로 확장하는 가상 메모리 저쪽에 설치된 물리적 메모리(RAM),또한 일시 중단을 디스크를 지원합니다.
스왑으로 가상 메모리를 확장하는 것이 유익한 경우 설치된 실제 메모리의 양에 따라 다릅니다. 는 경우 양의 물리적 메모리를 양보다 적은 메모리를 실행하는 데 필요한 모든 필요한 프로그램을,그 다음은 도움이 될 수 있도록 스왑. 이렇게하면 Linux 커널 OOM killer 메커니즘이 자동으로 프로세스를 종료하여 메모리를 확보하려고 시도하는 메모리 부족 조건을 피할 수 있습니다. 을 증가량의 가상 메모리에 필요한 금액을 추가,필요한 차이(또는 그 이상)의 교환 공간입니다.
스왑을 활성화하는 가장 큰 단점은 성능이 낮다는 것입니다. 따라서 스왑을 활성화하는 것은 개인적인 취향의 문제입니다: 어떤 것을 선호 프로그램을 통해 사망하 교환하고 다른 사람 좋아하는 스왑 속도가 느린 시스템을 때는 물리 메모리의 소진되었습니다.
을 확인하는 교환 상태,사용:
$ swapon --show
또는 표시하는 물리적 메모리뿐만 아니라 스왑 사용:
$ free -h
스왑 파티션
82
는 MBR 의 스왑 파티션 유형이며 MBR 의 스왑 파티션 자동 감지가 없습니다. 스왑 파티션의/TRIM 명령은 지원되는 경우 커널에 의해 자동으로 발행되는 것 같습니다 Fedora 배포 안내서를 참조하십시오. (Talk 에서 토론하십시오:Swap#Claify swap discovery)대부분의 GNU/Linux 파티션 도구를 사용하여 스왑 파티션을 만들 수 있습니다. 스왑 파티션은 일반적으로82
82
에서 대부분의 경우 이후 systemd 자동으로 감지하여 그것은 마운트(아래 참조).파티션을 Linux 스왑 영역으로 설정하려면 mkswap(8)명령이 사용됩니다. 예:
# mkswap /dev/sdxy
장치를 사용하도록 설정하고 페이지:
# swapon /dev/sdxy
이 기능을 사용하려면 스왑 파티션에서는 부팅 항목을 추가/etc/fstab
:여기서
UUID=device_UUID none swap defaults 0 0
여기서device_UUID
는 스왑 공간의 UUID 입니다.
파일 구문은 fstab 을 참조하십시오.
- 스왑 파티션이 gpt 를 사용하는 장치에 있는 경우 fstab 항목은 선택 사항입니다. 다음 하위 섹션을 참조하십시오.
- TRIM 지원 SSD 를 사용하는 경우 fstab 의 스왑 라인에서
discard
를 사용하는 것이 좋습니다. 면 활성화하는 스왑을 수동으로 swapon,를 사용하는-d
--discard
매개 변수를 달성하 같습니다. 자세한 내용은 swapon(8)을 참조하십시오.
systemd 에 의한 활성화
systemd 는 두 가지 다른 메커니즘을 기반으로 스왑 파티션을 활성화합니다. 둘 다/usr/lib/systemd/system-generators
의 실행 파일입니다. 발전기는 시동시 실행되며 마운트 용 기본 systemd 유닛을 만듭니다. 첫 번째systemd-fstab-generator
는 fstab 을 읽어 스왑을 위한 단위를 포함하여 단위를 생성합니다. 두 번째systemd-gpt-auto-generator
는 루트 디스크를 검사하여 단위를 생성합니다. 그것은 GPT 디스크에서만 작동,자신의 유형 GUID 에 의해 스왑 파티션을 식별 할 수 있습니다,자세한 내용은 systemd#GPT 파티션 automounting 을 참조하십시오.
용 스왑
을 비활성화 특정 스왑:
# swapoff /dev/sdxy
또는 사용하는-a
스위치 비활성화하는 모든 스왑 공간입니다.
스왑은 systemd 에 의해 관리되므로 다음 시스템 시작시 다시 활성화됩니다. 감지 된 스왑 공간의 자동 활성화를 영구적으로 비활성화하려면systemctl --type swap
를 실행하여 책임을 찾으십시오.유닛을 교환하고 마스크하십시오.
스왑 파일
대안으로 만드는 전체 파티션,파일 할 수있는 기능을 제공합 달라의 크기에 비행을하고,더 많은 쉽게 제거됩니다. 디스크 공간이 프리미엄(예:겸손 크기의 SSD)인 경우 특히 바람직 할 수 있습니다.
수동으로
스왑 파일 만들기
dd 를 사용하여 선택한 크기의 스왑 파일을 만듭니다. 예를 들어,512MiB 스왑일:
# dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress
설정한 권한(세계로 읽을 수 있는 스왑 파일이 거대한 지역이 취약점):
# chmod 600 /swapfile
을 만든 후가 올바르게 크기의 파일 형식으로 그것을 스왑:
# mkswap /swapfile
활성화 스왑 파일:
# swapon /swapfile
마지막으로,편집 파일시 구성하는 항목을 추가한 스왑일:
/etc/파일시
/스왑 none 스왑 기본값 0 0
에 대한 추가 정보를 참조하십시오 파일시#사용합니다.
- 스왑 파일은 UUID 또는 레이블이 아닌 파일 시스템의 위치로 지정해야합니다.
- Btrfs 를 사용할 때 생성 된 하위 볼륨도 목록에 추가하고
discard,autodefrag
및 압축 옵션을 제거하는 것을 잊지 마십시오.
제거 스왑 파일
제거하는 스왑 파일,그것은 꺼져 있어야 합 먼저 제거할 수 있습니다.
# swapoff /swapfile# rm -f /swapfile
마지막으로 제거에서 관련 항목/etc/fstab
.
자동화 된
zram-generator
이 도구의 목적은 zram 장치의 생성입니다. Rust 로 작성되었으며 systemd 의 GitHub 에 있습니다. Zram-generatorAUR 패키지와 함께 설치할 수 있습니다.구성은 간단하며 README 에서 설명합니다.나는 이것을 할 수 없다.: 저자는 이제 사용하는 것이 숫양-발전기 대신으로 인해,저렴한 커밋을 주파수와 숫양의 요구를 커버습니다.
systemd-swap 은 zram 스왑,스왑 파일 및 스왑 파티션에서 하이브리드 스왑 공간을 만들기위한 스크립트입니다. Systemd 프로젝트와 제휴하지 않습니다.
systemd-swap 패키지를 설치하십시오. 주석과 설정swapfc_enabled=1
/etc/systemd/swap.conf
systemd-swap
서비스를 시작/활성화하십시오.
자세한 내용과 권장 구성을 설정하려면 작성자 GitHub 페이지를 방문하십시오.
- 경우에는 저널 유지 보여주는 다음과 같은 경고
systemd-swap: WARN: swapFC: ENOSPC
swapfc_force_preallocated=1
/etc/systemd/swap.conf
. - systemd-swap 에서 만든 스왑 파일은 최대 절전 모드에 쉽게 사용할 수 없습니다. Systemd-swap 문제 85 를 참조하십시오.
스왑 암호화
dm-crypt/스왑 암호화를 참조하십시오.
성능
스왑 작업은 일반적으로 크게보다 느리게 직접 액세스하는 데이터를 RAM. 비활성화를 스왑 전적으로 성능을 향상시킬 수 있는 때때로 이어질 저하를 이후,그것은 줄에 사용할 수 있는 메모리 VFS 캐시 원인이 더 빈번하고 비용이 많이 드는 디스크 I/O
스왑 값을 조정될 수 있는 성능 향상을 위해:
Swappiness
swappiness sysctl 매개 변수가 나타내 커널의 설정(또는 회피)스왑의 공간입니다. Swappiness 는 0 에서 200 사이의 값을 가질 수 있습니다(Linux<5.8 인 경우 최대 100). 낮은 값으로 인 커널을 피하는 교환하는 높은 값으로 인 커널을 사용하려고 교환,공간과 값의 100 미 IO 비용으로 동일합니다. 충분한 메모리에 낮은 값을 사용하는 것은 많은 시스템에서 응답 성을 향상시키는 것으로 알려져 있습니다.
현재 위치를 확인 swappiness 값:
$ sysctl vm.swappiness
또는 파일을/sys/fs/cgroup/memory/memory.swappiness
/proc/sys/vm/swappiness
에서 읽을 수 있습을 얻기 위해 원료의 정수 값을 사용할 수 있습니다.
/proc
/sys
대신 합니다.swappiness 값을 일시적으로 설정하려면
# sysctl -w vm.swappiness=10
swappiness 값을 영구적으로 설정하려면 sysctl 을 만듭니다.d(5)구성 파일. 예:
/etc/sysctl.디/99-스왑.conf
vm.swappiness=10
이 작동 할 수있는 이유에 대한 테스트 및 자세한 내용은이 기사를 살펴보십시오.
VFS 캐시 압력
또 다른 sysctl 매개변수에 영향을 미치는 교환 성능은vm.vfs_cache_pressure
통제하는 경향이 커널의를 되찾기 위해 메모리 사용되는 캐싱을 위한 저희 캐시 대 페이지 캐시 및 스왑. 이 값을 늘리면 VFS 캐시가 회수되는 속도가 증가합니다. 자세한 내용은 Linux 커널 설명서를 참조하십시오.
우선순위
경우 하나 이상의 스왑 파일이나 스왑 파티션을 고려해야 할당하는 우선 순위 값(0~32767)각 스왑 영역입니다. 시스템은 우선 순위가 낮은 스왑 영역을 사용하기 전에 우선 순위가 높은 스왑 영역을 사용합니다. 예를 들어 있는 경우,빠른 디스크(/dev/sda
/dev/sdb
pri
매개변수:
/dev/sda1 none swap defaults,pri=100 0 0/dev/sdb2 none swap defaults,pri=10 0 0
또는--priority
매개 변수의 swapon:
# swapon --priority 100 /dev/sda1
경우 두 개 또는 더 많은 분야의 우선 순위가 같고 그것은 가장 높은 우선 순위를 사용할 수 있는 페이지에 할당된 라운드 로빈 기초이다.
Zswap 또는 zram 사용
Zswap 은 스왑 된 페이지에 대해 압축 된 쓰기 백 캐시를 제공하는 Linux 커널 기능입니다. 이렇게하면 성능이 향상되고 IO 작업이 감소합니다. ZRAM 은 디스크의 스왑 파일에 대한 대안으로 메모리에 가상 압축 스왑 파일을 만듭니다.
스트라이핑
스왑 성능상의 이유로 RAID 를 사용할 필요가 없습니다. 커널은 자체할 수 있는 스트라이프를 교환 여러 장치에서,당신은 단지 그들에게 우선 순위가 같은/etc/fstab
파일입니다. 자세한 내용은 소프트웨어-RAID 하우투를 참조하십시오.