GFS2

GFS2
GFS2
개발자레드햇
풀네임글로벌 파일 시스템 2
소개했다2005년 Linux 2.6.19 탑재
구조물들
디렉토리 내용해시(inode에 채워진 작은 디렉토리)
파일 할당비트맵(리소스 그룹)
불량 블록아니요.
한계
최대 파일 수변수
최대 파일 이름 길이255 바이트
파일 이름에 허용되는 문자NUL을 제외한 모든 것
특징들
기록된 날짜속성 변경(ctime), 변경(mtime), 액세스(atime)
날짜 해결나노초
특성시간 제한 없이 저널링된 데이터(일반 파일만), 저널링된 데이터 상속(디렉토리만), 동기 쓰기, 추가 전용, 불변, 호기(디어만, 읽기 전용)
파일 시스템 권한Unix 권한, ACL 및 임의의 보안 속성
투과적 압축아니요.
투과적 암호화아니요.
데이터 중복 배제노드 간에만
다른.
지원되는 운영 체제리눅스
GFS
개발자Red Hat (구 Sistina 소프트웨어)
풀네임글로벌 파일 시스템
소개했다IRIX(1996), Linux(1997)를 사용한 1996년
구조물들
디렉토리 내용해시(inode에 채워진 작은 디렉토리)
파일 할당비트맵(리소스 그룹)
불량 블록아니요.
한계
최대 파일 수변수
최대 파일 이름 길이255 바이트
파일 이름에 허용되는 문자NUL을 제외한 모든 것
특징들
기록된 날짜속성 변경(ctime), 변경(mtime), 액세스(atime)
날짜 해결1s
특성시간 제한 없이 저널링된 데이터(일반 파일만), 저널링된 데이터 상속(디렉토리만), 동기 쓰기, 추가 전용, 불변, 호기(디어만, 읽기 전용)
파일 시스템 권한Unix 권한, ACL
투과적 압축아니요.
투과적 암호화아니요.
데이터 중복 배제노드 간에만
다른.
지원되는 운영 체제IRIX(구식), FreeBSD(구식), Linux

컴퓨팅에서 Global File System 2 또는 GFS2Linux 컴퓨터 클러스터용 공유 디스크 파일 시스템입니다.클러스터 전체에 데이터를 분산하는 분산 파일 시스템과 달리 GFS2를 사용하면 클러스터의 모든 구성원이 동일한 공유 블록 스토리지에 동시에 직접 액세스할 수 있습니다.GFS2는 단일 컴퓨터에서 로컬 파일 시스템으로도 사용할 수 있습니다.

GFS2에는 접속 해제된 동작 모드 및 클라이언트 또는 서버 역할이 없습니다.GFS2 클러스터 내의 모든 노드는 피어로 기능합니다.클러스터에서 GFS2를 사용하려면 공유 스토리지에 액세스할 수 있는 하드웨어와 스토리지에 대한 액세스를 제어하는 잠금 관리자가 필요합니다.잠금 매니저는 별도의 모듈로 동작합니다.따라서 GFS2는 클러스터 구성에는 Distributed Lock Manager(DLM)를, 로컬파일 시스템에는 "nolock" 잠금 매니저를 사용할 수 있습니다.이전 버전의 GFS에서는 페일오버를 통해 용장성을 구현하는 서버 기반 잠금 매니저인 GULM도 지원됩니다.

GFS 및 GFS2는 GNU General Public [1][2]License 조건에 따라 배포되는 무료 소프트웨어입니다.

역사

GFS의 개발은 1995년에 시작되었으며, 원래 미네소타 대학의 매튜 오키프 교수와 [3]학생 그룹에 의해 개발되었다.원래는 SGI의 IRIX 운영체제용으로 작성되었지만 1998년 오픈 소스 코드가 보다 편리한 개발 플랫폼을 제공했기 때문에 Linux로 이식되었습니다.1999년 말/2000년 초에 Sistina Software에 진출하여 한동안 오픈 소스 프로젝트로 살았습니다.2001년 Sistina는 GFS를 독점 제품으로 만드는 선택을 했습니다.

개발자들은 OpenGFS를 GFS의 마지막 공개 릴리스에서 분리하여 OpenDLM과 연동할 수 있는 업데이트를 포함하도록 더욱 강화하였다.그러나 Red Hat이 2003년 12월에 Sistina를 인수하고 2004년 6월 말에 GPL로 GFS 및 많은 클러스터 인프라 부품을 출시하면서 OpenGFS와 OpenDLM은 폐지되었습니다.

Red Hat은 이후 버그 수정과 안정화를 위한 추가 개발에 자금을 지원했습니다.또한 GFS2[4][5] GFS에서 파생되었으며 Linux 2.6.19에서 분산 잠금 매니저(GFS와 공유)와 함께 포함되었습니다.Red Hat Enterprise Linux 5.2에는 평가용 커널 모듈로 GFS2가 포함되어 있습니다.5.3 업데이트로 GFS2는 커널 패키지의 일부가 되었습니다.

GFS2는 Fedora, Red Hat Enterprise Linux 및 관련 Cent의 일부입니다.OS Linux 디스트리뷰션사용자는 상용 지원을 구입하여 Red Hat Enterprise Linux에서 완전히 지원되는 GFS2를 실행할 수 있습니다.Red Hat Enterprise Linux 8.3에서는 공유 스토리지 장치를 사용할 수 있는 [6]클라우드 컴퓨팅 환경에서 GFS2가 지원됩니다.

다음 목록에는 도입된 몇 가지 버전 번호와 주요 기능이 요약되어 있습니다.

하드웨어

GFS 및 GFS2의 설계는 SAN과 같은 환경을 대상으로 합니다.단일 노드 파일 시스템으로 사용할 수 있지만 전체 기능 세트에는 SAN이 필요합니다.이는 iSCSI, Fibre Channel, AoE 또는 Linux에서 다수의 노드에서 공유되는 블록 디바이스(예: DRBD 디바이스)로 표시될 수 있는 기타 디바이스의 형태를 취할 수 있습니다.

DLM 에는, 통신하는 IP 베이스의 네트워크가 필요합니다.이것은 보통 이더넷에 불과하지만, 그 밖에도 많은 해결책이 있습니다.SAN의 선택에 따라서는, 이것을 조합하는 것이 가능하지만, 통상은[citation needed] DLM과 스토리지의 별개의 네트워크가 필요합니다.

GFS는 일종의 펜싱 메커니즘을 필요로 한다.이는 GFS/GFS2 자체가 아닌 클러스터 인프라의 요구 사항이지만 모든 멀티 노드 클러스터에 필요합니다.통상의 옵션에는, 전원 스위치와 리모트 액세스 컨트롤러(DRAC, IPMI, 또는 ILO)가 있습니다.가상 및 하이퍼바이저 기반의 펜싱 메커니즘도 사용할 수 있습니다.다른 노드가 장애가 발생한 노드의 저널을 복구하는 동안 클러스터가 장애가 발생한 것으로 판단한 노드가 갑자기 다시 작업을 시작할 수 없도록 하기 위해 펜싱을 사용합니다.복구가 완료되면 장애가 발생한 노드를 자동으로 재시작할 수도 있습니다.

로컬 파일 시스템과의 차이점

GFS/GFS2의 설계자는 로컬 파일 시스템을 밀접하게 에뮬레이트하는 것을 목표로 하고 있습니다만, 몇 가지 차이점이 있습니다.이 중 일부는 기존 파일 시스템 인터페이스가 클러스터와 관련된 정보 전달을 허용하지 않기 때문입니다.이러한 기능을 클러스터 방식으로 효율적으로 구현하기 어렵기 때문에 발생하는 경우도 있습니다.예를 들어 다음과 같습니다.

  • GFS/GFS2의 flock() 시스템콜은 신호의해 중단되지 않습니다.
  • fcntl() F_GETLK 시스템콜은 블로킹잠금의 PID를 반환합니다.클러스터 파일 시스템이므로 PID는 파일 시스템이 마운트된 노드의 프로세스를 참조할 수 있습니다.이 인터페이스의 목적은 신호를 블로킹프로세스에 송신하는 것을 허가하는 것이므로, 이것은 불가능합니다.
  • 리스는 lock_dlm(클러스터) 잠금모듈에서는 지원되지 않지만 로컬파일 시스템으로 사용할 경우 지원됩니다.
  • dnotify는 "같은 노드"로 동작하지만 GFS/GFS2에서 사용하는 것은 권장되지 않습니다.
  • inotify는 '같은 노드'에서도 동작하며 권장되지 않습니다(단, 향후 지원될 수 있습니다).
  • 스플라이스는 GFS2에서만 지원됩니다.

또 다른 주요 차이점은 GFS/GFS2의 glock(Gee-locks로 발음됨)으로 알려진 캐시 제어 메커니즘이 클러스터 전체에 영향을 미친다는 것입니다.파일 시스템의 각 inode에는 2개의 glock이 관련되어 있습니다.하나(iopen glock이라고 함)는 inode가 열려 있는 프로세스를 추적합니다.다른 쪽(inode glock)은 해당 inode와 관련된 캐시를 제어합니다.글록에는 UN(잠금 해제), SH(공유 - 읽기 잠금), DF(지연 - SH와 호환되지 않는 읽기 잠금) 및 EX(배타적)의 4가지 상태가 있습니다.4가지 모드는 각각 DLM 잠금모드에 직접 매핑됩니다.

EX 모드에서 inode는 데이터와 메타데이터를 캐시할 수 있습니다(즉, 파일 시스템에 쓰기를 기다리는 "더러운" 상태일 수 있습니다).SH 모드에서는 inode가 데이터와 메타데이터를 캐시할 수 있지만 더티하면 안 됩니다.DF 모드에서는 inode는 메타데이터만 캐시할 수 있으며 더티하지 않아야 합니다.DF 모드는 직접 I/O에만 사용됩니다.UN 모드에서는 inode가 메타데이터를 캐시하지 않아야 합니다.

inode의 데이터 또는 메타데이터를 변경하는 조작이 서로 간섭하지 않도록 EX 잠금을 사용한다.즉, 같은 디렉토리에서 파일을 작성/링크 해제하거나 같은 파일에 쓰는 등의 특정 작업은 일반적으로 클러스터 내의 한 노드로 제한해야 합니다.물론 여러 노드에서 이러한 작업을 수행하면 예상대로 작동하지만 캐시를 자주 플러시해야 하기 때문에 그다지 효율적이지 않습니다.

GFS/GFS2 퍼포먼스에 대해 가장 자주 묻는 질문은 이메일 서버에서 퍼포먼스가 저하될 수 있는 이유입니다.해결책은 메일 스풀을 다른 디렉토리로 분할하고 각 노드를 개인 디렉토리 세트에 읽고 쓰는 것을 가능한 한 유지하는 것입니다.

저널링

GFS와 GFS2는 모두 저널링된 파일 시스템이며, GFS2는 ext3와 유사한 저널링 모드 세트를 지원합니다.data=writeback 모드에서는 메타데이터만 저널링됩니다.이 모드는 GFS에서 지원되는 유일한 모드이지만 크기가 0인 경우에만 개별 데이터 파일에 저널링을 켤 수 있습니다.GFS의 저널 파일에는 mmap 또는 sendfile 시스템콜을 지원하지 않는 등 많은 제한이 있습니다.또한 일반 파일과는 다른 온디스크 포맷을 사용합니다.또, 「상속 저널」속성도 있습니다.이 속성을 디렉토리에 설정하면, 그 디렉토리내에 작성된 모든 파일(및 서브 디렉토리)에 저널(또는 각각 상속 저널) 플래그가 설정됩니다.ext3가 지원하는 data=저널 마운트 옵션 대신 사용할 수 있습니다(GFS/GFS2는 지원하지 않음).

또한 GFS2는 각 저널 플러시가 완료되기 전에 더러운 데이터가 동기화된다는 점을 제외하고는 data=writeback과 유사한 data=ordered 모드를 지원합니다.이렇게 하면 inode에 추가된 블록은 메타데이터가 업데이트되기 전에 콘텐츠를 디스크에 동기화하여 새 크기를 기록할 수 있으므로 노드 장애 조건에서 초기화되지 않은 블록이 파일에 나타나지 않습니다.기본 저널링 모드는 ext3의 기본값과 일치하도록 data=ordered입니다.

2010년 현재 GFS2는 data=journal 모드를 아직 지원하지 않지만 GFS와 달리 일반 파일과 저널 파일 모두에 동일한 온디스크 형식을 사용하고 있으며 저널 및 상속 저널 속성도 지원합니다.또한 GFS2는 파일이 열려 있지 않을 때(ext3와 동일) 파일 저널 속성을 변경할 수 있는 경우에 대한 제한을 완화합니다.

성능상의 이유로 GFS 및 GFS2의 각 노드에는 자체 저널이 있습니다.GFS에서 저널은 디스크 익스텐트이며, GFS2에서 저널은 일반 파일입니다.파일 시스템을 한 번에 마운트할 수 있는 노드의 수는 사용 가능한 저널 수에 따라 제한됩니다.

GFS2와 GFS의 기능 비교

GFS2에는 GFS에는 없는 많은 신기능이 추가되어 있습니다.이 페이지의 오른쪽 상자에 기재되어 있지 않은 기능의 개요를 다음에 나타냅니다.

  • 메타데이터 파일 시스템(실제로 다른 루트)– 아래 호환성 및 GFS2 메타데이터 파일 시스템을 참조하십시오.
  • 커널 2.6.32 이후 GFS2 고유의 트레이스 포인트를 사용할 수 있습니다.
  • XFS 스타일의 쿼터 인터페이스는 커널 2.6.33 이후 GFS2에서 사용할 수 있습니다.
  • 캐싱 ACL은 2.6.33 이후 GFS2에서 사용할 수 있게 되었습니다.
  • GFS2는 씬 프로비저닝/SCSI TRIM 요구에 대한 "폐기" 요구 생성을 지원합니다.
  • GFS2는 I/O 장벽을 지원합니다(기본적으로 기본 장치가 이를 지원하는 것으로 가정함).커널 2.6.33 이상부터 구성 가능)
  • FIEMAP ioctl(디스크상의 inode 매핑을 쿼리하기 위해)
  • 스플라이스(시스템 호출) 지원
  • 저널링된 파일에 대한 mmap/splice 지원(일반 파일과 동일한 디스크 형식을 사용하여 사용 가능)
  • 훨씬 적은 조정 가능(설정이 간단함)
  • 순서부 쓰기 모드(ext3에 따라 GFS에는 쓰기 모드만 있음)

호환성 및 GFS2 메타 파일 시스템

GFS2는 GFS로부터의 업그레이드가 간단하도록 설계되어 있습니다.이를 위해 대부분의 온디스크 구조는 빅엔디안 바이트 순서를 포함하여 GFS와 동일하게 유지되었습니다.몇 가지 차이점이 있습니다.

  • GFS2에는 프로세스가 시스템 파일에 액세스하는 "메타 파일 시스템"이 있습니다.
  • GFS2는 저널링된 파일에 일반 파일과 동일한 온디스크 형식을 사용합니다.
  • GFS2는 저널에 일반(시스템) 파일을 사용하는 반면 GFS는 특수 익스텐트를 사용합니다.
  • GFS2에는 다른 "가 있습니다.per_node" 시스템 파일
  • inode의 레이아웃이 (매우 약간) 다릅니다.
  • 간접 블록의 레이아웃이 약간 다릅니다.

GFS와 GFS2의 저널링 시스템은 서로 호환되지 않습니다.업그레이드는 파일 시스템을 오프라인으로 실행하여 메타데이터를 업데이트하는 도구(gfs2_convert)를 사용하여 수행할 수 있습니다.GFS 저널의 일부 스페어 블록은 업데이트 프로세스 중에 GFS2에 필요한 (매우 작은) 노드 단위 파일을 작성하기 위해 사용됩니다.대부분의 데이터는 그대로 유지됩니다.

GFS2의 "메타 파일 시스템"은 파일 시스템 자체가 아니라 메인 파일 시스템의 대체 루트입니다.일반적인 파일 시스템처럼 동작하지만 내용은 GFS2에서 사용되는 다양한 시스템 파일이며, 일반적으로 사용자는 이 파일을 볼 필요가 없습니다.GFS2 유틸리티는 필요에 따라 메타 파일 시스템을 백그라운드에서 마운트 및 마운트 해제합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Teigland, David (29 June 2004). "Symmetric Cluster Architecture and Component Technical Specifications" (PDF). Red Hat Inc. Retrieved 2007-08-03. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  2. ^ Soltis, Steven R.; Erickson, Grant M.; Preslan, Kenneth W. (1997). "The Global File System: A File System for Shared Disk Storage" (PDF). IEEE Transactions on Parallel and Distributed Systems. Archived from the original (PDF) on 2004-04-15.
  3. ^ GFS 스토리지 클러스터와의 OpenGFS 데이터 공유
  4. ^ Whitehouse, Steven (27–30 June 2007). "The GFS2 Filesystem" (PDF). Proceedings of the Linux Symposium 2007. Ottawa, Ontario, Canada. pp. 253–259.
  5. ^ Whitehouse, Steven (13–17 July 2009). "Testing and verification of cluster filesystems" (PDF). Proceedings of the Linux Symposium 2009. Montreal, Quebec, Canada. pp. 311–317.
  6. ^ "Bringing Red Hat Resilient Storage to the public cloud". www.redhat.com. Retrieved 19 February 2021.

외부 링크