4.14. NFS 콘텐츠 클라이언트 측 캐싱 활성화
FS-Cache는 파일 시스템이 네트워크를 통해 검색한 데이터를 가져와서 로컬 디스크에 캐시하는 데 사용할 수 있는 클라이언트의 영구 로컬 캐시입니다. 이는 네트워크 트래픽을 최소화하는 데 도움이 됩니다.
4.14.1. NFS 캐싱의 작동 방식 링크 복사링크가 클립보드에 복사되었습니다!
다음 다이어그램은 FS-Cache 작동 방식에 대한 높은 수준의 그림입니다.
FS-Cache는 시스템의 사용자와 관리자에게 최대한 투명하게 설계되었습니다. FS-Cache를 사용하면 과도하게 마운트된 파일 시스템을 만들지 않고도 서버의 파일 시스템이 클라이언트의 로컬 캐시와 직접 상호 작용할 수 있습니다. NFS를 사용하면 마운트 옵션이 FS-cache가 활성화된 NFS 공유를 마운트하도록 클라이언트에 지시합니다. 마운트 지점을 사용하면 커널 모듈 cachefiles
에 대한 자동 업로드가 발생합니다. cachefilesd
데몬은 커널 모듈과 통신하여 캐시를 구현합니다.
FS-Cache는 네트워크를 통해 작동하는 파일 시스템의 기본 작업을 변경하지 않습니다. 이는 파일 시스템에 데이터를 캐시할 수 있는 영구적인 위치를 제공하기만 하면 됩니다. 예를 들어, 클라이언트는 FS-Cache가 활성화되어 있는지 여부에 관계없이 NFS 공유를 계속 마운트할 수 있습니다. 또한 캐시된 NFS는(개인적으로 또는 집합적으로) 캐시에 맞지 않는 파일을 처리할 수 있으므로 파일을 부분적으로 캐시하고 미리 읽을 필요가 없습니다. FS-Cache는 클라이언트 파일 시스템 드라이버에서 캐시에서 발생하는 모든 I/O 오류도 숨깁니다.
캐싱 서비스를 제공하기 위해 FS-Cache에는 cachefiles
서비스인 캐시 백엔드가 필요합니다. FS-Cache에는bmap
(블록 매핑) 및 확장 속성을 캐시 백엔드로 지원하는 마운트된 블록 기반 파일 시스템이 필요합니다.
- XFS
- ext3
- ext4
FS-Cache는 네트워크 또는 기타를 통해 파일 시스템을 임의로 캐시할 수 없습니다. FS-Cache는 FS-Cache, 데이터 스토리지 또는 검색, 메타데이터 설정 및 유효성 검사를 허용하도록 공유 파일 시스템의 드라이버를 변경해야 합니다. FS-Cache는 지속성을 지원하기 위해 캐시된 파일 시스템의 키 및 일관성 데이터를 인덱싱 해야 합니다. 즉, 파일 시스템 개체를 캐시하기 위해 인덱싱 키, 캐시 오브젝트가 여전히 유효한지 여부를 확인하기 위해 일관성 데이터가 있어야 합니다.
FS-Cache를 사용하는 것은 다양한 요인 간의 타협입니다. FS-Cache를 사용하여 NFS 트래픽을 캐시하는 경우 클라이언트가 느려질 수 있지만 네트워크 대역폭을 사용하지 않고 로컬에서 읽기 요청을 충족하여 네트워크 및 서버 로드를 크게 줄일 수 있습니다.
4.14.2. cachefilesd 서비스 설치 및 구성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Enterprise Linux는 cachefiles
캐싱 백엔드만 제공합니다. cachefilesd
서비스는 cachefiles
를 시작하고 관리합니다. /etc/cachefilesd.conf
파일은 cachefiles
가 캐싱 서비스를 제공하는 방법을 제어합니다.
사전 요구 사항
-
/var/cache/fscache/
디렉터리에 마운트된 파일 시스템은ext3
,ext4
또는xfs
입니다. -
/var/cache/fscache/
아래에 마운트된 파일 시스템은 확장 속성을 사용합니다. 이는 RHEL 8 이상에서 파일 시스템을 생성한 경우 기본값입니다.
프로세스
cachefilesd
패키지를 설치합니다.dnf install cachefilesd
# dnf install cachefilesd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cachefilesd
서비스를 활성화하고 시작합니다.systemctl enable --now cachefilesd
# systemctl enable --now cachefilesd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
캐시를 사용하려면
fsc
옵션으로 NFS 공유를 마운트합니다.일시적으로 공유를 마운트하려면 다음을 입력합니다.
mount -o fsc server.example.com:/nfs/projects/ /mnt/
# mount -o fsc server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 공유를 영구적으로 마운트하려면
/etc/fstab
파일의 항목에fsc
옵션을 추가합니다.<nfs_server_ip_or_hostname>:/<exported_share> <mount point> nfs fsc 0 0
<nfs_server_ip_or_hostname>:/<exported_share> <mount point> nfs fsc 0 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
FS-cache 통계를 표시합니다.
cat /proc/fs/fscache/stats
# cat /proc/fs/fscache/stats
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 자세한 내용은 다음을 참조하십시오.
-
/usr/share/doc/cachefilesd/README
파일 -
kernel-
doc
패키지에서 제공하는 /usr/share/doc/kernel-doc-<kernel_version>/Documentation/filesystems/caching/fscache.rst
-
4.14.3. NFS 캐시 공유 링크 복사링크가 클립보드에 복사되었습니다!
캐시는 영구적이므로 캐시의 데이터 블록은 다음 네 가지 키 시퀀스로 인덱싱됩니다.
- 수준 1: 서버 세부 정보
- 수준 2: 일부 마운트 옵션, 보안 유형; FSID; uniquifier 문자열
- 레벨 3: 파일 처리
- 수준 4: 파일의 페이지 번호
수퍼 블록 간의 일관성 관리 문제를 방지하기 위해 데이터를 캐시하는 데 필요한 모든 NFS 수퍼 블록에는 고유한 수준 2 키가 있습니다. 일반적으로 동일한 소스 볼륨과 옵션이 있는 두 NFS 마운트는 수퍼 블록을 공유하므로 해당 볼륨 내에 다른 디렉터리를 마운트하더라도 캐싱을 공유합니다.
예 4.1. NFS 캐시 공유:
다음 두 마운트는 특히 NFS 서버의 동일한 파티션에서 가져온 경우와 동일한 마운트 옵션을 가지므로 수퍼 블록을 공유할 수 있습니다.
mount -o fsc home0:/nfs/projects /projects mount -o fsc home0:/nfs/home /home/
# mount -o fsc home0:/nfs/projects /projects
# mount -o fsc home0:/nfs/home /home/
마운트 옵션이 다른 경우 수퍼 블록을 공유하지 않습니다.
mount -o fsc,rsize=8192 home0:/nfs/projects /projects mount -o fsc,rsize=65536 home0:/nfs/home /home/
# mount -o fsc,rsize=8192 home0:/nfs/projects /projects
# mount -o fsc,rsize=65536 home0:/nfs/home /home/
사용자는 서로 다른 통신 또는 프로토콜 매개 변수를 갖는 수퍼 블록 간에 캐시를 공유할 수 없습니다. 예를 들어 NFSv4.0과 NFSv3 간에 캐시를 공유하거나 NFSv4.1과 NFSv4.2 간에 캐시를 공유할 수 없습니다. 또한 읽기 크기(rsize
)와 같은 매개 변수를 설정하면 다른 수퍼 블록을 강제 수행하므로 캐시 공유를 방지합니다.
4.14.4. NFS 캐시 제한 사항 링크 복사링크가 클립보드에 복사되었습니다!
NFS에는 몇 가지 캐시 제한 사항이 있습니다.
- 직접 I/O를 위해 공유 파일 시스템에서 파일을 열면 캐시가 자동으로 무시됩니다. 이 유형의 액세스는 서버에 직접 액세스해야 하기 때문입니다.
- 직접 I/O에 대한 공유 파일 시스템에서 파일을 열거나 파일의 캐시된 복사본을 플러시합니다. FS-Cache는 더 이상 직접 I/O 또는 쓰기용으로 열 때까지 파일을 다시 캐시하지 않습니다.
- 또한 이 FS-Cache 릴리스는 일반 NFS 파일만 캐시합니다. FS-Cache는 디렉토리, 심볼릭 링크, 장치 파일, FIFO 및 소켓을 캐시하지 않습니다.
4.14.5. 캐시 조각 작동 방식 링크 복사링크가 클립보드에 복사되었습니다!
cachefilesd
서비스는 공유 파일 시스템의 원격 데이터를 캐싱하여 로컬 디스크의 여유 공간으로 작동합니다. 이로 인해 사용 가능한 모든 여유 공간을 사용할 수 있으므로 디스크에 루트 파티션도 포함된 경우 문제가 발생할 수 있습니다. 이를 제어하기 위해 cachefilesd
는 캐시에서 이전 오브젝트(예: less-recently accessed objects)를 삭제하여 특정 양의 사용 가능한 공간을 유지하려고 합니다. 이 동작을 캐시 조각이라고 합니다.
캐시 조각은 블록의 백분율과 기본 파일 시스템에서 사용할 수 있는 파일의 백분율을 기반으로 수행됩니다. /etc/cachefilesd.conf
에는 6개의 제한을 제어하는 설정이 있습니다.
- Brun N% (블록 백분율), frun N% (파일 백분율)
- 사용 가능한 공간의 양과 캐시의 사용 가능한 파일 수가 이 두 제한 이상으로 증가하면 컬링이 꺼집니다.
- bcull N% (블록 백분율), fcull N% (파일 백분율)
- 사용 가능한 공간의 양 또는 캐시의 파일 수가 이러한 제한 중 하나에 속하는 경우 조각이 시작됩니다.
- bstop N% (블록 백분율), fstop N% (파일 백분율)
- 사용 가능한 공간의 양 또는 캐시에서 사용 가능한 파일 수가 이러한 제한 중 하나에 속하는 경우 이러한 제한보다 높은 항목을 다시 발생시킬 때까지 디스크 공간 또는 파일을 추가로 할당할 수 없습니다.
각 설정의 기본값은 다음과 같습니다.
-
Brun/frun
: 10% -
bcull/fcull
: 7% -
bstop/fstop
: 3%
이러한 설정을 구성할 때 다음 사항이 충족되어야 합니다.
-
0 Cryostat
bstop
<bcull
<brun
< 100 -
0
fSTOP
<fcull
<frun
< 100
이는 사용 가능한 공간과 사용 가능한 파일의 백분율이며 df
프로그램에서 표시하는 백분율을 100에서 뺀 것으로 표시되지 않습니다.
culling은 bxxx 와 fxxx 쌍 모두에 동시에 따라 달라지며 사용자는 개별적으로 처리 할 수 없습니다.