4.11. NFS 콘텐츠 클라이언트 측 캐싱 활성화
FS-Cache는 파일 시스템이 네트워크를 통해 검색한 데이터를 가져와서 로컬 디스크에 캐시하는 데 사용할 수 있는 클라이언트의 영구 로컬 캐시입니다. 이는 네트워크 트래픽을 최소화하는 데 도움이 됩니다.
4.11.1. NFS 캐싱의 작동 방식
다음 다이어그램은 FS-Cache의 작동 방식에 대한 간략한 그림입니다.
FS-Cache는 시스템의 사용자와 관리자에게 최대한 투명하게 설계되었습니다. FS-Cache를 사용하면 과도하게 마운트된 파일 시스템을 만들지 않고도 서버의 파일 시스템이 클라이언트의 로컬 캐시와 직접 상호 작용할 수 있습니다. NFS를 사용하면 마운트 옵션은 클라이언트에 FS-cache가 활성화된 NFS 공유를 마운트하도록 지시합니다. 마운트 지점은 fscache
및 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.11.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
cachefilesd
서비스를 활성화하고 시작합니다.# systemctl enable --now cachefilesd
검증
캐시를 사용하려면
fsc
옵션으로 NFS 공유를 마운트합니다.일시적으로 공유를 마운트하려면 다음을 입력합니다.
# mount -o fsc server.example.com:/nfs/projects/ /mnt/
공유를 영구적으로 마운트하려면
/etc/fstab
파일의 항목에fsc
옵션을 추가합니다.<nfs_server_ip_or_hostname>:/<exported_share> <mount point> nfs fsc 0 0
FS-cache 통계를 표시합니다.
# cat /proc/fs/fscache/stats
추가 리소스
-
/usr/share/doc/cachefilesd/README
파일 -
kernel-
doc
패키지에서 제공하는 /usr/share/doc/kernel-doc-<kernel_version>/Documentation/filesystems/caching/fscache.txt
4.11.3. NFS 캐시 공유
캐시는 영구적이기 때문에 캐시의 데이터 블록은 4개의 키 시퀀스로 인덱싱됩니다.
- 레벨 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,rsize=8192 home0:/nfs/projects /projects # mount -o fsc,rsize=65536 home0:/nfs/home /home/
사용자는 서로 다른 통신 또는 프로토콜 매개 변수가 있는 수퍼 블록 간에 캐시를 공유할 수 없습니다. 예를 들어 NFSv4.0과 NFSv3 간에 캐시를 공유하거나 NFSv4.1과 NFSv4.2 간에 캐시를 공유할 수 없습니다. 또한 읽기 크기(rsize
)와 같은 매개 변수를 설정하면 다른 수퍼 블록을 강제 수행하므로 캐시 공유를 방지합니다.
4.11.4. NFS 캐시 제한 사항
NFS의 몇 가지 캐시 제한 사항은 다음과 같습니다.
- 직접 I/O를 위해 공유 파일 시스템에서 파일을 열면 자동으로 캐시를 무시합니다. 이 유형의 액세스는 서버에 직접 연결되어 있어야 하기 때문입니다.
- 공유 파일 시스템에서 직접 I/O 또는 쓰기를 위해 파일을 열면 캐시된 파일 사본이 플러시됩니다. FS-Cache는 더 이상 직접 I/O 또는 쓰기를 위해 열리지 않을 때까지 파일을 다시 캐시하지 않습니다.
- 또한 이 FS-Cache 릴리스는 일반 NFS 파일만 캐시합니다. FS-Cache는 디렉토리, 심볼릭 링크, 장치 파일, FIFO 및 소켓을 캐시하지 않습니다.
4.11.5. 캐시 조각 작동 방식
cachefilesd
서비스는 공유 파일 시스템의 원격 데이터를 캐싱하여 로컬 디스크의 여유 공간으로 작동합니다. 이로 인해 사용 가능한 모든 여유 공간을 사용할 수 있으므로 디스크에 루트 파티션도 포함된 경우 문제가 발생할 수 있습니다. 이를 제어하기 위해 cachefilesd
는 캐시에서 이전 오브젝트(예: less-recently accessed objects)를 삭제하여 특정 양의 사용 가능한 공간을 유지하려고 합니다. 이 동작을 캐시 조각이라고 합니다.
캐시 계산은 블록의 백분율과 기본 파일 시스템에서 사용할 수 있는 파일의 백분율을 기반으로 수행됩니다. 6개 제한을 제어하는 /etc/cachefilesd.conf
에 설정이 있습니다.
- Brun N% (블록 백분율), frun N% (파일 백분율)
- 사용 가능한 공간의 양과 캐시의 사용 가능한 파일 수가 이러한 제한보다 증가하면 계산이 꺼집니다.
- bcull N% (블록 백분율), fcull N% (파일 백분율)
- 사용 가능한 공간의 크기 또는 캐시의 파일 수가 이러한 제한 중 하나로 떨어지면 계산이 시작됩니다.
- bstop N% (블록 백분율), fstop N% (파일 백분율)
- 사용 가능한 공간의 크기 또는 캐시의 사용 가능한 파일 수가 이러한 제한 중 하나로 떨어지면 계산에서 이러한 제한보다 위의 항목이 발생할 때까지 디스크 공간 또는 파일의 추가 할당이 허용되지 않습니다.
각 설정에 대한 기본값 N
은 다음과 같습니다.
-
Brun/frun
: 10% -
bcull/fcull
: 7% -
bstop/fstop
: 3%
이러한 설정을 구성할 때 다음 사항이 충족되어야 합니다.
-
0 Cryostat
bstop
<bcull
<brun
< 100 -
0
fSTOP
<fcull
<frun
< 100
이는 사용 가능한 공간과 사용 가능한 파일의 백분율이며 df
프로그램에서 표시하는 백분율을 100에서 뺀 것으로 표시되지 않습니다.
분석은 bxxx와 f xxx 쌍 모두에 동시에 달라집니다. 사용자는 이를 별도로 처리할 수 없습니다.