교체 중 시스템이 정지됨

교체 중 시스템이 정지됨

나는 CIFS를 통해 외부 NAS로 전환되는 Raspberry Pi를 가지고 있습니다(저를 판단하지 마십시오 :))(링크는 직접 100Mbit 전이중 이더넷 연결입니다). 스와핑은 특정 임계값(약 100MB)에 도달할 때까지 잘 작동합니다. 그러면 시스템이 정지되고 NAS에 대한 네트워크 연결이 중단됩니다. Samba 공유는 자동 마운트를 통해 마운트됩니다. Pi가 스왑 파일 사용을 중단한 이유를 알고 싶다면 어디서부터 시작해야 합니까? 단지 무거운 프로그램을 컴파일하고 있기 때문에 속도가 느려지는 것은 문제가 되지 않지만 프로그램이 멈추면 강제로 다시 시작해야 합니다.

답변1

커널 코드만 보면 CIFS 마운트에서 파일을 교환할 수도 없어야 하는데 이것이 작동한다는 사실에 꽤 놀랐습니다. 네트워크 파일 시스템에서의 스와핑에는 두 가지 일반적인 문제가 있습니다.

  1. Linux에서 스와핑하려면 정적 블록 매핑이 필요합니다. 이것이 기록되지 않은 범위를 사용하지 않는 한 스왑 파일이 희박할 수 없는 이유이며, 쓰기 중 복사 또는 로그 구조 파일 시스템에 스왑 파일을 저장하려면 라운드 로빈 장치가 필요한 이유입니다. 이론적으로는 루핑 장치를 사용하여 이 문제를 해결할 수 있지만 이는 최후의 수단이어야 합니다.
  2. 일부 프로토콜이나 인증 설정에는 사용자 공간 구성 요소가 필요하며 해당 구성 요소가 전체 주소 공간을 mlock()하지 않으면 사용자 공간 코드를 실행할 수 없기 때문에 아무것도 바꿀 수 없는 상황이 발생할 수 있습니다. t mlock()을 메모리에 로드합니다.

CIFS는 인증을 사용하고 시스템이 지속적인 연결을 유지하지 않는 경우 두 번째 문제와 마찬가지로 첫 번째 문제로 어려움을 겪습니다.

Pi를 사용한다고 말씀하셨는데, ZRAM과 로컬 스왑 파일(괜찮은 SD 카드는 저렴함) 사용을 고려해 보시기 바랍니다. 원하는 경우 SD 카드 대신 USB 플래시 드라이브를 사용할 수도 있습니다.

또는 더 일반적으로 합리적인 NAS 시스템이 있는 경우 (일반적인 선호도 순서대로) NBD, ATA over Ethernet 또는 iSCSI를 통해 교체하는 것을 고려할 수 있습니다(Pi에서 설정하는 방법에 따라 위에 나열된 두 번째 제한 사항).

관련 정보