자유롭게 게시물을 올릴수있는 게시판입니다.
  • 유년추억
  • 학교생활
  • 입시준비
  • 대학생활
  • 군생활
  • 알바생활
  • 취업준비
  • 직장생활
  • 원룸생활
  • 연애중
  • 결혼준비
  • 집안살림
  • 자녀교육
  • 창업준비
  • 이민유학
  • 노후생활
  • 전체보기


파일 시스템에 대하여...

 
◇ 파일 시스템(File System) ◇

HDD 가 자료를 저장하는 최소단위는 바로 512Byte 크기의 섹터입니다. 반면 OS 가 파일을 저장하는 최소단위는 바로 파일(File) 입니다. 섹터가 HDD 표면위에 그려진 동심원을 잘라놓은 조각을 의미하듯이, 파일은 어떤 자료를 다른 자료들과 구분 지어놓은 것이죠. 섹터의 경우에는 모든 섹터가 동일한 크기를 갖지만, 파일은 서로 크기가 다르기 마련입니다. OS 는 (실린더,헤드,섹터)의 좌표값 형태로 표현된 자료를 일련번호로 바꾸어 표시하죠. 이를 전문용어로 매핑(Mapping)이라고 합니다. OS가 어떤 자료를 파일형태로 기록할 때에는 저장된 위치를 찾기 쉽도록 파일이름과 자료가 기록된 위치를 나타내는 일련번호를 따로 기록해둡니다. 도서관에서 소장 도서의 목록을 작성해 두듯이, OS도 저장된 파일들의 이름과 일련번호의 목록을 만드는 것입니다. 이렇게 목록을 만들어 관리하는 방법을 파일시스템이라 부릅니다.IBM PC에서 가장 보편적인 파일시스템은 MS-DOS와 윈도우95 등에서 사용하는 FAT(File Alloction Table:파일할당 테이블)이며,윈도우NT와 OS/2등의 OS에서는 각각 NTFS(NT File System),HPFS(High Performance File System)라는 파일시스템을 사용합니다. 이러한 파일 시스템은 보통 소프트웨어 포맷시에 함께 만들어집니다.

▶ 섹터(Sector)

HDD 가 파일을 저장하는 최소 단위는 바로 섹터(Sector)입니다. 섹터란 HDD 내장 금속 디스크 표면위에 그려진 동심원을 자잘하게 쪼개 놓은 것으로, 자료를 저장하는 최소 단위가 되는데 그 크기는 512 Byte입니다. 따라서 xxMB 의 용량이라고 하면, 512 Byte 크기의 섹터 수천개로 이루어진다고 볼 수 있죠. 즉, 1MB(=1024KB)의 용량이라면, 다음과 같이 섹터는 총 2048개가 됩니다.

(1024 Byte x 1024) / 512 Byte = 2048

만일 768 Byte 크기의 파일이 있다고 가정하면, HDD는 두 개의 섹터를 사용하여 768 Byte의 파일을 저장합니다. 따라서 512 +512 =1024 Byte 이므로, 1024-768=256 Byte의 공간이 낭비되게 됩니다. 이처럼 HDD내에 낭비되는 공간을 전문용어로 슬랙(Slack) 이라고 부릅니다. 이러한 낭비공간은 HDD를 사용하는 한 어떤 경우라도 생기는 일종의 필요악(必要惡)입니다.

▶ FAT(File Allocation Table)

IBM PC의 기본을 이루는 파일시스템은 바로 MS-DOS와 윈도우95 등에서 사용하는 FAT(File Allocation Table:파일할당테이블)입니다. FAT는 소프트웨어 포맷된 HDD나 플로피 디스켓의 섹터 몇 개를 최소단위로 묶어서, 각각의 묶음을 기본단위로 파일을 저장하는 파일시스템입니다. 예를 들어 1MB 용량의 디스켓이 있다고 가정해봅시다. 1섹터는 512Byte이므로, 1MB = 1024KB=1048576, 그리고 1048576 ÷ 512 = 2048. 즉, 1MB는 총 2048개의 섹터로 구성됩니다. 파일 시스템은 본래 이 2048개의 섹터에 차례대로 번호를 붙이는 것을 의미합니다. FAT 는 이러한 2048개의 섹터를 다시 몇 개의 묶음으로 나누고, 그 나눈 묶음에 차례대로 번호를 붙이는 것입니다. 전문용어로 이러한 각각의 묶음을 클러스터(Cluster)라고 합니다. 이를테면 2개의 섹터를 한 묶음으로 다시 분류할 경우, 1MB 는 1024개의 묶음이 될 것입니다. 만일 4개의 섹터를 한 묶음으로 분류할 경우에는 512개의 묶음으로 구분됩니다. FAT는 이렇게 나누어 놓은 묶음을 최소단위로 해서 자료를 저장하며, 자료가 저장된 위치도 그 묶음의 일련번호로 나타냅니다. FAT는 이처럼 몇 개의 섹터를 묶은 클러스터를 기준으로 파일을 저장하고, 자료검색의 기준으로 삼는데 잘 생각해보면 이것이 매우 번거로운 방법임을 알 수 있습니다. MS-DOS 나 윈도우95 등은 이러한 클러스터 번호와 파일이름을 목록으로 만들어서 HDD 제일 앞부분에 보관하게 되는데, 이 목록을 통칭 FAT 라고 부르는 거죠. 따라서 HDD는 파일을 읽어오려면, 언제나 HDD 앞부분의 FAT를 뒤져 원하는 자료의 위치를 찾아낸 뒤, 원하는 클러스터 번호로 다시 이동해서 파일을 읽어오는 과정을 거쳐야하므로, HDD 의 자료검색속도가 늦어집니다.

FAT 에서는 lost cluster error 또는 cross linked error 라는 것이 빈번히 발생하는데, 클러스터와 섹터부분의 연결이 끊어지거나, 뒤섞일 경우에 발생합니다. 그밖에 한 개의 파티션에서 사용 가능한 HDD의 용량이 32MB로 제한되는 등, FAT는 한마디로 장점이라고는 찾아볼 수 없는 파일 시스템이라고 할 수 있죠. 그런데 왜 이처럼 형편없는 파일 시스템인 FAT가 지금까지 사용되었을까요?

그건 오직 한가지, IBM PC의 표준 OS였던 MS-DOS에서 사용하는 파일 시스템이라는 이유 때문입니다. 만일 OS를 바꿀 경우, MS-DOS 기반 하에서 작동되는 수많은 응용 프로그램을 포기해야하기 때문입니다.

▶ 16비트 FAT와 32MB 한계

마이크로소프트의 OS인 MS-DOS 3.30 이하 버전을 사용할 경우, 한 대의 HDD는 최대 32MB까지의 용량만 사용할 수 있습니다. 이유는 간단하죠. MS-DOS가 HDD에 저장된 자료의 위치를 표현할 수 있는 최대 숫자가 제한되기 때문입니다. 보통 HDD는 실린더,헤드,섹터에 의해서 자료가 저장된 위치를 표시하지만 이러한 위치표시를 OS는 이해하지 못합니다. 대개의 경우 OS는 실린더,헤드,섹터에 의해서 표시된 자료들을 자신만이 이해할 수 있는 형태로 변형해서 표시하게 됩니다.

MS-DOS는 16Bit 마이크로 프로세서에 맞추어 설계된 OS입니다. 따라서 모든 경우에 있어서 표현 가능한 최대 값은 16Bit이므로, 2의 16승 = 65536,즉 65536개가 한계 값이 됩니다. 결국 표시 가능한 최대 섹터의 값도 65536개로 제한 된다는 거죠. 한 개의 섹터는 512Byte이므로, 총 용량은 32MB 가 되는 것입니다.(65536 x 512Byte = 33554432 Byte = 32MB)

즉, 16Bit OS인 MS-DOS를 사용하는 한은 원칙적으로 32MB까지만 HDD에 저장된 자료위치를 나타낼 수 있는 겁니다. 다시 말하면, 실제 HDD 의 용량이 256MB라도 OS 의 한계로 인해 32MB의 용량만을 사용하도록 제약을 받는다는 얘기죠. 그 결과 MS-DOS 3.30 이하 버전에서는 대용량의 HDD를 32MB 단위로 파티션을 나누어 사용해야만 했습니다. 물론 한 대의 HDD를 여러개로 쪼개어 사용하는 것은 매우 번거롭고 귀찮지만, 아예 사용하지 못하는 것보다 낫기 때문이죠. IBM PC를 다루다보면 16Bit OS의 한계라는 말이 빈번히 나오는데, 16Bit의 최대값인 65536은 하드웨어, 소프트웨어 모든 측면에 있어서 장시간 동안 개발자와 사용자의 발목을 잡는 약점으로 작용해왔습니다. 이러한 16Bit OS의 한계는 윈도우95 OSR2 가 등장하기까지 지속되었습니다.

▶ 16비트 FAT의 확장

16Bit 마이크로 프로세서의 경우, 마이크로 프로세서 단독으로는 절대로 16Bit 이상, 즉 65536개 이상의 숫자를 다룰 수 없습니다. 따라서 16Bit 마이크로 프로세서에서는 소프트웨어적인 방법을 사용해서 그 이상의 숫자를 표현하게 됩니다.

예를 들면 16Bit를 두 개 묶어서 32Bit로 숫자를 표현하는 것이죠. 이처럼 소프트웨어적으로 32Bit를 처리하는 것과 386 이상의 32Bit 마이크로 프로세서가 처리하는 것을 비교하면, 당연히 32Bit 마이크로 프로세서 쪽이 월등히 빠릅니다. 따라서 소프트웨어로 32Bit를 표현하는 것은 일종의 고육지책(苦肉之策)이죠. MS-DOS 3.30 이하에서 지원하는 32MB 용량은 너무 작기 때문에, 보다 많은 용량의 HDD를 지원할 필요성이 강하게 대두되었습니다. 문제는 MS-DOS가 16Bit OS 이므로 근본적으로 이러한 문제를 해결할 방법이 없다는 겁니다.따라서 MS-DOS 4.0 이상 버전에서는 소프트웨어적인 방법을 사용하여, 보다 많은 용량의 HDD를 지원하는 편법을 사용하게 되었죠. MS-DOS 4.0 이상 버전을 OS로 사용하더라도 16Bit, 즉 65536이란 숫자의 한계는 여전합니다.그 결과 MS-DOS 4.0은 1섹터 = 512 Byte라는 용량을 포기했습니다. MS-DOS의 파일시스템인 FAT는 1섹터 = 1 클러스터라는 개념을 사용하는데, MS-DOS 4.0 이상에서부터는 2섹터 = 1클러스터, 4섹터 = 1클러스터.... 와 같은 식으로 여러 개의 섹터를 묶어서 한 개의 클러스터에 대응시키는 방법으로 용량을 확장했습니다. 이처럼 섹터 여러개를 묶을 경우에는 65536개의 제한된 숫자로도 표시할 수 있는 용량이 늘어나게 되죠. 즉, 1 클러스터에 대응하는 섹터의 숫자를 다음과 같이 늘리면, 용량이 다음과 같이 늘어납니다.



512 Byte
☞
512 Byte x 65536
=
32MB

1024 Byte
☞
1024 Byte x 65536
=
64MB

2048 Byte
☞
2048 Byte x 65536
=
128MB

4096 Byte
☞
4096 Byte x 65536
=
256MB

8192 Byte
☞
8192 Byte x 65536
=
512MB

16384 Byte
☞
16384 Byte x 65536
=
1024MB

32768 Byte
☞
32768 Byte x 65536
=
2048MB

65536 Byte
☞
표현할 수 없음(1cluster ≠ 65536Byte)


위 표에서 보는 바와 마찬가지로 MS-DOS 4.0 이상에서는 최대 2048MB(=2GB) 의 용량까지만 표시할 수 있게 되는 것이죠. 따라서 2GB는 MS-DOS와 윈도우 기반하의 어떤 파일과 파티션도 최대 2GB의 크기를 넘을 수 없습니다.

▶ 16비트 FAT의 한계

MS-DOS 4.0 이상에서 '1클러스터 = 2 섹터 이상'을 대응시켜 32MB 이상의 용량을 나타내는 방법은 일종의 편법이므로 몇가지 단점을 갖고 있습니다. 제일 심각한 문제는 바로 HDD의 공간낭비(=slack) 가 많이 발생된다는 겁니다. 앞서 설명한 것처럼 768 Byte크기의 파일을 2048MB 의 HDD에 저장할 경우를 생각해봅시다.

32MB HDD ☞ 1 sector 512 Byte 이므로, 저장하려면 2 sector 필요

∴(512 + 512) - 768 = 256 Byte 낭비

2048 HDD ☞ 1 sector 32,768 Byte 이므로, 저장하려면 1 sector 필요

∴ 32,768 - 768 = 32,000 Byte 낭비

즉, 몇천 Byte 크기의 자잘한 파일들을 저장할 경우에는 실제 저장공간보다 슬랙으로 낭비되는 공간이 더 많게 되겠죠. 만일 768 Byte 크기의 파일 10000 개를 2048 MB 용량의 HDD에 저장한다고 가정해봅시다.

실제 파일용량 : 768 Byte x 10,000 = 7680,000 Byte ≒ 7.32 MB

낭비 HDD용량 : (32,768 Byte - 768 Byte) x 10,000 = 320,000,000 ≒ 300 MB

위에서 보는 것과 같이 약 7MB를 저장하기 위해서 300MB의 HDD 저장공간을 낭비해야만 하는 겁니다. 비록 HDD의 공간낭비가 필요악이라고 해도 이래서는 주객이 완전히 전도된 꼴이죠. 만일 1 클러스터 = 1 섹터 로 사용할 수 있다고 가정해봅시다.

실제 파일용량 : 768 Byte x 10,000 = 7680,000 Byte ≒ 7.32 MB

낭비 HDD용량 : {(512 + 512)Byte - 768 Byte} x 10000 = 2560000 Byte ≒ 2.4 MB

HDD 낭비공간은 287MB 이상 줄어들 게 됩니다. 물론 1 cluster = 1 sector를 사용하는 것이 HDD의 작동속도 측면에서 반드시 좋은가에 대해서는 이견의 여지가 많이 있습니다. 예를 들어 2048MB HDD를 기준으로 삼을 경우, 섹터수에 따라 클러스터 개수는 다음과 같이 변합니다.

1클러스터 = 1 섹터 ☞ 클러스터 4194303개

1클러스터 = 64 섹터 ☞ 클러스터 65536 개

MS-DOS나 윈도우 95는 클러스터 번호로 자료를 찾기 때문에, 클러스터의 숫자가 많으면 빠른 속도로 자료를 찾기가 힘들어집니다. 하지만, 이러한 자료 검색속도 상의 문제를 감안하더라도, 16Bit FAT를 사용하면 HDD의 공간낭비가 지나치게 많다는 사실만은 틀림없는거죠.

※ 참고

FAT 란 MS-DOS가 원하는 자료를 쉽게 찾기 위해 만들어 놓은 일종의 색인이다. 1 클러스터가 1 섹터일 경우, 클러스터가 64 섹터일 때보다 검색해야할 색인의 숫자가 64배로 늘어난다. 따라서 HDD가 동일한 속도로 작동하더라도 실제 검색속도는 더 늦어지게 되는 것이다.


▶ 32비트 FAT

MS-DOS 4.0 이상에서 지원하는 2GB는 충분히 큰 용량이지만, 최근처럼 초 대용량 HDD가 보급된 시점에서는 역시 부족한 용량이죠. 16Bit MS-DOS를 사용한다면 결코 2GB 이상의 용량을 나타낼 수 없지만, 32Bit OS 전용 파일시스템을 사용한다면 2GB 이상의 대용량 파티션과 파일을 사용할 수 있습니다. 윈도우95 OSR2 에서부터 지원되기 시작한 마이크로 소프트의 새로운 파일 시스템이 바로 FAT32입니다. FAT32 는 기존 MS-DOS에서 사용하던 FAT16을 확장한 규격으로, 2GB 이상의 용량을 표현할 수 있습니다. 문제는 FAT32는 32Bit 숫자를 사용하여 용량을 표시하므로, 기존 FAT16과는 전혀 상위 호환성이 없다는 것이죠. 즉, MS-DOS나 기존 윈도우95는 FAT32로 포맷한 HDD를 전혀 읽을 수 없습니다.(FAT32 는 기존 FAT16을 읽을 수 있음)

윈도우 95 OSR2 나 윈도우98 등의 32Bit OS는 32 Bit 숫자, 즉 4294967296(=4096MB) 까지의 숫자를 표현할 수 있습니다. 따라서 1 클러스터에 512 Byte의 용량을 대응시키더라도, 512 Byte x 4096 MB = 2097152 MB = 2048 GB, 최대 2048 GB의 대용량을 나타낼 수 있습니다. 여기에 MS-DOS 4.0 이상에서부터 도입된 '1 클러스터 = 2 섹터이상' 의 대응방법을 사용하면, 표현 가능한 용량은 거의 무한 대로 늘어납니다.



512 Byte
☞
512 Byte x 4096 MB
=
2097152 MB
=
2048 GB

1024 Byte
☞
1024 Byte x 4096 MB
=
4194304 MB
=
4096 GB

2048 Byte
☞
2048 Byte x 4096 MB
=
8388608 MB
=
8192 GB

4096 Byte
☞
4096 Byte x 4096 MB
=
16777216 MB
=
16384 GB

...

...

...

...


문제는 1 클러스터 = 1 섹터로 다룰 경우 HDD의 공간낭비는 줄어들지만 HDD의 자료검색속도가 늦어진다는 것이죠. FAT는 HDD 앞부분에 자료 검색용 색인을 만들어두는 방식이므로, 항상 HDD 앞부분의 색인에서 필요한 자료의 위치를 찾습니다. 클러스터이 숫자가 늘어날수록 검색해야할 색인의 분량도 늘어나고, 자료검색 속도도 느려집니다. 따라서 FAT32를 사용하는 윈도우 95 OSR2 나 윈도우 98 등에서는 1클러스터 = 8섹터, 즉 4096 Byte를 기본단위로 사용할 것을 권장하고 있습니다. 4096 Byte는 HDD 공간 낭비문제와 자료검색 속도라는 두 가지 요소를 적절히 조화시킨 단위입니다.(일반적인 파일크기는 4096Byte 이상임).

FAT32 는 기존 16Bit OS가 갖는 HDD 공간제약의 문제점은 근본적으로 해결했습니다. 하지만, FAT32의 경우에도 여전히 클러스터를 사용하는 악습에서 벗어나지 못하고 있습니다. 클러스터 방식 파일시스템은 원래 플로피 디스켓을 위해서 만들어진 것이므로, 대용량 HDD에 적용하기는 적합치 못합니다. 따라서 FAT32는 대용량 HDD를 사용하기 위해서 만들어진 과도기적 파일 시스템이라고 볼 수 있습니다.
.........................................................................................................


written by (mushu)
2002-07-07 14:10:37
506 번 읽음
☞ 로그인 후 의견을 남기실 수 있습니다
 캐시선물





365ch.com 128bit Valid HTML 4.01 Transitional and Valid CSS!
태그