스왑: 전용 스왑 파티션을 생성하는 것이 더 낫습니까, 아니면 스왑 파일을 생성하는 것이 더 낫습니까?

스왑: 전용 스왑 파티션을 생성하는 것이 더 낫습니까, 아니면 스왑 파일을 생성하는 것이 더 낫습니까?

예를 들어, 전용 스왑 파티션을 생성하는 시점과 스왑 파일을 생성하는 시점에 대한 이유가 있습니까 /tmp/swap?

저의 특별한 경우에는 메모리가 약간 부족하고(1GB) SSD의 디스크 공간이 상당히 큽니다(256GB). 따라서 교환이 자주 발생합니다.

어떤 의견이라도 감사하겠습니다!

카르스텐

답변1

스왑 파티션 대신 스왑 파일을 사용할 때 제가 발견한 가장 큰 단점은 스왑 파티션을 조각화할 수 없는 반면, 확장 파일 시스템의 스왑 파일은 생성될 때 파티션에서 조각화될 수 있다는 것입니다. 디스크로 인해 순차 액세스 속도가 느려집니다.

답변2

스왑 파일에 대한 액세스는 파일 시스템을 통하지 않습니다. 커널은 어떤 디스크 블록이 스왑인지 알고 직접 액세스합니다1 . 그러나 연속되지 않은 파일은 디스크의 여러 영역에서 조각화될 수 있으며 사용량에 따라 추가 검색으로 인해 전용 파티션보다 속도가 느려질 수 있습니다.

OTOH, 스왑 파티션이 없고 스왑 파티션을 생성할 수 없는 클라우드 서버를 다루는 경우 스왑 파일에 애플리케이션이 포함될 수 있습니다.


[1] "커널은 스왑 시간에 스왑 오프셋 -> 디스크 블록 매핑을 생성하고, 그 시점부터 이 매핑을 사용하여 모든 캐시, 메타데이터 및 파일 시스템 코드를 우회하면서 기본 디스크 큐에 대해 직접 스왑 I/O를 수행합니다."——Linux 커널 아카이브: Re: 파티션 교체 및 파일 교체

답변3

파일에 대한 I/O 작업은 더 많은 커널 코드 계층(예: VFS)을 거쳐야 하므로 파일 교체와 관련된 오버헤드가 더 많습니다. 반면에 이는 상황에 충분할 수 있는 보다 유연한 설정입니다.

답변4

Linux에서 스왑 파일은 상대적으로 효율적이며 스왑 파일이 연속적인 블록 세트로 할당된 경우 파티션과 거의 동일합니다(이를 달성하려면 처음에 파일 시스템을 생성하거나 생성하기 전에 파일 시스템 조각 모음을 수행하는 것이 중요합니다) 효율적인.

임시 암호화(보안에 매우 중요)와 결합하더라도 오버헤드가 많이 추가되지 않습니다( crypttabman 페이지 참조).

관련 정보