/ tmp 디렉토리에 RAM 스토리지를 사용하고이를 위해 최대 RAM 사용량을 설정하는 방법은 무엇입니까?


92

/ tmp 디렉토리는 어떻게 정리됩니까? 질문에 대한 Anonymous 의 의견 을 본 후 , 16GB의 RAM이 있고 모든 것을 사용하지 않았기 때문에 시스템에서 구현하는 것이 좋습니다.

임시 파일이 디스크에 기록되지 않습니다. RAM 디스크에 기록됩니다. 나는 tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0/ etc / fstab에 넣었다 .

내 질문은 :

RAM 사용량의 최대 값을 설정할 수 있습니까 /tmp? 이 경우 최대 용량을 초과하면 하드 디스크 드라이브에 기록됩니까?

나는 다음과 같은 해결책을 읽었습니다.

mkdir -p /tmp/ram
sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/

그러나 내 이해로는 이것이 영구적 인 해결책은 아닙니다. 영구적이어야하는 경우 /etc/fstab구성 파일에 추가해야 합니다.

이것이 올바른 해결책이라면 어떻게 그 마운트 명령을 라인으로 변환 할 수 /etc/fstab있습니까?


쓸모없는 글로 쓰지 않을 것이기 때문에 SSD를 가지고 있다면 이것은 좋은 생각입니다.
Postadelmaga

Ha ha 정확히 같은 질문으로 나를 여기로 데려왔다 : D
Teddy Markov

답변:


80

너가 확실히 맞아. 해당 fstab 항목은 다음과 같습니다.

tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M 0 0

참고 사항 :

공간 tmpfs이 가득 차면 "공간이 충분하지 않습니다"라는 오류가 발생하여 실제 하드 드라이브처럼 작동합니다. 재부팅 (및 캐시 비우기)시이를 해결하면 한 번의 작업으로 시작하는 공간보다 더 많은 공간이 소비 될 때 문제가 발생할 수 있습니다 tmpfs. 이 경우 컴퓨터는 램에서 디스크로 스왑하기 시작합니다. 스왑 파티션이 시작되면 시스템이 중지됩니다.

이 점을 고려하면 현대 머신에는 훨씬 더 많은 램이 존재하고 훨씬 저렴 해 졌기 때문에 512MB의 크기는 현재 훨씬 작습니다. 이미 16GB의 램을 가지고 있으므로 램의 기본값 인 절반을 사용하면 tmpfs거의 모든 시나리오에서 충분할 것입니다. 기본값을 사용하려면 파일에 size=512M항목을 남기지 마십시오 /etc/fstab.

다른 메모 :

다른 시스템 폴더를 램 디스크에 쉽게 마운트 할 수 있습니다.

/var/cache

/var/games

/var/log/apt( 또는 defaults,noatime없이 만 사용 )mode=nosuid

그러나 위와 동일한 규칙이 적용되므로 공간이 부족하면 큰 문제가 발생할 수 있습니다. 예를 들어 / var / log / apt를위한 공간이 부족하면 어떤 프로그램도 설치할 수 없습니다. 또한 /var/log폴더를 램 디스크에 로드 하면 재부팅시 모든 로그 파일이 삭제되므로 예기치 않은 상황이 발생하면 시스템을 디버깅 할 수 없습니다. 따라서 이러한 설정은 사용자 책임하에 사용하십시오!

편집 주 : 나는 제거 /run에서 tmpfs이 폴더 때문에 마운트 옵션 및 하위 폴더가 이미 장착되어 tmpfs기본적으로.


11
내가 틀리지 않으면 / var / tmp /는 재부팅 후 파일을 유지하기위한 것입니다. 이것이 이것과 / tmp /의 주요 차이점이므로 / var / tmp를 램으로 이동해서는 안됩니다.

3
Ubuntu에 4GB tmpfs가 부족하면 20GB SWAP 파티션을 사용합니까?
loostro 2016 년

3
예, 이것도 추가해야합니다. tmpfs가 한계를 초과하자마자 스왑 파티션으로 확장됩니다 (하나가 있으면).
FuzzyQ 2016 년

5
RAM의 절반을 이것에 할당한다는 것은 RAM의 절반이 RAMDISK 용으로 예약되어 있거나 RAMDISK가 소비 할 수있는 용량의 한도 일 뿐이며, 사용하지 않는 것은 RAM이 필요한 모든 프로그램에 할당 된 여유 RAM입니다.
matt

6
@ 매트 그것은 단지 모자입니다.
FuzzyQ

35

systemd을 사용하는 시스템 에서는 tmpfs마운트에 대한 사용 목표를 달성하기 위해 fstab 대신 시스템 단위 파일을 사용할 수 있습니다 tmp. 우분투 16.04 시스템에서 다음을 실행했습니다.

sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mount
sudo systemctl enable tmp.mount
sudo systemctl start tmp.mount

파일 /usr/share/systemd/tmp.mount은 다음과 같습니다

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
[Unit]
Description=Temporary Directory
Documentation=man:hier(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymbolicLink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target

[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime

[Install]
WantedBy=local-fs.target

FuzzyQ의 fstab 접근법을 사용하여 systemd는 fstab 항목을 마운트 단위로 동적으로 변환합니다. 두 가지 방법 중 어느 것이 더 낫다고 생각하지 않습니다.

요청에 따라 RAM의 최대 제한을 설정하려면 쉼표로 구분 size=512M하여 Options줄 에 추가해야합니다 .


2
당신이 필요합니다 systemctl enable tmp.mount"라는 메시지와 함께 실패합니다 CP 다른 systemctl 후 Failed to start tmp.mount: Unit tmp.mount not found."
vimdude

4
@Rick, 그것은 systemctl edit tmp.mount중립적 인 것이 더 좋습니다 . 기본 tmp.mount를 변경하지 않고 override.conf를 쉽게 삭제하여 기본 구성으로 되돌릴 수 있도록 변경 사항을 override.conf에 넣습니다.
Bulat M.

Bulat이 systemctl edit를 사용하는 것에 대해 말한 것은 Ditto이며 첫 번째 단계 ln -s보다는 사용 cp합니다.
Michael Gratton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.