[팁] 파일 시스템
-
- 첨부파일 : file_system.pdf (310.8K) - 다운로드
본문
1. 파일 시스템
1.1 파일 시스템이란?
파일 시스템이란 데이터의 최소 단위인 파일이 하드디스크, CD-ROM 등의 저장매체에 저장되는 방식을 말한다. 운영체제는 시스템의 디스크 파티션상에 파일들을 연속적이고 일정한 규칙을 가지고 저장하는데 파일 시스템은 이러한 규칙들의 방식을 제시하는 역할을 한다. 또한 파일 시스템은 시스템의 디스크나 파티션 그리고 파일 시스템의 형식을 말할 경우에도 쓰일 수 있다.
대부분의 프로그램들은 각각 파일 시스템을 기반으로 할 때 정상적으로 동작을 하게 된다. 그러므로 디스크상에 파일 시스템이 없다면 이들도 동작하지 못할 것이다. 그러므로 엄밀히 말하자면 파티션과 파일 시스템은 다른 것이다. 파일 시스템은 파티션을 구성해주는 역할을 한다. 파일 시스템을 포함하지 못한 파티션은 정상적으로 역할을 하기 위해서 파일 시스템으로 사용될 수 있도록 초기화되고 파일 정보를 기록하기 위한 형식을 만드는 과정(흔히들 "Format"이라고 한다.)을 거쳐야 한다. 이러한 과정을 거친 파티션은 비로소 파일 시스템으로 사용될 수 있다.
1.2 파일 시스템의 종류
파일 시스템의 종류에는 수십가지가 있으며, 그 중에는 개인이 취미로 만든 것도 있다. 또한 하나의 파일 시스템이라도 버전에 따라서 기능과 성능이 다르다는 점도 유의하여야 한다.
이 중 Mac OS X에서 지원하는 파일 시스템으로는 Mac OS Extended Format(HFS+), Mac OS Standard Format(HFS), UFS, UDF for DVD 그리고 CD-ROM을 위한 ISO 9660 등이 있다.
HFS+ (Mac OS Extended Format)
이 포맷은 HFS+, 즉 Hierarchical File System Plus라고도 불린다. 이는 Mac OS X 상에서 디폴트 루트 및 부팅 볼륨 포맷이 된다. 이 HFS의 확장 버전은 단일 파일의 최소 크기를 줄임으로써 대규모 하드 디스크의 저장 용량을 최적화한다. 또한 대부분의 Mac OS 8 및 Mac OS 9 시스템 상의 표준 볼륨 포맷이기도 하다.
HFS (Mac OS Standard Format)
이 포맷은 HFS, 즉 Hierarchical File System이라고 불린다. 이는 Mac OS 8.1 이전의 Mac OS 시스템의 볼륨 포맷이다. HFS는 자원 및 데이터를 파일의 개별 "포크(forks)"에 저장하고 유형 및 크리에이터 코드를 포함한 다양한 파일 속성을 활용할 수 있도록 한다.
UFS (Unix File System)
4.4 BSD FFS(Fast File System)를 토대로 하는 "플랫"(즉, 싱글 포크) 디스크 볼륨 포맷이다. 4.4 BSD FFS는 대부분의 UNIX 운영 시스템의 표준 볼륨 포맷과 유사하다. FFS는 많은 서버 애플리케이션에 중요한 POSIX 파일 시스템 semantics를 지원한다.
UDF for DVD
이것은 DVD를 위해 사용되는 표준 포맷이다. 실제로 UDF는 CDROM/CDRW/DVD 등과 같은 ODD(Optical Disk Drive)의 파일 시스템으로, 운영체제에 상관없이 데이타를 쓰고 지울수 있는 특징이 있다. 다시말하면, ODD의 데이터 호환성을 위하여 서로 다른 운영체제 간의 파일 교환이 가능하도록 개발된 파일 시스템이라고 할 수 있다.
ISO 9660
ISO 9660 파일 시스템은 같은 CD-ROM을 플랫폼에 상관없이 읽을 수 있게 해주는 CD-ROM의 표준 파일 시스템이다. 1988년에 제정된 이 표준은 High Sierra라고 이름 붙여진 산업계의 그룹에 의해 개발되었다. CD-ROM 드라이브를 장착하고 있는 거의 모든 컴퓨터들에서, ISO 9660 파일 시스템에 기반을 둔 파일들을 읽을 수 있다.
1.3 HFS+의 특징
디스크는 본질적으로 논리 블럭(logical block)으로 불리는 것들의 일차원 배열이다. bit 단위로 관리를 하기에는 배보다 배꼽이더 클 것이고, 파일 단위로 한다고 해도 일정한 크기가 없는지라 어려움이 있으니, 일정한 사이즈로 분할하여 사용하는 방법을 택했다고 보면될 것이다. 그러니 논리적 블럭은 디스크에서 RAM 등으로 데이터를 전송함에 있어서의 가장 기초적인 단위가 된다.
처음 하드디스크를 초기화할 때, 맥 OS는 하드디스크를 여러 개의 블럭으로 나누게 된다. 블럭은 일정한 수의 바이트 크기로 나뉘게 되는데,사실 블럭의 개수는 216(65536)개로 정해져 있다. 당연히 하드디스크 용량이 작으면 작을 수록 블럭 사이즈가 작아지게 된다.
그런데 문제는 이 블럭 하나하나는 더 이상 쪼개질 수가 없다는 것이다. 즉 내가 17KB 크기의 문서를 하나 저장한다고 할때 각각의 블럭크기가 16KB라면 2개의 블럭에 저장을 해야 한다는 말이 된다. 또한 1KB 크기의 파일을 저장하든, 10KB 파일을 저장하든 16KB블럭을 1개 쓰기는 마찬가지가 된다. 결국 블럭 단위로 관리를 하다보면 필연적으로 단편화 현상이 발생하게 된다. 즉, 블럭에 파일을 기록하고남는 부분이 생긴다는 것이다. 또한 디스크의 용량이 커지면 커질수록 논리 블럭의 크기 또한 크게 잡아주게 되고, 낭비되는 부분 역시 증가하게된다.
여기서 HFS+ 포맷이 기존의 파일 관리 시스템인 HFS와 어떻게 다른지를 쉽게 알 수 있다. HFS는 블럭 숫자가 정해져 있는데 반해,HFS+(Mac OS Extended Format)는 블럭 사이즈를 하드디스크 용량에 따라 다르게 할당한다. 예를 들어, 512MB에서1GB까지는 2KB짜리 블럭을 만들게 되고 1GB가 넘으면 4KB짜리 블럭을 만들게 된다. 훨씬 더 효율적인 하드디스크 사용이 되는 것이다.물론, 4KB 전후의 작은 파일을 많이 다루는 경우에 해당되는 말이지만, 만약 주로 다루는 파일이 300KB를 넘나드는 그래픽 파일이라면그 효과는 그다지 크지 않을 수도 있다. 아무튼 HFS+를 쓰면 공간 활용 면에서는 보다 더 효율적이다. 반면에 HFS에 비해 안정성 측면에서는떨어지는 단점을 지니고 있다. 그러므로 파티션을 통해 시스템이 담긴 시동 볼륨에는 안정성이 중요하므로 HFS를, 작은 크기 파일을 많이저장하게 될 작업 볼륨은 HFS+로 포맷하여 사용하는 것이 효율적일 것이다.
1.4 저널링이란?
저널링(Journaling) 기술은 기존의 fsck(File System Check)에 걸리는 시간을 단축하기 위해 데이터를 디스크에 쓰기 전에 로그(Log)에 남겨 시스템의 비정상적인 중단에도 로그(Log)를 사용해 fsck(File System Check)보다 빠르고 안정적인 복구 기능을 제공하는 기술이다. 기존의 파일 시스템의 경우에는 시스템이 동작을 멈추기 바로 직전에 파일 시스템에 어떠한 수정을 하고 있었는지 전혀 알 수가 없었다. 때문에 이를 복구하기 위해서는 fsck에 의해서 관리되는 모든 부분을 다시 검사해야 하기 때문에 시간이 오래 걸렸다. 하지만 저널링 기술을 사용한 파일 시스템의 경우에는 파일을 실제로 수정하기 전에 우선 로그(Log)에 그 수정된 내용을 저장한다. 때문에 시스템이 비정상적으로 동작을 멈추더라도 시스템의 파일 시스템을 복구하기 위해서 로그(Log)만을 검사하면 된다. 이를 바탕으로 다시 실제 파일 시스템에 수정 내용을 적용하면 되기 때문에 속도와 안정성이 더욱 뛰어나다. 보통 이러한 동작 수행을 리플레이(Replay)라고 한다. 만약 해당 로그(Log)에 저장된 내용이 불안정할 경우에는 복구 자체를 포기하기 때문에 파일 시스템이 불안정한 상태로 되지 않는다.
저널링 기술은 이미 리눅스 등의 OS에서는 수년전부터 적용되어 왔다. 엔터프라이즈급 운영체제로 급설장을 해오며 클러스터링과 서버에서의 중요한 자리를 차지해 가고 있던 리눅스가 진정한 엔터프라이즈급 운영체제로 성장하기 위해 저널링 파일시스템은 필수적인 요건이었다. 그러한 현상이 지금의 Mac OS X에서도 보여지고 있는 것이다.
사실 Mac OS X이 처음 선보이면서 아쉬운 부분 중 하나가 파일 시스템의 성능이었다. 지금의 컴퓨팅 환경은 속도와 안정성을 가장 먼저 생각한다. 그러나 Mac OS X의 UFS, HFS, HFS+ 파일 시스템 어느 것도 이 두가지를 동시에 만족을 시키지는 못하였다. 결국 Jaguar까지 와서야 저널링에 대한 논의가 되어졌고 지원이 이루어졌다. 이미 개인 사용자의 디스크 용량이 수십GB를 넘어섰고, 데스크탑과 서버와의 구분이 무색할 정도로 환경이 변한 시점에서 Apple의 '저널링' 기술의 도입은 당연한 결과임을 넘어 늦은 감을 지울 수가 없다.
그렇다면 저널링 파일 시스템을 사용하는데 따른 장점에는 무엇이 있을까? 서버측에서 보자면, 수많은 사용자들이 입력하고 수정하는 내용이 예기치 못한 사고로 인하여 시스템이 다운(down)되더라도 다시 복구할 수 있는 확률이 기존 시스템보다 상당히 높아진다. 이것은 서버를 운영하는 운영자나 회사의 시스템 관리부 입장에서는 상당히 중요한 문제라 할 수 있을 것이다. 또한 시스템 재부팅(reboot)시 기존 시스템에서 보여주는 'fsck(file system check)'의 복구 시간은 파일 시스템이 기가 바이트(GB) 및 테라 바이트(TB) 급으로 격상되고 있는 시점에서 부담이 아닐 수 없다. 물론 이것은 개인 사용자들의 컴퓨터 시스템의 저장용량도 점점 더 거대해지고 있는 현 추세에 부합된다.
물론 저널링 파일 시스템에 장점만 있는 것은 아니다. 파일 시스템을 업데이트 할 때마다 Log-ging 작업에 따른 오버헤드와 I/O가 많아지게 되어 시스템 관리자는 파일 시스템 관리의 정책을 세워야 할 필요가 있을 것이다. 이러한 문제점이 발생하기 때문에 무조건 저널링 파일 시스템을 사용하는 것보다는 필요한 부분에 한해서만 사용하는 지혜가 필요할 것이다.
마지막으로 Panther(Mac OS X 10.3)을 기준으로 저널링을 사용하려면, 터미널 또는 디스크 유틸리티를 사용하면 된다. 어차피 결과는 같으므로, 좀 더 편한 디스크 유틸리티를 사용하는 방법을 알아보겠다.
디스크 유틸리티를 통한 저널링 사용 방법:
1) 디스크 유틸리티를 선택한다.(홈 폴더의 응용프로그램/유틸리티 폴더내에 존재)
2) 저널링을 사용하고자 하는 볼륨을 왼쪽의 볼륨 목록에서 선택한다.
<그림 4.1.1 디스크 유틸리티 실행 화면>
참고로 저널링은 Mac OS 확장(또는 HFS+) 파일 시스템을 사용하는 볼륨에만 사용할 수 있다. 필요하다면 지우기 탭을 사용하여 초기화를 한다. Panther에서는 Mac OS 확장 또는 Mac OS 확장(저널링) 형식으로만 초기화를 할 수 있다.
3) 도구 막대에 있는 "저널링 사용" 아이콘을 클릭한다. 또는 파일 > 저널링 사용(Command+J) 메뉴를사용한다.
<그림 4.1.2 저널링 사용 화면. 아래의 포맷 형식이 "Mac OS 확장(저널링)"으로 바뀐다.>
저널링을 사용하면 아래의 포맷 형식의 이름이 "Mac OS 확장(저널링)"으로 바뀌게 된다. 저널링을 다시 해제하고 싶다면, 파일 > 저널링 사용 안함(Command + J) 메뉴를 사용하면 된다.
최신글이 없습니다.
최신글이 없습니다.
댓글목록 0