4.11. NFS 콘텐츠 클라이언트 측 캐싱 활성화


FS-Cache는 파일 시스템이 네트워크를 통해 검색한 데이터를 가져와서 로컬 디스크에 캐시하는 데 사용할 수 있는 클라이언트의 영구 로컬 캐시입니다. 이는 네트워크 트래픽을 최소화하는 데 도움이 됩니다.

4.11.1. NFS 캐싱의 작동 방식

다음 다이어그램은 FS-Cache의 작동 방식에 대한 간략한 그림입니다.

FS-Cache 개요

FS-Cache는 시스템의 사용자와 관리자에게 최대한 투명하게 설계되었습니다. FS-Cache를 사용하면 과도하게 마운트된 파일 시스템을 만들지 않고도 서버의 파일 시스템이 클라이언트의 로컬 캐시와 직접 상호 작용할 수 있습니다. NFS를 사용하면 마운트 옵션은 클라이언트에 FS-cache가 활성화된 NFS 공유를 마운트하도록 지시합니다. 마운트 지점은 fscachecachefiles 의 두 커널 모듈에 대해 자동 업로드됩니다. 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 이상에서 파일 시스템을 생성한 경우 기본값입니다.

절차

  1. cachefilesd 패키지를 설치합니다.

    # dnf install cachefilesd
  2. cachefilesd 서비스를 활성화하고 시작합니다.

    # systemctl enable --now cachefilesd

검증

  1. 캐시를 사용하려면 fsc 옵션으로 NFS 공유를 마운트합니다.

    1. 일시적으로 공유를 마운트하려면 다음을 입력합니다.

      # mount -o fsc server.example.com:/nfs/projects/ /mnt/
    2. 공유를 영구적으로 마운트하려면 /etc/fstab 파일의 항목에 fsc 옵션을 추가합니다.

      <nfs_server_ip_or_hostname>:/<exported_share>     <mount point>    nfs fsc 0 0
  2. 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 쌍 모두에 동시에 달라집니다. 사용자는 이를 별도로 처리할 수 없습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.