Unix 파일 시스템

Unix File System
UFS
개발자CSRG
풀네임UNIX 파일 시스템
소개했다4.2의 경우BSD
구조물들
디렉토리 내용테이블
한계
최대 볼륨 크기273 바이트 (8 ZiB)
최대 파일 크기273 바이트 (8 ZiB)
최대 파일 이름 길이255 바이트
특징들
기록된 날짜UFS1 및 UFS2: 마지막 액세스 시간(시간), 마지막 수정 시간(m시간), 마지막 inode 변경 시간(c시간), UFS2: inode 생성 시간(생일 시간)[1]
날짜 범위UFS1: 1901년 12월 14일~2038년 1월 18일, UFS2: 에폭으로부터의[1] 64비트 부호 정수 오프셋
날짜 해결UFS1 및 UFS2: 나노초[1]
다른.
지원되는 운영 체제A/UX, DragonFly BSD, FreeBSD, FreeNAS, NAS4Free, HP-UX, NetBSD, NextSTEP, Linux, OpenBSD, Illumos, Solaris, SunOS, Tru64 UNIX, UNIX System V 등

Unix 파일 시스템(UFS)은 많은 Unix 및 Unix 유사 운영 체제에서 지원되는 파일 시스템입니다.버전 7 Unix에서 사용된 원래 파일 시스템의 먼 후손입니다.

이후 Berkeley Fast File System(BSD Fast File System-FFS라고도 함)은 UFS와 [2]동일하지 않은 Unix에서 사용되었습니다.

설계.

UFS 볼륨은 다음 부분으로 구성됩니다.

  • 부트 블록용으로 예약된 파티션의 선두에 있는 몇 개의 블록(파일 시스템과 별도로 초기화해야 함
  • UFS 파일 시스템으로 식별되는 매직 번호와 이 파일 시스템의 지오메트리, 통계 및 동작 조정 매개 변수를 설명하는 기타 중요 숫자를 포함하는 슈퍼 블록
  • 실린더 그룹의 집합입니다.각 실린더 그룹에는 다음과 같은 구성 요소가 있습니다.
    • 슈퍼 블록의 백업 복사본
    • 이 실린더 그룹에 대한 통계, 자유 목록 등이 포함된 실린더 그룹 헤더로, 슈퍼 블록의 헤더와 유사합니다.
    • 각각 파일 속성을 포함하는 다수의 inode
    • 다수의 데이터 블록

inode는 0부터 순서대로 번호가 매겨집니다.inode 0은 할당되지 않은 디렉토리 엔트리용으로 예약되어 있습니다.inode 1은 과거의 UNIX 버전에서 불량 블록파일의 inode였습니다.루트 디렉토리의 inode는 항상 inode 2이고 lost+found 디렉토리의 inode는 inode 3입니다.

디렉토리 파일에는, 디렉토리내의 파일명 리스트와 각 파일에 관련 붙여진 inode만이 포함됩니다.모든 파일 메타데이터는 inode에 저장됩니다.

역사와 진화

Unix 파일 시스템의 초기 버전은 단순히 FS라고 불렸습니다.FS에는 부트 블록, 슈퍼 블록, inode의 집합 및 데이터 블록만 포함되었습니다.이는 초기 Unix가 설계한 소형 디스크에서 잘 작동했지만 기술이 발전하고 디스크가 커짐에 따라 헤드가 여러 개의 inode와 그들이 언급한 데이터 블록 사이를 왔다 갔다 하면서 스래싱(thrashing을 일으켰습니다.당시 버클리 대학원생이었던 Marshall Kirk McKusick은 디스크를 더 작은 덩어리로 분할하는 실린더 그룹을 발명하여 BSD 4.2의 FFS(Fast File System)를 최적화했습니다.이 그룹은 각각 고유의 inode와 데이터 블록을 가지고 있습니다.

BSD FFS의 목적은 관련된 데이터 블록과 메타데이터를 같은 실린더 그룹에 현지화하고, 이상적으로는 디렉토리의 모든 콘텐츠(모든 파일의 데이터와 메타데이터 모두)를 동일하거나 가까운 실린더 그룹에 배치함으로써 디렉토리 콘텐츠를 디스크 전체에 분산시킴으로써 발생하는 단편화를 줄이는 것입니다.

슈퍼블록의 일부 성능 파라미터에는 트랙과 섹터의 수, 디스크 회전 속도, 헤드 속도 및 트랙 간 섹터의 정렬이 포함됩니다.완전히 최적화된 시스템에서는 플래터가 회전하기를 기다리는 동안 헤드를 가까운 트랙 간에 이동하여 트랙에서 산란된 섹터를 읽을 수 있습니다.

디스크가 점점 커짐에 따라 섹터 수준의 최적화는 더 이상 사용되지 않게 되었습니다(특히 트랙당 선형 섹터 번호 및 가변 섹터를 사용하는 디스크).디스크가 크고 파일이 클수록 단편화된 읽기가 더 문제가 되었습니다.이에 대처하기 위해 BSD는 4.0 BSD에서 파일 시스템 블록 크기를 1 섹터에서1 K로 늘렸습니다FFS에서는 파일 시스템 블록 크기를 1 K에서8 K로 늘렸습니다이것은 몇 가지 효과가 있습니다.파일의 섹터가 연속될 가능성은 훨씬 커집니다.파일의 블록을 나열하는 오버헤드의 양은 감소하지만 지정된 수의 블록으로 나타낼 수 있는 바이트 수는 증가합니다.

최대 블록 수는 고정 비트 폭 블록 수에 의해 제한되므로 디스크 크기를 늘릴 수도 있습니다.그러나 블록 크기가 크면 각 파일이 최소 1개의 블록을 차지해야 하므로 작은 파일이 많은 디스크는 공간을 낭비하게 됩니다.이 때문에 BSD는 블록 서브할당, 테일 머지 또는 테일 패킹이라고도 하는 블록 레벨의 플래그멘테이션을 추가했습니다.이것에 의해, 복수의 파일의 데이터의 마지막 부분 블록은, 복수의 대부분이 비어 있는 [3]블록이 아니고, 1개의 「fragment」블록에 격납됩니다.

실장

SunOS/Solaris, System V Release 4, HP-UX, Tru64 UNIX 등의 일부 Unix 시스템 벤더와 일루미노와 같은 Unix 파생 오픈 시스템의 벤더는 UFS를 채택하고 있습니다.대부분의 벤더는 UFS를 자신의 용도에 맞게 조정하여 다른 버전의 Unix에서는 인식할 수 없는 독자적인 확장을 추가하고 있습니다.많은[which?] 기업이 원래의 블록 크기 및 데이터 필드 폭을 원래의 UFS로 계속 사용하고 있기 때문에 플랫폼 [which?][citation needed][according to whom?]간에 어느 정도 읽기 호환성이 유지됩니다.실장 전체의 호환성은 기껏해야 [according to whom?]미미한 수준입니다.

Solaris 7에서 Sun Microsystems는 UFS 로깅을 포함했습니다.UFS에는 파일 시스템 저널링이 포함되어 있습니다.UFS는 현재 Solaris 및 Illumos 버전에서 사용할 [4]수 있습니다.Solaris UFS에는 대용량 파일, 대용량 디스크 및 기타 기능도 확장되어 있습니다.

FreeBSD, NetBSD, OpenBSD, DragonFlyBSD 등의 4.4BSD 및 BSD Unix 시스템에서는 UFS1 및 UFS2의 구현은 디렉토리 구조와 메타데이터(권한, 소유권 등)를 지원하는 상위 계층으로 분할됩니다.inodes로서.이는 기존 FFS 및 LFS 로그 구조 파일 시스템을 공통 기능에 대한 공유 코드를 사용하여 지원하기 위해 수행되었습니다.위쪽 레이어는 "UFS"라고 불리며 아래쪽 레이어는 "FFS" 및 "LFS"라고 불립니다.이러한 시스템 중 일부에서는 FFS 하위 레이어와 UFS 상위 레이어의 조합에 "FFS"라는 용어가 사용되며 LFS 하위 레이어와 UFS 상위 레이어의 조합에 "LFS"라는 용어가 사용됩니다.

Kirk McKusick은 쓰기 직전에 파일 시스템의 블록을 정렬하는 기술인 블록 재할당을 구현하여 파일 시스템의 플래그멘테이션을 줄이고 파일 시스템의 에이징을 제어했습니다.또한 기존 동기 모드와 달리 성능을 제한하지 않고 파일 시스템의 일관성을 유지하는 메커니즘인 소프트 업데이트도 구현했습니다.이로 인해 크래시 또는 전원 장애 발생 후 파일 시스템 점검의 필요성이 감소하는 부작용이 있습니다.장애 발생 후 남은 문제를 해결하기 위해 백그라운드 fsck 유틸리티가 도입되었습니다.

UFS2에서는 Kirk McKusick과 Poul-Henning Camp가 FreeB를 확장했습니다.SD FFS 및 UFS 레이어에서는 64비트 블록 포인터(8제비바이트까지 볼륨 확장 가능), 가변 크기 블록(익텐트와 유사), 확장 플래그 필드, 추가 '생일' 스탬프, 확장 속성 지원 및 POSIX1.e ACL을 추가할 수 있습니다.UFS2는 FreeBSD 5.0 이후 기본 UFS 버전이 되었습니다.FreeBSD는 또한 소프트 업데이트와 UFS1과 UFS2의 파일 시스템 스냅샷을 만드는 기능도 도입했습니다.이것들은 그 후 NetBSD에 이식되었지만, 최종적으로 소프트 업데이트(NetB에서는 소프트 의존관계라고 불립니다)SD)는 NetBSD 5.0의 FFS에 추가된 WAPBL(로깅이라고도 함)이라는 덜 복잡한 파일 시스템 저널링 메커니즘을 위해 NetBSD 6.0에서 삭제되었습니다.OpenBSD는 버전 2.9[5] 이후 소프트 업데이트를 지원하여 버전 4.2 [6]이후 UFS2(FFS2)를 지원하고 있습니다(ACL 없음).OpenBSD는 UFS2를 기본 UFS 버전으로 설정했으며 [7]6.7 릴리즈에 포함될 예정입니다.FreeBSD 7.0 이후 UFS는 gjournal GUM 공급자를 사용한 파일 시스템 저널링도 지원합니다.FreeBSD 9.0 에서는, 소프트 업데이트(SU+J)에 가세해 경량 저널링의 서포트가 추가되어 백그라운드 fsck나 NFSv4 ACL 의 필요성이 큰폭으로 삭감됩니다.

FreeBSD, NetBSD, OpenBSD, DragonFly BSD도 Ian Dowse가 개발한 Dirhash 시스템을 포함하고 있습니다.이 시스템은 디렉토리 검색 속도를 높이기 위해 메모리 내 해시 테이블을 유지합니다.Dirhash는 UFS의 큰 디렉토리와 관련된 많은 성능 문제를 완화합니다.

Linux에는 다른 Unix와의 읽기 레벨에서의 바이너리 호환성을 위한 UFS 구현이 포함되어 있지만 UFS에 대한 벤더의 확장에 대한 표준 구현이 없기 때문에 Linux에서는 UFS에 대한 쓰기가 완전히 지원되지 않습니다.네이티브 Linux ext2 파일 시스템은 UFS1에서 영감을 받았지만 fragment를 지원하지 않으며 소프트 [citation needed]업데이트를 구현할 계획은 없습니다.(약 4.4의 경우)BSD에서 파생된 시스템인 UFS 레이어는 FFS 및 LFS를 사용할 수 있는 것과 마찬가지로 ext2 레이어를 컨테이너 레이어로 사용할 수 있습니다.)

BSD에서 파생된 NeXTStep도 UFS 버전을 사용했습니다.애플Mac OS X에서는 그들의 독점 파일 시스템인 HFS+의 대안으로 사용할 수 있었다.그러나 Mac OS X Leopard에서는 더 이상 Mac OS X를 UFS 형식 볼륨에 설치할 수 없었습니다.또한 UFS 형식 볼륨에 설치된 이전 버전의 Mac OS X는 Leopard로 업그레이드할 수 없습니다. 업그레이드하려면 시작 [8]볼륨을 다시 포맷해야 합니다.Mac OS X에서는 UFS로 포맷된 디스크에 대해 4GB 파일 제한이 있었습니다. Mac OS X Lion에서는 UFS 지원이 완전히 [9]중단되었습니다.

「 」를 참조해 주세요.

레퍼런스

인용문

  1. ^ a b c "[base] Contents of /Head/Sys/Ufs/Ufs/Dinode.h".
  2. ^ "Filesystems HOWTO: Other filesystems".
  3. ^ Allen, Hervey (2005-06-20). "UFS2 and Soft Updates make for a powerful combination" (PDF). Introduction to FreeBSD, PacNOG I Workshop, Additional Topics. Network Startup Resource Center. p. 23. Retrieved 2013-04-08.
  4. ^ http://docs.oracle.com/cd/E19253-01/817-5093/fsoverview-43/index.html
  5. ^ "OpenBSD 2.9 Release". OpenBSD. 2001-06-01. Retrieved 2013-04-08.
  6. ^ "OpenBSD 4.2 Release". OpenBSD. 2007-11-01. Retrieved 2013-04-08.
  7. ^ "Make FFS2 the default filesystem". OpenBSD. 2020-04-05. Retrieved 2020-04-07.
  8. ^ "Archived — Mac OS X 10.5 Leopard: Installing on a UFS-formatted volume". Apple, Inc. 2012-06-12. Retrieved 2013-04-08.
  9. ^ "Lion won't mount any disk images with the built-in utility or Disk Utility". Apple Support Communities. Apple, Inc. 2011-08-05. Retrieved 2013-12-24.

참고 문헌


외부 링크