내 서버에는 2GB RAM 및 120GB SSD와 스토리지 용 RAID 어레이가 있습니다. OS는 데비안 8 (Linux 3.16)입니다.
내가 가지고있는 MySQL의 강렬한 응용 프로그램이 tmpdir
= /run/mysqld
A는, tmpfs
을 통해 데비안 구성을 /etc/default/tmpfs
:
# Size limits. Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM
예전 20%VM
에는 약 384M이었습니다. 나는 몇 개 no space left on device
에 대항 하여 그것을 증가 40%VM
시켰지만 약 763M에서도 여전히 너무 작습니다.
이제 더 많은 RAM을 추가해야하지만 호기심으로 여기의 한계를 알고 싶습니다.
/dev/sdd1
에 장착되어/
50기가바이트 자유에 대해 가지고 있으며, 빠른 공정이다 (삼성 850 EVO SSD)/dev/sdd5
내 스왑 파티션이고 3.7G입니다 (fdisk 유형 ID는 82 임).TMPFS_SIZE
로 설정40%VM
, 의미/run
는 763M
이제 tmpfs가 스왑 될 수 있다는 것을 알고 있습니다. 가능할 때마다 MySQL이 RAM에 쓰길 원하지만 더 많은 메모리가 필요한 경우 시스템이 SSD에서이를 스왑하도록 허용 할 수 있습니다.
따라서 설정을 통해 다음과 같이 할 수 /run
있습니다.
- 300M 큰가요? 예. 이것이 기본값이었습니다.
- 1.5GB가 큰가요? 예, MySQL은 1.3GB를 사용했으며 시스템은 매력처럼 작동했습니다. 그러나 여전히 절반의 실제 메모리 + 스왑 파티션입니다.
- 2.5GB가 큰가요? 이것은 실제 메모리 이상이지만 실제 메모리 + 내 스왑 파티션의 절반 미만입니다.
- 4GB가 큰가요? 이것은 물리 + 스왑의 절반에 꼭 맞습니다.
- 더? 10GB처럼? 여유 공간을 사용
/
하여 더 많이 교환 할 수 있습니까?
안전을위한 경험 법칙은 TMPFS_SIZE
스왑 + 반 물리적 메모리보다 크지 않아야 한다고 생각 합니다. 스왑 파티션을 늘리지 않고도 이것을 넘어 설 수 있습니까?
또한, 넣을 수 200%VM
에 /etc/default/tmpfs
? tmpfs(5)
100 % 이상을 넣을 수 있는지 알지 못하고 읽었습니다 .
마지막으로 /etc/fstab
대신 대신해야 /etc/default/tmpfs
합니까?
(로만 수행했음을 알기 위해 mount -o remount
아직 서버를 재부팅하지 않았습니다)
편집 : 마지막 질문에 /etc/fstab
대해서는 (맨 페이지의 아래 인용문 참조)에 의해 수정 될 수 있음 을 알고 있지만 /etc/default
지금까지 아무것도 만지지 않았으므로 모범 사례를 알고 싶었습니다 .
/ etc / fstab에 적합한 항목을 작성하면 더 복잡한 마운트 옵션을 사용할 수 있습니다.
답변
나는 그것을 테스트 할 수 있다고 생각했기 때문에 나는 달렸다.
sudo mount -o remount,size=2800M /run
매력처럼 일했습니다.
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.8G 45M 2.7G 2% /run
그래서 나는 그것을 조금 채웠다.
fallocate -l 1G /run/test.img
fallocate -l 1G /run/test2.img
fallocate -l 500M /run/test3.img
결과:
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.8G 2.6G 208M 93% /run
시스템이 여전히 작동 중입니다. 스왑 가용성이 감소하여 사용되었음을 증명합니다.
- 17:10 : 2.5GB 파일 만들기
/run
- 17:20 : 500M 파일 제거
총 스왑 금액이 인에 의해 줄어 듭니다 /run
.
커널이 다시 마운트를 거부하는지 또는 예기치 않은 동작을하는지 알 수 없기 때문에 VM에서 10GB를 테스트했습니다.
나는 여전히 실제 답변을 찾고 있지만 실용적인 방법으로 효과가 있음을 보여주었습니다.