메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

Speaking UNIX: 신흥 파일 시스템 소개

Martin Streicher, Software Developer, Pixel, Byte, and Comma
author photo - martin streicher
Martin Streicher는 프리랜서 Ruby on Rails 개발자이며 Linux Magazine의 편집장을 역임했다. Purdue University에서 컴퓨터 과학 석사 학위를 받았으며 1986년부터 UNIX 계열 시스템을 프로그래밍하고 있다. 그리고 예술 작품과 장난감 수집을 좋아한다.
(An IBM developerWorks Contributing Author)

요약:  UNIX®에서는 모두 다 파일이 될 수 있지만 모든 파일이 동일한 방식으로 저장되는 것은 아닙니다. 파일 시스템은 파일이 나눠지고 매체에서 구성되는 방법을 지시합니다. 역사적으로 매체는 테이프 또는 디스크를 의미했습니다. 하지만 점점 더 파일 시스템은 이제 가상으로 소스에 관계 없이 — 원격 서버, 아카이브 파일, 심지어 기타 파일 시스템— 가상 매체로 변환합니다. 여기에서 일부 새로운 파일 시스템을 살펴봅니다.

이 연재 자세히 보기

원문 게재일:  2011 년 6 월 14 일
난이도: 중급 원문:  보기 PDF:  A4 and Letter (55KB | 12 pages)Get Adobe® Reader®
페이지뷰:  1719 회
의견:  


소개

"UNIX®에서는 모두 다 파일이다"라는 격언은 오래 되었지만 정확하다. 개념적으로 모든 UNIX 자원은 열고, 읽으며, 쓰거나, 읽고 쓰기를 동시에 할 수 있는 간단한 파일이다. 독자의 실험 데이터는 파일이며, 있는 그대로 쉘 시작 스크립트, UNIX 커널, 홈 디렉토리, 각 네트워크 소켓 및 /bin/ls 실행 파일 등이다.

자주 사용하는 약어

  • SFTP: Secure File Transfer Protocol
  • SSH: Secure Shell

하지만 모든 파일이 동일하지는 않다. 실험 데이터는 고도로 사용자 정의된 데이터베이스가 될 수 있다. 비록 중요한 한 가지 차이점에도 불구하고 쉘 스크립트는 텍스트 파일이다. 즉, 선행하는 !#(때로는 shebang이라고 함) 행은 어느 애플리케이션이 파일을 해석하는지 지시한다. 커널은 바이너리이고, 예측 가능하고 시스템 도구가 조작할 수 있는 특정 형식 둘 다를 사용하여 있는 그대로 각각 실행 파일이다. 디렉토리는 카탈로그 컨텐츠에 특수화된 인덱스이다.

더 나아가 모든 파일이 동일한 방식으로 저장되지 않는다. 파일의 구조와 크기는 내재된 파일 시스템—실제 디바이스로 파일 데이터를 지속하는 서브시스템—에 의존한다. 동일한 데이터—다시 말해서, 동일한 파일의 사본 두 개—는 서로 다른 파일 시스템에서 다르게 구성된다. 각 파일 시스템은 자체 스토리지 전략을 지시하며, 이는 특정 기준에 부합하도록 설계될 수 있다. 예를 들어, 하나의 파일 시스템은 속도에 최적화되고, 다른 시스템은 공간의 효율적인 사용에 최적화될 수 있고, 하지만 또 다른 시스템은 데이터 손실 또는 손상에 대한 내구성에 최적화될 수 있다. 대개, 배치할 파일 시스템이 올바르거나 잘못된 것은 없다. 즉, 스토리지 필요를 분석하고 용도에 맞는 파일 시스템 또는 파일 시스템의 결합을 선택해야 한다. UNIX(및 수많은 공급업체)가 많은 수의 파일 시스템을 제공하므로, 독자는 유리한 것을 찾을 것으로 확신한다.

표 1은 UNIX(및 많은 경우에 Linux®)에 사용 가능한 파일 시스템을 몇 가지만 나열한다.


표 1. UNIX 파일 시스템
파일 시스템이점
ZFS(Zettabyte file system)공통의 즉시 사용 가능한 스토리지 매체를 사용하여 구축할 수 있는 근본적으로 무한한 파일 시스템(zettabyte는 270 바이트임)인 ZFS는 쓰기에서도 데이터를 압축할 수 있어 매체를 한층 더 최대화한다.
NFS(Network file system)UNIX의 충실한 기능인 NFS는 원격 파일 시스템이 로컬로 표시되도록 만든다. NFS는 데이터를 공유하기에 이상적이다.
JFS(Journaling file system)많은 다른 대안 중에서 JFS는 각 파일에 변경 사항의 로그 또는 저널을 보유한다. 고장 또는 손상이 발생하면 저널은 파일을 복원하기 위해 "재생된다".
Btrfs(B-tree file system)최신 파일 시스템 중 하나이며 Linux의 곧 나올 버전에 대해 기본 파일 시스템이 될 예정인 Btrfs는 수정되지 않는 지속성으로 메타데이터 체크섬 및 데이터를 유지보수한다. Btrfs도 스냅샷을 제공하고 거의 크기에 관계 없이 디바이스를 혼합할 수 있다.

자체적인 파일 시스템

일반적으로 파일 시스템은 이에 맞춘 매체가 필요하여, 하나의 파일에서 다른 파일로 변경하는 것은 대개 백업, 실제 드라이브 형식화 및 지루한 복원과 유효성 검증 프로세스를 수반한다. 분명히 이러한 변경은 근본적이며, 당연히 시스템 관리자의 온전한 관할이다.

하지만, 최근의 많은 UNIX 및 Linux 커널로의 확장을 통해 어느 사용자나 특별한 권한 없이 다양한 파일 시스템을 작성하고 사용할 수 있다. Filesystem in User Space의 약어로 별명이 붙은 FUSE는 상대적으로 적은 노력으로 새 파일 시스템을 작성하기 위한 소프트웨어를 사용할 수 있다. FUSE에서 파생된 파일 시스템은 SFTP를 통해 파일을 마운트하고, 바이러스에 대해 자동으로 파일을 스캔하며, 로컬의 상주 데이터 파일로 읽기 전용 CR-ROM 디스크의 콜렉션을 취급할 수 있다.

일반 운영체제 플랫폼에서 FUSE를 설치하고 이제 어느 사용자나 사용할 수 있는 일부 새로운 파일 시스템을 탐색해보자. 현대의 UNIX 및 Linux 커널은 대개 FUSE에 대한 지원을 포함하므로, 소프트웨어를 빌드하는 것은 유틸리티 코드에 관계 없이 빌드하는 것과 유사하다. 패키지를 다운로드하고 압축 해제하여 시스템의 기능을 발견하기 위해 구성 스크립트를 실행하여 코드를 빌드하고 설치해야 한다. 목록 1은 FUSE를 설치하기 위한 코드를 보여준다.


목록 1. FUSE 설치하기
	
$ wget http://downloads.sourceforge.net/project/\
  fuse/fuse-2.X/2.8.4/fuse-2.8.4.tar.gz
$ tar xzf fuse-2.8.4.tar.gz
$ cd fuse-2.8.4

$ ./configure
$ make
$ sudo make install

FUSE 버전 2.8.4는 기사 게시 시점에 최신 버전이었다. FUSE 프로젝트 홈 페이지에서 최신의 가장 우수한 코드를 다운로드하도록 하자(링크는 참고자료 참조). 컴파일 이후에 FUSE 패키지는 새 FUSE 파일 시스템을 빌드하기 위해 필요한 수많은 라이브러리와 FUSE 파일 시스템을 마운트하고 마운트 해제하기 위해 fusermount라는 이름의 애플리케이션을 설치한다. Fusermount는 몇 가지 특수 옵션이 있지만, 그렇지 않으면 일반적으로 vanilla mount 명령에 제공하는 옵션을 승인한다.


손수 제작(Do-it-yourself) NFS

설치한 기초 코드를 통해 FUSE 파일 시스템 설치를 계속 할 수 있다. 시도하는 첫 번째 FUSE 파일 시스템은 SSHFS라는 SFTP를 기반으로 하는 파일 시스템이다. SSHFS를 통해 서버가 SSH를 지원하는 한,(이는 대부분이 수행함) 로컬 파일 시스템으로 어느 원격 디렉토리나 마운트할 수 있다. 계속하기 전에 시스템에 Glib 2.0 및 Gthread 2.0이 있는지 확인한다. 시스템에 GNOME가 있으면, 이러한 라이브러리가 있을 것이다. 그렇지 않으면, 소스로부터 또는 운영 체제의 기본 패키지 관리자를 통해 이를 설치한다. (Debian Linux 시스템은 Aptitude가 있다. Red Hat Linux 시스템은 rpm, yumYaST를 제공한다.) 목록 2는 SSHFS를 설치하기 위한 코드를 보여준다.


목록 2. SSHFS 설치하기
	
$ wget http://sourceforge.net/projects/\
  fuse/files/sshfs-fuse/2.2/sshfs-fuse-2.2.tar.gz/download
$ tar xzf sshfs-fuse-2.2.tar.gz
$ cd sshfs-fuse-2.2
$ ./configure
$ make
$ sudo make install

Ubuntu 또는 UNIX 또는 Linux의 다른 변형을 실행하는 경우 배포에서 모든 소프트웨어 패키지의 사전 빌드된 바이너리를 제공할 수 있다. 예를 들어, Ubuntu에서 다음 명령으로 지금까지 나열된 모든 FUSE 소프트웨어를 설치할 수 있다.

$ apt-get install libglib2.0-dev fuse-utils libfuse2 sshfs

종속 항목이 최신 상태가 되면 간단한 명령 apt-get install sshfs로 SSHFS를 설치할 수도 있다.

FUSE 라이브러리와 SSHFS가 설치될 때, 로컬 파일 시스템으로 SSH를 통해 액세스할 수 있는 어느 원격 디렉토리나 마운트할 수 있다(목록 3 참조). sshmount를 결합하여, 독자는 원격 시스템의 이름과 로그인 신임 정보, 마운트하려는 원격 디렉토리 및 어느 로컬 디렉토리나 될 수 있는 로컬 마운트 지점을 제공한다.


목록 3. 파일 시스템으로 원격 SSH 액세스 가능 디렉토리 마운트
	
$ ssh me@example.org ls
bin            Documents  lib      Media   Pictures  Sites   tmp
Desktop        Downloads  Library  Movies  projects  Source
Documentation  Dropbox    local    Music   Public    src

$ cd ~
$ mkdir -p mounts/example
$ sshfs me@example.org:/home/me mounts/example
$ cd mounts/example
$ ls
bin            Documents  lib      Media   Pictures  Sites   tmp
Desktop        Downloads  Library  Movies  projects  Source
Documentation  Dropbox    local    Music   Public    src

확인 가능한 대로 원격 디렉토리의 컨텐츠는 이제 로컬 파일처럼 손쉽게 사용 가능하다. 독자가 개발자이고 작업에 여러 시스템을 사용하면 SSHFS는 로컬 명령—cp, make 및 기타를 고려하자—을 원격 파일에서 조작하게 만든다.

FUSE 파일 시스템을 마운트 해제하기 위해 fusermount -u /some/mount/point를 입력할 수 있다. 또는, FUSE 파일 시스템이 정상 파일 시스템과 같이 작동하기 때문에, umount /some/mount/point를 입력할 수 있다.

또 다른 원격 파일 시스템 변형은 S3FS라고 한다. 자체적인 원격 서버와 SFTP를 사용하는 것이 아니라 S3FS는 Amazon S3(Amazon Simple Storage Service) 버킷을 로컬 파일 시스템으로 마운트한다. S3FS는 파일을 "S3에서 기본으로 분명하게" 저장하고 다운로드를 최소화하기 위해 로컬 캐싱을 사용할 수 있다. 최대 파일 크기는 5GB이다. SSHFS와 같이 소스를 다운로드하고 빌드하여 이를 즉시 사용할 수 있다.

참고: S3FS 패키지는 cURL 라이브러리 개발 헤더 및 LibXML2 라이브러리에 의존한다.

목록 4는 S3FS 인스턴스를 마운트하는 코드를 보여준다.


목록 4. S3FS 설치하기
	
$ wget http://s3fs.googlecode.com/files/s3fs-r191-source.tar.gz
$ tar xzf s3fs-r191-source.tar.gz
$ cd s3fs
$ make
$ sudo make install

액세스 키와 비밀 액세스 키를 제공하는 Amazon S3 계정을 이미 보유했다고 가정하면, 다음과 같은 명령으로 소유한 어느 버킷이나 마운트할 수 있다.

$ s3fs bucket_name -ouse_cache=/tmp -o accessKeyId=your_access_key \
  -o secretAccessKey=your_secret_access_key /mnt

S3FS를 통해 Amazon S3에서 바로 전체 Git 저장소를 보관하거나 Amazon의 스토리지 시스템에 백업을 놓기 위해 rsync를 사용할 수 있다.


임의의 아카이브에 피어

FUSE의 또 다른 훌륭한 사용 방식은 archivemount이다. 이는 tarballs(또는 gzip 압축된 tar 아카이브)를 비롯하여 아카이브의 많은 양식을 로컬 파일 시스템으로 마운트하기 위한 유틸리티이다. 시스템에 사용 가능한 libarchive가 있다고 가정하면 목록 5와 같이 archivemount를 빠르게 빌드할 수 있다.


목록 5. archivemount 설치하기
	
$ wget http://www.cybernoia.de/software/archivemount/archivemount-0.6.1.tar.gz
$ tar xzf archivemount-0.6.1.tar.gz
$ cd archivemount-0.6.1
$ ./configure
$ make
$ sudo make install

예제로서 독자는 자체적인 tarball을 파일 시스템으로 마운트하기 위해 archivemount를 사용할 수 있다. 목록 6은 코드를 보여준다.


목록 6. 파일 시스템으로 tarball 마운트하기
	
$ tar tfz archivemount-0.6.1.tar.gz
archivemount-0.6.1/
archivemount-0.6.1/README
...
archivemount-0.6.1/archivemount.c
archivemount-0.6.1/CHANGELOG

$ mkdir -p ~/mnt/tgz
$ archivemount archivemount-0.6.1.tar.gz ~/mnt/tgz
$ cd ~/mnt/tgz/archivemount-0.6.1
$ ls
aclocal.m4         archivemount.c  configure     depcomp      Makefile.in
archivemount.1     CHANGELOG       configure.ac  install-sh   missing
archivemount.1.in  config.h.in     COPYING       Makefile.am  README

SSHFS를 사용하기 전에, archivemount는 tarball로 원활한 로컬 파일 시스템 유사 액세스를 제공한다. 독자가 tarball의 "파일 시스템"으로 어느 파일이나 수정, 삭제 또는 추가하면 모든 변경이 FUSE 파일 시스템을 마운트 해제할 때 원본 tarball로 저장된다. 명령 fusermount -u ~/mnt/tgz는 주어진 마운트 지점으로부터 FUSE 파일 시스템을 마운트 해제한다. 목록 7은 tarball "파일 시스템"의 단면을 보여준다.


목록 7. archivemount를 통해 파일 쓰기
	
$ cd ~/mnt/tgz/archivemount-0.6.1
$ echo 'Remember this for later.' > NOTES
$ ls
aclocal.m4         CHANGELOG     COPYING      Makefile.in
archivemount.1     config.h.in   depcomp      missing
archivemount.1.in  configure     install-sh   NOTES
archivemount.c     configure.ac  Makefile.am  README
$ fusermount -u ~/mnt/tgz

$ tar tfz archivemount-0.6.1.tar.gz
archivemount-0.6.1/
archivemount-0.6.1/README
...
archivemount-0.6.1/CHANGELOG
archivemount-0.6.1/NOTES

목록 7에서 최종 tar 명령은 NOTES가 실제로 tarball에 추가되었다는 점을 확인한다. archivemount로 확장하는 아카이브에 대한 하나의 제한사항: 쓰기 조작이 실패하면 모든 변경이 손실되기 때문에 소프트웨어 작성자는 아카이브로의 쓰기 조작에 대해 경고한다. 하지만, 일반적으로 적은 수의 쓰기 조작은 잘 작동한다. 그럼에도 불구하고 archivemount의 읽기 전용 기능이 강력하다고 생각할 가능성이 있다.

FUSE를 통해 마운트된 것을 검토하려면 일반적인 mount 명령을 간단하게 실행하고 fuse로 표시된 시스템을 찾는다. 이는 목록 8에 표시된다.


목록 8. FUSE 마운트된 파일 시스템
	
$ mount
/dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
...
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
archivemount on /home/strike/mnt/tgz type fuse.archivemount (rw,nosuid,nodev,user=strike)

이 기사의 테스트베드는 Dell® 데스크탑 PC에서 실행 중인 Ubuntu 버전 10이었다. 목록 8에서 mount 과정 내역에서 맨 아래에서 archivemount 파일 시스템과 맨 위에 Linux 시스템이 마운트한 일반적인 실제 디바이스를 확인할 수 있다.


비밀을 위한 파일 시스템

이전 두 가지 예제를 기반으로 FUSE가 원격 또는 패키지된 파일에 원활한 액세스를 제공하기 위해 많은 네트워크된 서비스와 파일 형식을 랩핑할 수 있다는 점을 상상할 수 있다. 실제로 많은 작업 구현 방식이 있다. WikipediaFS는 Wikipedia를 로컬 파일 시스템으로 마운트하며, 여기에서 기사를 로컬로 편집할 수 있다. 다른 패키지는 Blogger, Flickr 및 Google Mail 서비스에 거의 비슷한 기능을 제공한다.

FUSE의 또 다른 사용방식은 미러링 또는 병렬로 파일의 사본을 유지보수하는 것이다. 하나의 추론적 예제는 EncFS(FUSE-centric Encrypted File System)이다. 소스 디렉토리와 대상 디렉토리가 있으면, 소스 디렉토리에 쓰인 모든 파일은 자동으로 암호화되고 대상 디렉토리로 저장된다. librlog인 유연한 메시지 로깅 라이브러리가 EncFS의 전제조건이다. 목록 9와 같이 소스 또는 배포의 저장소에서부터 이를 설치하고 그 후에 EncFS를 계속 빌드한다.


목록 9. EncFS 설치하기
	
$ wget http://encfs.googlecode.com/files/encfs-1.6-1.tgz
$ tar xzf encfs-1.6-1.tgz
$ cd encfs-1.6-1
$ ./configure
$ make
$ sudo make install

패키지가 설치된 후에 진행할 준비가 되었다. 두 개의 새 디렉토리를 작성해야 한다—하나는 원본 파일이고 다른 하나는 암호화된 파일이다. encfs 유틸리티가 두 개를 함께 맵핑한다. 이는 목록 10에 표시된다.


목록 10. 암호화를 위해 디렉토리 탠덤 작성하기
	
$ mkdir ~/data
$ mkdir ~/encrypted_data
$ encfs ~/encrypted_data ~/data
Creating new encrypted volume.
Please choose from one of the following options:
 enter "x" for expert configuration mode,
 enter "p" for preconfigured paranoia mode,
 anything else, or an empty line will select standard mode.
?> p

Paranoia configuration selected.

Configuration finished.  The file system to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 2:2:1
Filename encoding: "nameio/block", version 3:0:1
Key Size: 256 bits
Block Size: 1024 bytes, including 8 byte MAC header
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.
File holes passed through to ciphertext.

-------------------------- WARNING --------------------------
The external initialization-vector chaining option has been
enabled.  This option disables the use of hard links on the
file system. Without hard links, some programs may not work.
The programs 'mutt' and 'procmail' are known to fail.  For
more information, please see the encfs mailing list.
If you would like to choose another configuration setting,
please press CTRL-C now to abort and start over.

Now you will need to enter a password for your file system.
You will need to remember this password, as there is absolutely
no recovery mechanism.  However, the password can be changed
later using encfsctl.

New Encfs Password:
Verify Encfs Password:

일반적으로 "파라노이아(paranoia)" 모드를 선택할 수 있다. 그 다음으로, 파일을 보호하기 위해 비밀번호를 입력하고 이를 다시 입력하여 비밀번호를 확인한다. 목록 11은 해당 코드를 보여준다.


목록 11. EncFS가 자동으로 새 파일을 암호화한다
	
$ cd ~/data
$ vi secrets.txt
[Create file with your secrets.]
$ ls
secrets.txt
$ ls ~/encrypted_data
LKs2bi5sfttNlyExybM6eNck

독자가 작성하는 파일은 각각 암호화된 디렉토리에 반영되고, 심지어 파일의 이름이 암호화된다. 목록 12와 같이 완료되면 암호화되지 않은 디렉토리를 간단하게 마운트 해제한다. 디렉토리의 컨텐츠가 제거되어 안전한 파일만 남게 된다.


목록 12. 암호화된 디렉토리 마운트 해제하기
	
$ fusermount -u ~/data
$ ls ~/data
No such file or directory
$ ls ~/encrypted_data
LKs2bi5sfttNlyExybM6eNck

암호화되지 않은 파일을 보려면 이전에 암호화된 파일 세트로 마운트 지점을 연결하자. 다음과 같이 스스로 인증하라는 프롬프트가 표시될 때 비밀번호를 입력한다.

$ encfs ~/encrypted_data ~/data
EncFS Password:

$ ls ~/data
secrets.txt

한 번 다시 마운트되면 원본 파일이 사용 가능하고 평문으로 확인 가능하다. 파일을 변경하면 파일이 다시 인코딩된다.


FUSE: 이는 장난감이 아니다!

비록 이전 예제가 매우 간단하지만, FUSE의 성능을 과소 평가하지 마라. 일부 고성능 파일 스토리지 솔루션도 사용자 공간에서 실행한다. 예를 들어, ZFS-Fuse는 사용자 공간에서 ZFS의 구현 방식이다. MooseFS는 오류 허용의 네트워크 분산 파일 시스템이다. 이는 몇 가지 실제 서버에 걸쳐 데이터를 퍼뜨리지만 사용자는 혼합물(amalgam)을 하나의 UNIX형 파일 시스템 자원으로 취급한다. 그리고 GlusterFS는 FUSE를 기반으로 하는 고성능 분산 파일 시스템이다.

GlusterFS 배치를 설명하는 것은 이 기사의 범위를 벗어나지만, 간략한 소개에서는 FUSE로 빌드할 수 있는 기능을 시연해야 하므로, 커널 수정 및 패치를 피한다. 구체적으로 말하면, GlusterFS는 다음을 수행할 수 있다.

  • 시스템의 수에 관계 없이 포괄한다.
  • 서로 다른 이기종 스토리지 디바이스 및 실제 파일 시스템을— GlusterFS가 브릭(brick)으로 참조하는 것— 통합된 풀 또는 네임스페이스로 수집한다.
  • 애드 혹 방식으로 파일 시스템 기능— GlusterFS가 변환기를 호출하는 것—을 모아 사용자 정의된 스토리지 솔루션을 빌드한다. 하나의 변환기가 복제를 제공하는 동안, 또 다른 변환기는 TCP/IP를 통한 연결을 구현한다.
  • 미리 읽기(read-ahead), 나중 쓰기(write-behind) 및 다수의 다른 비결로 성능을 신장시킨다.

GlusterFS 버전 3은 소프트웨어의 초기 설정을 엄청나게 간소화하며, 이는 다시 말해서 시스템의 서브네트워크에 걸쳐서 SSH 키를 설정하는 것보다 아주 약간 더 복잡하다. GlusterFS가 커널 업데이트 또는 특수 사용자 정의를 요구하지 않는 것이 더 낫다. 왜냐하면 이는 FUSE로 쓰여져 있기 때문에, 커널의 환경 외부에 조작하고 어느 개발자나 관계 없이 확장될 수 있다.


FUSE를 켜자!

FUSE는 엄청난 기술이다. 이를 통해 Python, Ruby, Lua, C/C++, Java™ 언어 및 기타 등등을 비롯하여 얼마든지 대중적인 프로그래밍 언어에서 새 파일 시스템을 개발할 수 있다. 게다가 새 파일 시스템을 작성하고 배치한다고 해서 모든 실행 중인 시스템의 커널을 변경할 필요는 없다. "Develop your own filesystem with FUSE: No kernel programming required"라는 제목의 또 다른 developerWorks 기사에서 커널로 탠덤에서 FUSE가 어떻게 작업하는지에 대해 자세히 배울 수 있다. 추가 읽기 자료와 여기에서 언급한 프로젝트로의 링크는 참고자료 섹션을 참조하자.

이제 다수의 FUSE 파일 시스템을 사용할 수 있으며 매일 더 많이 나타난다. ZFS-Fuse 및 GlusterFS는 매우 정교한 솔루션의 두 가지 예제이지만 archivemount 및 SSHFS가 더 유용하다. 모든 FUSE 파일 시스템은 특정 요구사항을 다룬다. 특수한 요구가 있는 경우, FUSE와 약간의 코드로 자체적인 파일 시스템 작성을 고려할 수 있다.


참고자료

교육

  • Speaking UNIX: 본 시리즈의 다른 파트를 살펴본다.

  • Zettabyte file system: Sun에서 최초로 작성하고 이제는 Oracle이 유지보수하는 환상적인 ZFS에 대해 자세히 읽어보자.

  • Network file system: NFS와 그 오랜 역사에 대해 자세히 알아보자. NFS의 원본 버전은 1989년으로 거슬러 올라간다.

  • Journaled file system: 많은 파일 시스템은 데이터의 손실을 방지하는 저널링을 제공한다. 원본 JFS는 1990년에 IBM이 작성하였다.

  • B-tree file system: Wikipedia는 Btrfs에 대한 훌륭한 소개글을 제공하고 많은 다른 코드의 소스 및 기술 정보로의 링크를 제시한다.

  • Encrypted file system: EncFS의 모든 옵션을 탐색하려면 프로젝트 페이지를 확인하자. EncFS 백업을 유지보수하기 위해 페이지의 참고에 특히 주의를 기울이자.

  • MooseFS: MooseFS는 오류 허용인 네트워크 분산 파일 시스템이다. 이는 Mac OS X를 비롯하여 FUSE 구현 방식으로 어느 시스템에서나 작업한다.

  • AIX와 UNIX developerWorks 영역: AIX와 UNIX 영역에서는 AIX 시스템 관리와 UNIX 스킬 확장의 모든 측면과 관련된 풍부한 정보를 제공한다.

  • AIX와 UNIX 입문 AIX와 UNIX 입문 페이지에서 자세한 정보를 볼 수 있다.

  • 기술 서점: 다양한 기술 주제와 관련된 서적을 살펴볼 수 있다.

제품 및 기술 얻기

  • libarchive: Google Code의 저장소에서 libarchive에 대한 소스를 다운로드하자. libarchivearchivemount를 빌드하고 사용하는 데 필요하다.

  • archivemount: 프로젝트 페이지에서 archivemount에 대한 소스 코드를 다운로드하자. 해당 소프트웨어는 로컬 파일 시스템으로 아카이브 파일을 마운트한다.

토론

필자소개

author photo - martin streicher developerWorks Contributing author level

Martin Streicher는 프리랜서 Ruby on Rails 개발자이며 Linux Magazine의 편집장을 역임했다. Purdue University에서 컴퓨터 과학 석사 학위를 받았으며 1986년부터 UNIX 계열 시스템을 프로그래밍하고 있다. 그리고 예술 작품과 장난감 수집을 좋아한다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=AIX와 UNIX
ArticleID=679272
ArticleTitle=Speaking UNIX: 신흥 파일 시스템 소개
publish-date=06142011
author1-email=martin.streicher@gmail.com
author1-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.