Red Hat Training

A Red Hat training course is available for RHEL 8

10장. NFS에서 캐시 사용

명시적으로 지시하지 않는 한 NFS는 캐시를 사용하지 않습니다. 이 단락에서는 FS-Cache를 사용하여 NFS 마운트를 구성하는 방법을 보여줍니다.

사전 요구 사항

  • cachefilesd 패키지가 설치되어 실행 중입니다. 실행 중인지 확인하려면 다음 명령을 사용합니다.

    # systemctl start cachefilesd
    # systemctl status cachefilesd

    상태는 활성(실행 중) 이어야 합니다.

  • 다음 옵션을 사용하여 NFS 공유를 마운트합니다.

    # mount nfs-share:/ /mount/point -o fsc

    파일이 직접 I /O나 쓰기에 대해 열려 있지 않은 한 /mount/point 아래의 파일에 대한 모든 액세스는 캐시를 통과합니다. 자세한 내용은 NFS의 캐시 제한 사항을 참조하십시오.

NFS 색인은 파일 이름이 아닌 NFS 파일 핸들을 사용하여 콘텐츠를 캐시합니다. 따라서 하드 연결된 파일이 캐시를 올바르게 공유합니다.

NFS 버전 3, 4.0, 4.1 및 4.2는 캐싱을 지원합니다. 그러나 각 버전은 캐싱에 다양한 분기를 사용합니다.

10.1. NFS 캐시 공유 구성

NFS 캐시 공유와 관련하여 몇 가지 잠재적인 문제가 있습니다. 캐시는 영구적이기 때문에 캐시의 데이터 블록은 4개의 키 시퀀스로 인덱싱됩니다.

  • 레벨 1: 서버 세부 정보
  • 수준 2: 일부 마운트 옵션, 보안 유형, FSID, 유니쿼터
  • 레벨 3: 파일 핸들러
  • 레벨 4: 파일의 페이지 번호

수퍼 블록 간의 일관성 관리 문제를 방지하기 위해 데이터를 캐시해야 하는 모든 NFS 수퍼 블록에는 고유한 수준 2 키가 있습니다. 일반적으로 동일한 소스 볼륨 및 옵션이 있는 두 개의 NFS 마운트는 수퍼 블록을 공유하므로 해당 볼륨 내에 다른 디렉터리를 마운트하더라도 캐싱을 공유합니다.

다음은 다른 옵션으로 캐시 공유를 구성하는 방법의 예입니다.

절차

  1. 다음 명령을 사용하여 NFS 공유를 마운트합니다.

    mount home0:/disk0/fred /home/fred -o fsc
    mount home0:/disk0/jim /home/jim -o fsc

    여기서 /home/fred/home/jim 은 특히 NFS 서버의 동일한 볼륨/파티션(home0)에서 가져온 경우 동일한 옵션이 있는 수퍼 블록을 공유할 수있습니다.

  2. 수퍼 블록을 공유하지 않으려면 다음 옵션과 함께 mount 명령을 사용하십시오.

    mount home0:/disk0/fred /home/fred -o fsc,rsize=8192
    mount home0:/disk0/jim /home/jim -o fsc,rsize=65536

    이 경우 /home/fred/home/jim 은 수준 2 키의 일부인 네트워크 액세스 매개 변수가 다르므로 수퍼 블록을 공유하지 않습니다.

  3. 두 하위 트리(/home/fred1 및 /home/fred2)의 내용을 두 번 캐시하려면 수퍼 블록을 공유하지 않고 다음 명령을 사용합니다.

    mount home0:/disk0/fred /home/fred1 -o fsc,rsize=8192
    mount home0:/disk0/fred /home/fred2 -o fsc,rsize=65536
  4. 수퍼 블록 공유를 방지하는 또 다른 방법은 nosharecache 매개 변수를 사용하여 명시적으로 억제하는 것입니다. 동일한 예제 사용:

    mount home0:/disk0/fred /home/fred -o nosharecache,fsc
    mount home0:/disk0/jim /home/jim -o nosharecache,fsc

    그러나 이 경우 레벨 2 키를 home0:/disk0/fred 및 home0:/disk0/ jim 으로 구분할 수 없으므로 수퍼 블록 중 하나만 캐시를 사용할 수 있습니다.

  5. 수퍼 블록에 대한 주소 지정을 지정하려면 fsc=unique-identifier 마운트 옵션을 사용하여 마운트 중 하나 이상에 고유 식별자 를 설정합니다. 예를 들면 다음과 같습니다.

    mount home0:/disk0/fred /home/fred -o nosharecache,fsc
    mount home0:/disk0/jim /home/jim -o nosharecache,fsc=jim

    여기에서 고유 식별자 지m은 /home/ jim 의 캐시에 사용되는 수준 2 키에 추가됩니다.

중요

사용자는 서로 다른 통신 또는 프로토콜 매개 변수가 있는 수퍼 블록 간에 캐시를 공유할 수 없습니다. 예를 들어 NFSv4.0과 NFSv3 간에 또는 NFSv4.1과 NFSv4.2 간에 공유할 수 없습니다. 서로 다른 수퍼 블록을 강제 적용하기 때문입니다. 또한 읽기 크기(rsize) 등의 매개 변수를 설정하면 다른 수퍼 블록을 강제 적용하므로 캐시 공유를 방지합니다.