tmpfs가 스왑을 오버플로하지 않습니다.

tmpfs가 스왑을 오버플로하지 않습니다.

저는 tmp다음과 같이 구성했습니다./etc/fstab

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 2

문제는 이제 /tmp컴퓨터 메모리의 절반으로 제한되어 있으며 해당 제한에 도달하면 "장치에 남은 공간 없음" 오류가 발생한다는 것입니다.

나는 그것이 "무한"이기를 원합니다. 즉, 디스크 크기까지 커지기를 원합니다.

답변1

내 생각엔 당신이 에 대해 약간의 오해를 갖고 있는 것 같습니다 tmpfs. 다음 내용을 읽어보면 도움이 될 것입니다.커널 문서주제에 관해 여기서 몇 가지 사항을 명확하게 설명하겠습니다.

귀하의 질문 제목 " 스왑이 오버플로되지 않습니다" 는 스왑을 오버플로하지 않지만 어쨌든 스왑을 사용하는 tmpfs질문의 실제 내용을 반영하지 않는 것 같습니다 . 본질적으로 (가상) 메모리 기반 파일 시스템입니다. 해당 내용은 메모리에만 존재하지만 스왑이 가능하므로 커널은 필요할 때 물리적 메모리가 아닌 스왑에 저장할 수 있습니다. 단, 파일 시스템은 사용 가능한 가상 메모리의 총량보다 클 수 없으며,tmpfstmpfstmpfs그림과 같이 물리적 RAM 및 스왑 영역예를 들어통과 free -h.

기본적으로 tmpfs최대 파일 시스템 크기는 사용 가능한 실제 메모리 양의 절반과 같습니다. 매개 변수를 사용하여 이 값을 늘릴 수 있지만 size사용 가능한 물리적 메모리와 스왑을 초과할 수는 없습니다(이 제한은 설치 시 적용되지 않지만). 파일 시스템이 최대 크기에 도달하면(또는 그 만큼의 공간을 차지하는 파일이 포함된 경우) 발견한 대로 공간 부족을 보고합니다. tmpfs공간이 부족한 경우 기본적으로 오버플로를 지원하지 않습니다.

대용량 파일을 임시로 저장할 공간이 필요한 경우에는 /var/tmp대신 를 사용해야 합니다. 파일 시스템이 가득 차면 재난이 발생할 수 있는 /tmp대용량 파일 시스템을 원하지는 않습니다 (커널의 일반적인 메모리 복구 방법은 메모리 복구에서 작동하지 않음). ).tmpfstmpfs

(물론 RAM이 많으면 큰 것도 tmpfs작동합니다. 저는 tmpfsRAM의 75%, 32GiB, 64GiB 등의 빌드 파일 시스템을 사용하여 시스템을 실행했습니다.)

답변2

당신은 다음과 같은 것을 사용할 수 있습니다오브. 두 개의 서로 다른 설치를 하나의 디렉터리로 "병합"할 수 있습니다. 따라서 이 경우 tmpfs 볼륨을 어딘가에 마운트하고 일반 디렉토리를 디스크에 마운트한 다음 aufs를 사용하여 통합할 수 있습니다 /tmp. tmpfs가 먼저 사용되고 tmpfs에 공간이 부족한 경우에만 디스크가 사용되도록 우선순위를 할당할 수도 있습니다.

그러나 aufs는 파일별로 작동하기 때문에 완벽한 솔루션은 아닙니다. 따라서 프로세스가 tmpfs 크기를 초과하여 천천히 커지기 시작하는 파일을 생성하는 경우 tmpfs가 가득 차면 볼륨을 "전환"하지 않습니다. 공간이 부족해집니다(또는 기술적으로 에 아직 공간이 남아 있기 때문에 일반적인 I/O 오류가 발생합니다 /tmp). 그러나 많은 경우 /tmp메모리에서 작동하다가 너무 커지면 디스크로 되돌아갈 수 있습니다.

관련 정보