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 마운트는 수퍼 블록을 공유하므로 해당 볼륨 내에 다른 디렉터리를 마운트하더라도 캐싱을 공유합니다.
다음은 다른 옵션으로 캐시 공유를 구성하는 방법의 예입니다.
절차
다음 명령을 사용하여 NFS 공유를 마운트합니다.
mount home0:/disk0/fred /home/fred -o fsc mount home0:/disk0/jim /home/jim -o fsc
여기서
/home/fred
및/home/jim
은 특히 NFS 서버의 동일한 볼륨/파티션(home0)에서 가져온 경우 동일한 옵션이 있는 수퍼 블록을 공유할 수있습니다
.수퍼 블록을 공유하지 않으려면 다음 옵션과 함께
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 키의 일부인 네트워크 액세스 매개 변수가 다르므로 수퍼 블록을 공유하지 않습니다.두 하위 트리(
/home/fred1 및
캐시하려면 수퍼 블록을 공유하지 않고 다음 명령을 사용합니다./home/fred
2)의 내용을 두 번mount home0:/disk0/fred /home/fred1 -o fsc,rsize=8192 mount home0:/disk0/fred /home/fred2 -o fsc,rsize=65536
수퍼 블록 공유를 방지하는 또 다른 방법은
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수퍼 블록에 대한 주소 지정을 지정하려면
fsc=unique-identifier
마운트 옵션을 사용하여 마운트 중 하나 이상에 고유 식별자 를 설정합니다. 예를 들면 다음과 같습니다.mount home0:/disk0/fred /home/fred -o nosharecache,fsc mount home0:/disk0/jim /home/jim -o nosharecache,fsc=jim
여기에서 고유 식별자 지m은
/home/
의 캐시에 사용되는 수준 2 키에 추가됩니다.jim
사용자는 서로 다른 통신 또는 프로토콜 매개 변수가 있는 수퍼 블록 간에 캐시를 공유할 수 없습니다. 예를 들어 NFSv4.0과 NFSv3 간에 또는 NFSv4.1과 NFSv4.2 간에 공유할 수 없습니다. 서로 다른 수퍼 블록을 강제 적용하기 때문입니다. 또한 읽기 크기(rsize) 등의 매개 변수를 설정하면 다른 수퍼 블록을 강제 적용하므로 캐시 공유를 방지합니다.