내 홈 서버에는 Proxmox가 설치되어 있습니다. 설치하는 동안 작은 기본 스왑 파티션을 만들었지만 서버에 192GB RAM이 설치되어 있기 때문에 이것이 필요하다고 생각하지 않았습니다. 그러나 놀랍게도 때때로 스왑이 사용됩니다. 시스템에 여전히 60GB 이상의 사용 가능한 메모리가 있고 수백 메가바이트의 스왑 공간만 사용하는 경우 이는 드문 일이 아닙니다. 게다가 실험을 위해 스왑을 비활성화하기로 결정했습니다. 결과적으로 일부 가상 머신이 때때로 종료되는 반면 모니터링 도구에서는 시스템에 충분한 리소스가 있다고 보고합니다. 저는 많은 조정이 필요하지 않은 매우 간단한 설정을 실행했기 때문에 하이퍼바이저에 스왑이 매우 중요하다는 것을 깨달았습니다.
이제 좋은 질문은 올바른 스왑 설정을 만드는 방법입니다.
내 시스템에는 4개의 NVME SSD가 있습니다. 이를 사용하여 ZFS 풀을 만들고 빠른 저장소 요구 사항에 따라 결과 풀을 사용할 계획입니다. ZFS를 사용하여 스왑을 생성하는 방법에 대한 몇 가지 아이디어가 있지만 이는 잘못된 결정인 것 같습니다. ZFS는 쓰기 중에 메모리를 할당하므로 오류가 발생할 수 있습니다.
또 다른 아이디어는 NVME를 여러 파티션으로 분할하는 것입니다. 하나는 스왑용 작은 파티션이고 다른 하나는 ZFS 데이터용 대형 파티션입니다. 나는 실험을 했다. 각 드라이브에 16GB 스왑 파티션을 만들고 각 드라이브에 남은 공간을 사용하여 ZFS 풀을 만들었습니다. 그런 다음 4개의 스왑 파티션을 사용하도록 커널을 구성했습니다. 모든 것이 예상대로 작동했지만 커널이 SSD 중 하나만 스왑용으로 사용하고 다른 SSD는 많이 활용되지 않는 것을 관찰하기 시작했습니다.
그렇다면 이 상황에서 여러 SSD 간의 로드 균형을 어떻게 맞출 수 있을까요?
답변1
스왑 디스크를 습격할 필요가 없습니다. 이는 도움이 되지 않을 뿐만 아니라 해로울 수도 있습니다.
각 디스크의 zfs에서 별도의 파티션을 생성하고 모두 스왑 파티션으로 사용할 수 있습니다. 서로 다른 우선순위를 지정하면 각 항목이 채워지면 다음 항목이 사용되기 시작합니다. 아마도 그들 모두에게 동일한 우선순위를 부여해야 할 것입니다. 그러면 급습 없이 병렬로 사용될 것입니다.
zfs에서 스왑 파일을 만들 수 있으며 zfs는 병렬 액세스를 처리합니다. 그러나 과거에는 충돌 수준의 버그가 있었고 일부 zfs 버전 문서에는 스왑 파일이 지원되지 않는다고 명시되어 있습니다. 또한 zfs가 중복 RAID를 사용하는 경우 낭비가 될 수 있습니다.
더 나은 zfs 대안은 이 명령을 사용하여 스왑 볼륨을 만드는 것입니다 zfs create -V
. 이는 필요에 따라 스왑 볼륨의 크기를 조정할 수 있고 스왑과 zfs가 디스크를 놓고 경쟁하는 대신 zfs가 I/O를 완전히 관리할 수 있기 때문에 별도의 스왑 파티션보다 낫습니다. 또한 명시적인 zfs 스왑 볼륨에는 RAM을 확보하기 위해 스왑 페이지를 저장하기 위해 캐싱에 RAM을 사용하는 문제가 없습니다.
당신은 또한 볼 수 있습니다https://askubuntu.com/questions/228149/zfs-partition-as-swap