Linux에서 스왑되는 파일 시스템


14

Linux에서는 파티션에 ext3 및 reiserfs와 같은 항목을 선택할 수 있습니다. 스왑 파티션의 경우 "스왑"을 선택하면됩니다. 실제로 어떤 파일 시스템입니까? ext3 파티션을 만들어 스왑 파티션으로 만들 수 있습니까? 어떻게 다른가요?


Linux의 스왑 파일 시스템은 Linux 스왑 파일 시스템이라고합니다. 그것에 대한 실제 정보를 찾으면 답변을 게시 할 것입니다. 지금까지 en.wikipedia.org/wiki/Paging 에서 커널이 스왑 파일의 파일 시스템을 우회한다는 내용을 읽었습니다 . 스왑 파티션에서도 마찬가지입니다.
AndrejaKo

1
Gentoo 포럼의 놀라운 사람들 이이 링크를 제공했습니다! 모든 것이 잘 설명 된 것 같습니다. 아 고마워 John R. Graham.
AndrejaKo

답변:


26

스왑은 실제 파일 시스템이 아닙니다. 특별한 구조가없는 원시 주소 지정 가능 메모리 인 디스크의 예약 된 부분입니다.

mkswap은 몇 가지 추가 정보가 포함 된 스왑 영역의 헤더를 만듭니다. util-linux-ng 패키지의 swapheader.h에서 :

struct swap_header_v1 {
    char         bootbits[1024];    /* Space for disklabel etc. */
    unsigned int version;
    unsigned int last_page;
    unsigned int nr_badpages;
    unsigned int padding[125];
    unsigned int badpages[1];
};

헤더 버전 1이 현재 사용됩니다. 그것은 스왑의 원시 구조 뒤에있는 모든 마술에 관한 것입니다.


파티션에 의미있는 것을 읽고 쓰기 위해 일종의 파일 시스템이 필요하지 않습니까?
tony_sid

5
아니요. 메모리 덩어리 만 처리하면됩니다. 바로 페이지입니다. 권한과 날짜가 데이터와 함께 저장되는 실제 파일 시스템과 같이 복잡한 구조 나 추가 정보로 데이터를 저장하지 않기 때문입니다.
matthias krull

6
파일 시스템이없는 경우에도 여전히 블록 주소를 지정할 수 있습니다.
matthias krull

8

스왑 파티션에는 파일과 디렉토리가 없기 때문에 파일 시스템이 필요하지 않다고 생각합니다. 스왑 파티션은 가상 RAM 장소입니다.


2
가상 램 장소가 아닙니다. 프로세스의 가상 메모리에 매핑 될 수있는 램과 같은 메모리입니다.
matthias krull 12

4

리눅스는 스왑 파티션과 스왑 파일의 두 가지 형태의 스왑 공간을 가지고 있습니다. 스왑 파티션은 스왑에만 사용되는 하드 디스크의 독립적 인 섹션입니다. 다른 파일은 그곳에있을 수 없습니다. 스왑 파일은 시스템과 데이터 파일 사이에있는 파일 시스템의 특수 파일입니다.

두 가지 중요한 이유로 스와핑이 필요합니다. 첫째, 시스템이 실제로 사용 가능한 것보다 많은 메모리를 필요로 할 때 커널은 덜 사용 된 페이지를 스왑하고 메모리를 즉시 필요로하는 현재 응용 프로그램 (프로세스)에 메모리를 제공합니다. 둘째, 시작 단계에서 응용 프로그램이 사용하는 많은 수의 페이지는 초기화에만 사용될 수 있으며 다시는 사용되지 않습니다. 시스템은 해당 페이지를 스왑하고 다른 응용 프로그램이나 디스크 캐시를 위해 메모리를 비울 수 있습니다.


2
대답은 정말 좋으며 문제의 핵심을 설명하지만 "GNU / Linux의 스왑이란 무엇입니까?"라는 질문에 대한 대답입니다. 그래서 여기서 뭐하는거야? 또한 링크 관련 linux.com/news/software/applications/…
AndrejaKo

스왑이 무엇인지 알고 있습니다.
tony_sid

... 스왑 파일 옵션에 대해 몰랐습니다
MrCalvin

-1

스왑 공간을 만들 수있는 두 가지 방법이 있습니다 : 파일 시스템 스왑과 장치 (또는 원시) 스왑. 파일 시스템 스왑을 사용하면 파일 시스템에서 파일을 만들고 스왑 공간으로 사용합니다 (pagefile.sys가있는 창에서 볼 수있는 것처럼). 장치 스왑을 사용하면 스왑을 위해 특별히 만든 파티션으로 스왑됩니다.

어떤게 더 좋아:

이 논쟁은 다음과 같은 이유로 "오래된"시대에 훨씬 더 흥미로 웠습니다.

장치 스왑이 "더 나은"이유 : 원시 파티션으로 스왑하기 때문에 inode 및 기타 파일 시스템 오버 헤드가있는 파일 시스템의 모든 추가 오버 헤드를 처리 할 필요가 없기 때문에 더 빠릅니다.

그러나 오늘날이 주장은 실제로 적용되지 않습니다. 요즘 디스크 액세스 속도가 빨라짐에 따라 장치 스왑은 파일 시스템 스왑보다 시간이 많이 걸리지 않습니다.

파일 시스템 스왑이 "더 나은"이유 : 훨씬 쉽게 크기를 변경할 수 있습니다. 파티션 크기를 변경하면 새 파일을 만드는 것보다 훨씬 어렵습니다.

그러나 오늘날 원시 파티션 대신 LVM을 사용하는 많은 사람들이 스왑 공간을 쉽게 축소하고 확장 할 수 있습니다.

오늘날에는 훨씬 더 어리 석습니다. 요즘 대부분의 서버는 성능상의 이유로 메모리를 가득 채우는 것만으로도 가치가 있습니다. (이 토론은 RAM을 사용하기가 더 어려울 때 훨씬 인기가 많았으며 서버에 4GB에서 8GB의 RAM 만 넣는 것이 일반적이었습니다)

FILESYSTEM SWAP을 사용하는 이유 (및 일반적인 스왑)

요즘 나는 4gig swap onl로 설치하도록 지시하고 모든 Linux 설치에 동일한 구성 / 이미지를 사용합니다. Oracle 설치에는 Oracle I이있는 시스템의 경우 더 높은 스왑 사용량이 필요하므로 파일 시스템 스왑으로 나머지를 작성합니다. 응용 프로그램에 스왑 요구 사항이있을 수 있으며이 경우 파일 시스템 스왑을 사용하여 나중에 추가 할 수 있습니다.

도움이 되나요?

나는 리눅스에서 이것을하는 방법에 대한 자세한 지침을 여기에있다 : http://geekswing.com/geek/how-to-add-filesystem-swap-on-linux-and-unix-systems/


1
“그러나 오늘날이 주장은 실제로 유지되지 않습니다. 요즘 디스크 액세스 속도가 빨라짐에 따라 장치 스왑은 파일 시스템 스왑보다 시간이 많이 걸리지 않습니다.”– 이것이 이유가 아닙니다. 여기서 아이디어는 스왑 공간이 즉각적으로 필요할 수 있다는 것입니다 . 파일 시스템에는 디렉토리, 블록, 아이 노드, 버퍼 캐시 등이 포함되는데, 이는 더 많은 메모리가 필요할 수있는 루프로 이어지는 코드 경로입니다. 이것이 스왑이 원시 블록 장치에서 가장 잘 수행되는 이유입니다. 또한 스왑 파일 조각화를 피합니다.
mirabilos

이 답변은 몇 가지 흥미로운 점을 다루지 만 질문에 대답하지 않습니다 ...
Samuel Li
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.