NOVA(파일 시스템)

NOVA (filesystem)
노바
개발자지안(Andiry) 쉬, 루장, 스티븐 스완슨, 캘리포니아 대학교 샌디에이고 컴퓨터 공학부
프리뷰 릴리즈
Linux 커널 4.13[1]
기입처C
운영 체제리눅스
유형파일 시스템 드라이버
면허증.GPL
웹 사이트github.com/NVSL/linux-nova

NOVA(비휘발성 메모리 액셀러레이션) 파일 시스템Linux용 바이트 주소 지정 가능한 영속 메모리(NVDIMM) 및 3D XPoint DIMM 등)용 오픈 소스 로그 구조 파일 시스템입니다.

NOVA는 바이트 주소 지정이 가능한 영구 메모리를 위해 특별히 설계되었으며 고성능, 원자성 파일 및 메타데이터 작업 및 내결함성을 제공하는 것을 목표로 합니다.이러한 목표를 달성하기 위해 NOVA는 다른 파일 시스템에서 볼 수 있는 몇 가지 기술을 결합합니다.NOVA는 강력원자성을 보장하기 위해 로그 구조, COW(Copy-on-Write), 저널링 및 로그 구조화된 메타데이터 업데이트를 사용하며, 미디어 오류 및 소프트웨어 버그로부터 데이터와 메타데이터를 보호하기 위해 복제, 메타데이터 체크섬 및 RAID 4 패리티를 조합하여 사용합니다.또한 체크포인트를 지원하여 백업을 용이하게 합니다.

파일 시스템

NOVA는 샌디에이고 캘리포니아 대학 컴퓨터 공학부의 [2][3]비휘발성 시스템 연구소에서 개발되었습니다.패치[4]처음에 Linux 커널 버전 4.12에서 사용할 수 있게 되었습니다.2017년 현재 x86-64 Linux로 제한되어 있으며 업스트림 [3]커널과 병합할 준비가 되어 있지 않습니다.

로그 구조

NOVA는 주로 로그 구조화된 파일 시스템이지만 몇 가지 점에서 다른 로그 구조 파일 시스템과 다릅니다.첫째, 파일 시스템 전체에 대해 단일 로그를 사용하는 대신 각 inode에는 inode에 [3]대한 업데이트를 기록하는 전용 로그가 있습니다.따라서 서로 다른 스레드가 inode에서 병렬로 작동할 수 있으므로 파일 작업의 동시성을 높일 수 있습니다.둘째, 로그에는 파일 데이터가 포함되지 않고 메타데이터 업데이트만 포함되므로 로그 크기가 줄어듭니다.셋째, 로그는 물리적으로 연속된 메모리에 저장되지 않습니다.대신 NOVA는 4KB 메모리 페이지의 연결된 목록에 로그를 저장합니다.

NOVA는 로그를 사용하여 단일 파일에 영향을 미치는 작업(예: 파일에 쓰기 또는 메타데이터 수정)에 원자성을 제공합니다.이를 위해 NOVA는 로그의 끝을 지나 빈 공간에 로그 엔트리를 쓴 다음 inode의 포인터를 로그 꼬리에 원자적으로 업데이트합니다.

카피 온 라이트

NOVA는 COW(Copy-on-Write)를 사용하여 파일 데이터를 업데이트합니다.프로그램이 파일에 데이터를 쓸 때 NOVA는 사용되지 않은 메모리 페이지를 할당하여 데이터를 보관합니다.그런 다음 새 페이지를 가리키고 파일 내의 논리적 위치를 설명하는 로그 항목을 inode 로그에 추가합니다.로그 엔트리를 추가하는 것은 atomic이므로 기입도 atomic입니다.

저널링

일부 파일 작업(예를 들어 파일을 한 디렉토리에서 다른 디렉토리로 이동)에서는 여러 개의 inode를 수정해야 합니다.이러한 작업을 원자적으로 수행하기 위해 NOVA는 단순한 저널링 메커니즘을 사용합니다.우선, 조작에 영향을 주는 inode의 끝에 새로운 로그 엔트리를 써넣고 나서 저널을 사용해 inode의 로그 테일 포인터에 필요한 업데이트를 기록합니다.그런 다음 저널에 커밋된 것으로 표시하고 테일 포인터에 업데이트를 적용합니다.

메타데이터 보호

NOVA는 복제 및 체크섬을 사용하여 미디어 오류 및 소프트웨어 버그로 인한 메타데이터 손상으로부터 보호합니다.모든 메타데이터 구조(예: inode, superblock, log entry)에는 구조 내용이 지식으로 변경되었는지 여부를 NOVA가 감지할 수 있는 CRC32 체크섬이 포함되어 있습니다.또한 NOVA는 각 데이터 구조의 복사본인 "프라이머리"와 "리플리카"를 2개 저장하고 서로 멀리 떨어진 곳에 메모리에 저장합니다.

NOVA는 메타데이터 구조에 액세스할 때마다 먼저 프라이머리 및 복제본의 체크섬을 재계산합니다.어느 쪽 체크에 미스매치가 발생했을 경우, NOVA는 다른 쪽 카피를 사용해 파손을 복구합니다.어느 체크섬도 일치하지 않으면 구조가 손실되고 NOVA가 오류를 반환합니다.

데이터 보호

NOVA는 RAID 4를 사용하여 파일 데이터를 보호합니다.각 4KB 페이지를 512바이트 스트립으로 분할하여 패리티 스트립을 영속 메모리의 전용 영역에 저장합니다.또한 8개의 데이터 스트립 및 패리티 스트립에 대한 CRC32 체크섬을 계산(및 복제본 저장)합니다.

NOVA는 페이지를 읽을 때 각 스트립의 체크섬을 확인합니다.스트립 중 하나가 파손된 경우 패리티 비트를 사용하여 스트립 복구를 시도합니다.다른 스트립에서 데이터 손상이 발생하지 않은 경우 복구가 성공합니다.그렇지 않으면 복구가 실패하고 페이지 내용이 손실되고 NOVA가 오류를 반환합니다.

레퍼런스

  1. ^ "linux nova". Retrieved 21 September 2017 – via GitHub.
  2. ^ "NOVA: The Newest Linux File-System, Designed For Persistent Memory - Phoronix". Phoronix.
  3. ^ a b c "The NOVA filesystem [LWN.net]". LWN.net.
  4. ^ "NOVA: a new file system for persistent memory [LWN.net]". LWN.net.

외부 링크