태그

, ,

Linux,UNIX** 2011/07/21 09:51 http://blog.naver.com/pjfile/50116292104

출처:http://songeehana.blog.me/40051212020

■ 리눅스가 낯선 경우.. 보통의 유저들에게 익숙한 MS Windows, MS DOS 의 파일 시스템은 각 하드, 플로피, cdrom 드라이브 별로 드라이브 명이 있고, 각각의 드라이브 명을 최상위 루트로 하고, 그 아래 각각 트리구조로 디렉토리가 구성되어 있다.

리눅스의 파일 시스템은 이와는 조금 다르기 때문에 처음 사용할때는 조금 헷깔릴수 있다.

리눅스의 파일 시스템은 각각의 하드웨어와 상관없이 최상위 / (root) 디렉토리가 있고 오직 이것을 상위로 한 단 한개의 트리구조가 있을 뿐이다.

MS쪽은 드라이브 별로 나무가 여러 그루라면, 리눅스 쪽은 커다란 한 그루만 있다고 생각하면 된다.

그래서 MS에서는 파일경로를 표기할때 c:\program files\… 처럼 드라이브 명을 맨처음에 항상 표기하지만, 리눅스 쪽은 /sys/kernel 처럼 바로 root 부터 시작한다.

하나의 트리구조 밖에 없기 때문이다. (엄밀히 말하면 하드링크 덕에 단순 트리 구조는 아니지만..) 리눅스에 하드 디스크가 한개뿐이라면, MS에서 c: 드라이브 하나 뿐이라고 생각하면 간단하게 개념이 정리된다.

 

하지만, 씨디롬, 디브이디롬, usb 등등 MS에서 각각 드라이브로 사용할 여러 저장 하드웨어는 여러개 사용할 수 밖에없다.

이럴 땐 기존의 큰 트리구조의 중간에, 이 하드웨어 안의 작은 트리구조를 접목시키듯이 이어주게 된다. 기존의 큰 한그루의 트리구조의 한 가지에, 이 하드웨어의 파일 구조를 하위 구조로 이어주는 이 작업을 mount라 한다.

예전에 리눅스에서 쓰던 데이터가 들어있는 하드디스크라면, 권한의 주인이 같지 않아서 잘 마운트가 되지 않을수도 있다.

이럴 경우에는 root 권한으로 강제로 주인을 현재 로그인유저로 바꾸어주면 된다. 예전같으면 콘솔창에서 복잡한 명령어로 권한 설정하고 해야하겠지만.. 요즘은 라이트 유저도 쓰기 편하게 gui 형태로 마우스 클릭으로 모두 가능하다.

 

sudo nautilus로 노틸러스 창을 띄우고 그 창에서 폴더에 오른클릭으로 폴더 속성에 들어가서 바꾸어 주면 된다.

내경우에 처음에 리눅스를 잘 모르고, 혹시나 이 주인과 권한 설정이 데이타 내용을 인크립트 해서, 시스템이 바뀌면 하드내용이 날아가는게 아닐까.. 하고 겁먹었던적이 있어서.. 혹시나 똑같은걸 걱정하는 사람이 있을까봐 사족을 달아본것. 실제로 하드디스크 자체에 암호를 거는 encrypted LVM 기능이 있긴하다.

 

 

■ 하드 추가하기 1. 새로 구입한 하드를 포멧하자. 전원을 끄고 코드도 뽑고 하드를 연결후에 우분투를 부팅하고나서.. 우분투 메뉴 – 시스템 – 관리 – 디스크 도구 를 실행한다. 컴퓨터에 있는 하드들이 왼쪽 리스트에 쭈르륵 보일것이다.

리스트 중에 하드를 선택하면, 오른쪽 창에서, 하드의 정확한 제조명칭과 그 하드가 마운트된 폴더명까지 연결해서 보여주니, 조금만 조심한다면, 잘못해서 다른 하드를 포멧할 위험은 없다.

다들 직관적으로 알수 있는 메뉴라 첨 보더라도 쉽게 사용할수 있다.

NTFS등으로 미리 포맷되어있던 하드라면, 아래쪽에 파티션 삭제를 눌러 먼저 파티션을 없에주고.. 아래쪽 볼륨쪽에서, 초록색 + 표시인 파티션 만들기를 누르자. 다음 설정은 모르면 그냥 만들기 버튼 눌러도 된다.

슬라이드바로 파티션 크기 정해서 여러 파티션으로 나눠주거나, 파일시스템을 EXT4 외에 다른것으로 정해줄수도 있다.

EXT4, 1TB에 2~3분정도.. 예전 버전의 우분투 디스크도구에서는, 새로 포멧할때 파티션 만들기가 아니라 아래쪽에 있는 파티션 테이블 만들기를 눌러주어야 한다.

http://ubuntuforums.org/showthread.php?t=1330081 여기서 보듯.. 다들 헷깔려한다..

 

2. 마운트할 디렉토리 설정 윈도우의 NTFS 포멧할때와는 비교할수도 없이 빠르지만.. (빠른 NTFS포멧은 순식간이긴 하지만) 기다리는 동안.. 새로운 하드디스크를 연결하기 전에 미리 그 하드디스크를 마운트 할 디렉토리를 만들어주자. 예를 들면 $sudo mkdir /backupdisk 그 후 이 디렉토리의 주인과 권한을 설정해준다.

chown & chmod 명령해서 주인과 권한 설정하고 ls 등의 명령으로 수정한 내용을 확인하거나..

명령은 다음 형식이다.

$ sudo chown 아이디:그룹명 /경로 $ sudo chmod 권한설정 /경로 방금만들고 텅빈 폴더일테니 하위폴더 옵션인 -R은 필요없다.

예를 들면 $ sudo chown id123:gid123 /backupdisk $ sudo chmod 0775 /backupdisk 혹은 $sudo nautilus 명령을 터미널에 쳐서 root권한으로 노틸러스 열고, 오른클릭메뉴의 속성에서 작업하면 gui로 마우스 클릭만으로 설정 가능하다.

요즘 리눅스의 장점이랄까, 콘솔에 의존하지 않고 상당부분을 gui로 할수 있으니, 적극 활용하는 것도 괜찮다.

지금은 이 /backupdisk 에 파일을 만들거나 하면, 루트디렉토리를 마운트 한 하드디스크에 데이터가 기록된다.

하지만 앞으로 새로추가한 하드를 이 디렉토리로 마운트해준다면 새로운 하드에 그 내용이 써질것이다. *참고 : 띄어쓰기한 폴더명을 터미널 창에서 입력하기 (혹은 “+” 등의 특문이 들어간 폴더명도 마찬가지) 띄어쓰기나 +같은 연산자가 포함된 폴더명은 터미널에서 그냥 입력하면 제대로 인식못한다.

파일명 폴더명에 띄어쓰기는 여러가지로 불편해서 비추하고 대신 언더바로 쓰는 버릇도 좋긴하다만, 정 하고 싶다면.. 그 폴더명만 “”로 묶어준다. 예를 들면 $mkdir /”harddisk 2009” 등으로 해주면 제대로 인식한다.

 

3. 마운트 그 다음으로는 새로 추가할 하드디스크를 이 디렉토리에 마운트 시켜주어야 한다.

마운트 하는 방법은 여러가지가 있다.

1. 매번 터미널 창에서 명령으로 마운트 해 쓰는 방법

2. 우분투가 알아서 새 하드를 인식하고 자동으로 마운트 해주는데로 넙죽넙죽 받아먹는 방법 부팅전에 하드를 꼽아두기만 했다면, 알아서 우분투 메뉴 – 위치 – 내컴퓨터 바로 아래 항목으로 자동마운트 된다. 단 이러면 원하는 디렉토리에 마운트 할수 없다. 또한 각종 마운트 옵션도 설정하기가 힘들다.

3. fstab 파일을 수정해서 부팅때마다 원하는 설정으로 자동으로 마운트 하도록 하는 방법이 있다.

 

먼저 세번째 방법 fstab 으로 마운트 하는 방법부터 알아보면..

■ uuid와 fstab 파일을 이용해서 부팅때 자동으로 하드 디스크를 원하는 디렉토리로 마운트 하기 리눅에서 하드디스크 파티션 인식은 각 하드웨어 파티션별로 고유한 넘버가 할당된 UUID 를 통해 각각을 구분한다.

터미널 창에서 $ ls -l /dev/disk/by-uuid 그러면 하드디스크 리스트가 쭈르륵 뜰것이다.

sda1는 uuid가 땡땡땡, sda2는 … 이런식으로.. 예전버전 우분투에서는 $ sudo vol_id -u /dev/sdb1 명령어를 사용. sdb1 대신 알고 싶은 파티션 이름을 적으면 된다.

아무 정보 없이 sda1, sda2, adb1, 등으로만 구분되어있어 어떤게 새로 추가한 하드인지 알기 어렵다.

“우분투 메뉴 – 시스템 – 관리 – 디스크 관리”를 실행해서 하드 리스트를 보면서 확실하게 알아낼것. sda1 등은 오른쪽 창에 뜬다. 혹은 한단락 아래 있는 글에 여러가지 확인 방법을 적어놨으니 그 방법으로 확인해도 된다.

원하는 하드디스크의 uuid를 마우스로 드래그 해서 우클릭 복사 하자. (ctrl+c로는 콘솔창에서 복사가 힘들다.) sudo gedit /etc/fstab 명령으로 fstab파일을 열고 편집하자. 다음 내용을 기존 내용에 추가로 적는다. # /dev/sdb1 2009년 추가 (등등 맨앞에 #을 적으면 이줄의 내용은 무시하고 읽지 않게 되니, 이줄에는 내가 알아보기 쉽게 설명을 적어놓는다)

UUID=a620ca47-b2d4-4dcc-8e45-af1e6c520d05 /backupdisk ext4 defaults 0 2 형식은 맨처음에 아까 알아낸 uuid를 적고, 다음으로 마운트 될 경로 예를 들면 /backupdisk 등등 미리 만들어두었던 경로명을 적어준다.

그다음은 파일시스템 종류 예를 들면 ext3, ext4, ntfs 등등 단 이 파일시스템은 실제로 그 하드디스크를 포멧한 형식과 같아야 한다.

마지막으로 defaults 0 2 의 마운트 옵션을 적어두면 된다. 대부분의 경우 이 세옵션은, 이렇게 적으면 무난하게 사용할수 있다. 각각의 내용은 tap 키로 띄어 써주자. 작성후에는 물론 save를 해야한다.

깜박하고 관리자 권한으로 열지 않았거나 하면 저장되지 않는다.

gedit 메뉴중, 파일을 나타내는 탭에 적힌 파일명 왼쪽에 별표가 붙어있으면, 수정했으나 아직 저장안한 상태라는 표시이다.

* 인코딩 등의 설정은 거의 건드릴 필요없고 defaults만 써도 충분하다.

* fat32 의 경우에는 vfat 으로 써야 한다. 그외 ntfs, ntfs-3g, jfs, reiserfs, udf, iso9660, swap 등등 * UUID 는 그 파티션을 포멧할때마다 바뀐다.

 

■ 제대로 마운트 되었나 안되었나? 이렇게 디렉토리를 만들고, 마운트 해준다고 했지만, 혹시 실수로 뭔가 잘못되지 않았는지 확인해보자.

제대로 마운트 되었다면 이 디렉토리는 새로운 하드로 연결될것이고, 아니라면 기존 루트 디렉토리가 하드로 연결될것이다. 파티션 중에서 최상위 디렉토리에는 일종의 휴지통 디렉토리인 lost+found 디렉토리가 있다.

새로 만든 디렉토리 /backupdisk 를 노틸러스로 열어봤더니, lost+found 디렉토리가 없고 텅텅 비어있다 라면 마운트가 제대로 되지 않은 것이다.

혹은 디스크의 남은 용량을 체크해보거나, 우분투메뉴 – 시스템 – 관리 – 디스크도구 에서 hdd 정보에서도 확인할수 있다.

 

■ 어떤 하드가 sda1 이고, 어떤 하드가 sdb2 인지 어떻게 알아볼수 있을까?

주로 cmos에서 하드디스크 부팅 우선순위를 정해 준 순서에 따라,sda, sdb, sdc 등으로 하드디스크가 정해진다. sda라는 하드디스크를 파티션을 여러개 나눠줬으면, sda1, sda2, sda3 등으로 각각의 파티션 별로 번호가 붙는다.

그러나 사용하기 나름으로 얼마든지 바뀌니, 꼭 용량, 하드디스크 모델명(예 WD10EADS-00L5B1) 등으로 확인할것. 하드디스크를 추가해서 sdb였던 것이 sdc로 밀려나면 fstab내용이 엉망이 되지 않을까 하는 걱정은 하지 않아도 된다.

fstab에 쓴 sda, sdb..등은 내가 보기 편하게 정리해둔 주석에만 있을뿐, 실제 마운트는 uuid로 구분 되기 때문이다. uuid는 그 하드디스크를 포멧할 때마다 새로운 값으로 바뀐다.

복잡한 명령어 필요없이 이제는 우분투 메뉴 – 시스템 – 도구 – 디스크 도구 에서 편하게 알아볼수 있다.

터미널에서 $ df -h 을 입력하면 현재 마운트된 위치, 디렉토리명, 총디스크 용량, 사용용량, 등이 자세하게 한눈에 정리해서 볼수 있다.

여기에 추가로 # sudo fdisk -l 명령으로 각 파티션의 파일시스템 (ext3, ntfs 등) 을 확인할 수도 있다.

 

■ 첫번째 방법 : 터미널 창에서 명령어로 하드 디스크 마운트하기 fstab으로 설정하기 뭣하고 잠시 사용하는 하드디스크라면 보통은 우분투가 알아서 자동으로 마운트 해준다 (2번째 방법)

하지만 가끔씩은 기존 하드들의 셋팅과 충돌해서 자동으로 마운트 하지 못하는 경우도 있고, 외장하드, cd롬 등등 어쨋거나 수동으로 콘솔에서 마운트 해주어야 할 경우가 종종 있다.

3번째 방법과 마찬가지로 미리 마운트 할 디렉토리를 만들어두고, 위의 방법들로 hdd가 sda1인지 sdb1인지 등등을 알아낸후 # mount -t ntfs /dev/sda1 /mnt/c 명령으로 마운트 한다.

ntfs 에는 파일시스템의 종류를, 마지막 /mnt/c에는 미리 만들어둔 디렉토리 경로를 써준다.

수동으로 마운트를 해제할때는 umount 명령을 사용한다.

unmount가 아니니 스펠링에 주의할것. 미리 그 파티션을 사용하는 프로그램을 모두 꺼주어야 마운트가 해제된다.

사용중이면 메시지가 나오면사 마운트해제 안됨. # umount /dev/sda1 ■ fstab 파일에서 사용하는 마운트 할때 옵션들 일반적인 사용 용도로 하드를 fstab에서 자동마운트 할것이라면 다음의 모든 옵션은 무시하고 defaults 로 써주면 된다.

 

출처 : http://en.wikipedia.org/wiki/Fstab

 

쓰지도 않을 수두룩한 옵션들은 생략하고.. defaults rw, suid, dev, exec, auto, nouser, async nobootwait 실제 fstab 내용이 문제가 있다면, 오류를 바로 고쳐야 하겠지만 그게 아니라..

fstab에 적은 내용과 지금 하드가 다르다거나 (핫 스왑 등으로 빼놓고 부팅할때), 레이드 문제 등으로 부팅때 the disk driver for /… is not ready yet or not present. continue to wait; or Press S to skip mounting or M for Manual recovery. 메시지가 나오면서 부팅이 멈추는걸 막을수 있다.

이 옵션이 아니라면 오직 이때문에 부팅때마다 키보드로 s를 쳐주어야 할것이다.

defaults,nobootwait 처럼 스페이스로 띄우지 말고 바로 연결해서 입력해줄것. uid, gid 옵션은 fat 파일시스템을 마운트 할때 user identifier, group identifier를 설정해줄때 사용한다.

umask, dmask, fmask 옵션은 fat파일시스템에서 파일을 생성할때, 디렉토리만 생성할때, 파일만 생성할때 모드 설정. locale 설정은 ntfs-3g 파일시스템일때 설정. Dump 백업 유틸리티 dump를 0이면 사용하지 않음, 1이면 사용. 보통은 사용하지 않는다.

Pass (Fsck Order) 0 == 체크하지 않음, 1 == 이 파티션을 처음으로 체크, 2 == 다음에 이 파티션을 체크 기본값은 30번 마운트 하면 체크.

■ suid, setuid 출처 : http://en.wikipedia.org/wiki/Setuid set user id 의 준말. 유닉스 등에서 사용자가 실행파일의 주인이나 그룹의 허락을 받아 실행파일을 실행할수 있는권한을 나타내는 표식이다.

작업할때 보통의 유저들보다 더 높은 권한이 있어야 할때 setuid 나 setgid(set group id) 가 필요하다.

예를들자면 로그인 패스워드를 바꾸는 등.. 잘못쓰면 보안상 치명적인 결함이 되므로 조심해서 주어야 할 권한이다.

■ ext3 읽기 속도 높이는 요령 출처 :http://myubuntu.tistory.com/entry/EXT3-형식의-약점 Directory Indexting 기능을 이용하자. sudo tune2fs -O dir_index /dev/sda1 (sda1 대신 인덱신 할 파티션명 적을 것)

■ windows 계열 os에서 ext 파일 시스템 읽기 ext2explore 프로그램으로 읽을수 있다. 프로그램 이름은 ext2이지만 ext 계열을 모두 읽을수 있다.

윈도우즈의 내컴퓨터와는 호환되지 않고 별도로 동작하는 프로그램. 여기서 ext 계열의 하드디스크를 읽고 save 버튼으로 기존 윈도우즈 파일시스템 하드로 저장, 즉 복사할수 있다. 어찌된일인지 몇몇 폴더는 빈 폴더로 인식해서 읽을수가 없었다.

이때문에 파일복사하다가 날린 자료 생각하면 아윽.. 덕분에 파일복사후에는 파일수, 용량까지 체크하는 버릇이 들게 해준 아주 고마운(?) 녀석.. 생각만 해도 또 열받네..

■ Encrypted LVM 으로 설정했을때, 하드디스크 성능이 얼마나 떨어질까? http://www.phoronix.com/scan.php?page=article&item=ubuntu_maverick_encryption&num=1

■ EXT4 의 reseved space 줄이기. EXT4는 기본셋팅으로 용량의 5%를 슈퍼유저를 위해 남겨둔다.

근데 1TB하드라면 46GB.. 2TB하드면 92GB… 요즘 대용량 하드엔 너무 많다. 리눅스 OS가 있는 파티션은 이 용량을 0%까지 떨어뜨리지 말고, 적당히 남겨두어야 한다.

나머지 저장용 파티션은 0%까지 해도 된다. 0%로 떨어뜨리려면 다음 명령 (좀 남기려면 0대신 다른값으로..) $ sudo tune2fs -m 0 /dev/sdb1 Reseved 용량을 확인하려면 $ sudo tune2fs -l /dev/sdb1 | grep ‘Reserved block count’

■ 심볼릭 링크 vs 하드 링크 비교 심볼릭링크 = 바로가기단축아이콘과 같은 역할, 원본 파일을 가르키는 역할만 할뿐, 실제 파일내용은 없음. ln -s a b 원본을 지우면 심볼릭링크가 없는 대상을 가르킬뿐이다.

inode 다르다. 디렉토리 링크 가능. 다른종류의 파일시스템의 안의 내용을 가르킬수있다.

다른 slice(파티션과 비슷한 개념) 의 내용 가르킬수 있다 하드링크 = 원본파일에 기존 경로/파일명이 아닌 다른 경로/파일명으로 접근할수 있는 길을 새로 만드는것. ln a b 같은 파일을 다른경로/다른이름으로 여러방법으로 접근하되, 차지하는 용량은 1개일때와 동일. 둘중 어느 길로 파일을 수정하게 되더라도, 양쪽 모두의 결과에 영향을 미친다.

원본파일을 지우더라도, 원본 경로만 지워질뿐, 하드링크 쪽 파일은 살아있게 된다. 즉 하드링크를 만들게 되면, 원본과 복사본이라는 구별이 없어진다. inode 동일 디렉토리 링크 불가. 동일한 파일시스템 안의 내용만 가능 동일한 slice 안의 내용만 가능. 파일 복사 = 경로/파일명이 두가지가 되나, 각각 서로 상관없이 독립적으로 수정, 삭제가 이루어진다. 용량도 두배.

 

■ ■ ■ ■ ■ ■ ■ 여러가지 (저널링) 파일 시스템 ■ ■ ■ ■ ■ ■ ■ ■

EXT2, EXT3 ext2 는 비동기식 파일 시스템이다. 비동기라는 말은.. 내가 저장 버튼을 눌러도 실제로 하드에 저장은 한참 후에 저장될수 있다는 뜻이다.

매번 마구잡이 저장이 아니라, 한꺼번에 어느정도 모아서 정리한 후에, 실제로 하드에 쓴다고 생각하면 된다. 따라서 성능상의 이점은 있지만, 갑자기 실제 쓰기 전에 정전등으로 시스템 다운되면 문제가 생겨서 무결성 체크에 많은 시간이 든다.

ext3 는 역시나 비동기식 파일 시스템이지만 이를 보완할수 있는 저널링 기능이 추가되었다.

바로 내용을 쓰지는 않지만 그때그때 로그에 기록. 시스템 다운되면 로그내용을 참고해서 복구. 복구 확률이 기존의 ext2보다 상당히 높다. 또한 시스템 부팅때 ext2는 file system check 시간이 상당히 긴 단점이 있는데,이런 리눅스의 단점을 없에준다. 가장 신뢰할 수 있는 안정적인 파일시스템 중 하나이다.

ext3에는 3가지 모드가 있다. 1. journal : 파일 시스템에 데이터를 기록하기 전에 모든 데이터를 저널에 넘긴 뒤 기록하는 방식. 가장 안전한 모드이다. 하지만 매번 같은 데이터를 두번씩 저장하는 꼴이므로 성능이 떨어지게 된다. 2. ordered : 메타데이터가 저널에 넘겨지기 전에 모든 데이터를 강제적으로 먼저 주 파일 시스템에 기록, 비정상적인 시스템 다운 때 문제가 발생할 수도 있다 (우분투의 기본 설정)

3. writeback : 메타데이터만 저널에 넘겨준 후 나중에 데이터를 주 파일 시스템에 기록. 실제적인 성능 향상이 되지만, crash 때 데이터 복구률이 낮다. (성능 & 위험 최대, xfs 등 경쟁파일 시스템의 기본설정) 사용방법은 /etc/fstab 에 옵션 data=?? 부분에 넣거나 mount -o data=?? 으로 하면 된다. (??부분에 옵션 쓸것)

자세한 방법은 다음 링크에서 http://ubuntuforums.org/showthread.php?t=107856 writeback 모드 하면 어플리케이션에서 파일저장 버튼을 눌렀더라도, 노틸러스에서는 그 파일을 아직 못찾을수도 있다. (비동기식 파일시스템) 그럴때는 그냥 노틸러스에서 다시고침 등을 눌러주면 보일것이다.

또한 내부 저널 커밋을 저널이 다 찼을때 할것인가, 특정 시간마다할 것인가에 따라서도 안정성이 달라질수 있다.

기본값은 저널의 1/4가 차거나, 타임아웃이 되었을때 한다. ext3의 장점 : 기존에 가장 많이 쓰던 ext2에서 바로 쉽게 업그레이드 (파일 백업&복사 과정이 필요없이 바로 전환), 다른 경쟁 파일 시스템보다 낮은 cpu 자원 소비. 몇몇 경쟁 파일 시스템이 보여주는 “안정성(신뢰성) 문제”가 없다(=갑작스런 정전 등의 사고가 아니라면 데이타가 깨지는 일이 없다.) ->

바꾸어 말하면 정전 사고 이후 윈도우, freeBSD 등 다른 서버는 괜찮고 리눅스 서버만 맛이 가는 경우가 많은데, ext3 파일 시스템이 그 주 원인으로 의심받는 경우가 많다고 한다.

 

출처 : http://gauryan.egloos.com/1706561 예전에는 경쟁 시스템에 비해 성능이 많이 뒤진다고 했으나, 그간 발전해서 xfs등과 비교해도 비슷하거나 일부면에서 더 좋다는 평가. ext3의 단점 : 애초에 저널링 파일 시스템을 염두에 두고 만든 파일 시스템이 아니다.

속도가 느리다. (지금은 경쟁자들과 거의 동등한 수준. 신경끄자) inode의 동적 할당및 다양한 블록크기(frag, trail)과 같은 최신 파일시스템설계의 기능이 부족 (구형의 ext2의 연장선이기 때문에) 마운트 도중 fsck 불가능, 마운트 도중 파일시스템의 덤프작업은 데이터 손상이 생길수 있다.

JFS, ext4, XFS 등에 있는 extents 기능을 지원하지 않는 등등 최신 파일 시스템 기술이 적용되어있지 않다.

조각모음 할 도구가 없다.

ext2로 전환해서 하는 방법이 있지만 전환 과정에서 데이타가 손상될수 있다. shake, defrag 등 유저가 만든 툴이 있긴하나 간접적인 방법(파일재복사)을 쓴 것일뿐 제대로 된 defrag 툴은 없다. 압축, 크기제한(링크의 원문참조), 저널링 때 checksum 검사안함, 개발자 stephen tweedie 이름 third extended file system 배포 2001 년 11월 linux 2.4.15 최대파일크기 16GB~2TB 최대파일이름길이 255바이트 최대볼륨크기 2TB~32TB 날짜표현범위 1901-12-14 ~ 2038-01-18 ■ 리눅스 저널링 파일 시스템과 조각모음.. 리눅스 저널링 파일 시스템은 조각모음이 필요없다고 주장하는 사람도 많다. 비동기라는 특성과, 비교적 최근에 개발되어서 기타 진보된 기능으로, MS계열보다 조각단편화가 덜 생기는것은 사실이다.

하지만, MS의 NTFS 파일 시스템도 처음 나왔을때는 조각모음이 필요없는 파일시스템이라 대대적으로 광고했었음에도 불구하고, 요즘은 조각모음이 어느새 MSwindows 필수팁처럼 되어버린걸 생각해보라.. 반복해서 쓰고 지우는데는 아무리 우월한 파일시스템도 조각단편화에 별수 없다.

어느정도까지 느리게 할수 있을뿐.. ext4를 개발하면서 처음단계부터 defrag 기능을 포함해서 개발한것도 간접적으로 이를 증명한다.

■ JFS Jounaling File System IBM의 AIX운영체제로 개발된 저널링 파일 시스템. 심볼릭링크의 성능이 안좋은 단점. 최초의 저널링 파일 시스템이며, 현재 리눅스에서 사용하는 버전은 JFS2 이다. ■ XFS Extended File System SGI 실리콘 그래픽스 가 자사의 IRIX 서버를 위해 개발. 가장 성능이 뛰어나다고 평가받음. ext3와 비교했을때 쓰기는 비슷, 읽기가 빠르다. writeback 저널링 정책을 사용 (risky) 빠른 대신 debuging mode 가 없다. 베드섹터났을때 스스로 처리안해준다. 유저 평이 가장 좋았으나, ext4 가 나오면서;;

■ ReiserFS 처음부터 저널링을 염두에 두고 만들었으며, 리눅스에서 채택한 최초의 저널링 파일 시스템. 저널링 정책으로 ordered 가 기본값으로 설정되어있다. 독일의 한스 라이저 등이 개발. 리눅스(우분투)에서 별다른 설치 없이 처음부터 기본적으로 지원하는 파일 시스템 중 하나. 작은 파일의 경우 성능이 ext2, ext3 보다 10~15배 뛰어나다.

큰 파일 등을 읽을 경우 ext2,3 보다 현저히 떨어짐 ext3와 비교했을 때 NFS와 호환이 나쁘고 퍼포먼스가 나쁘다. 테일 채워넣기 라는 기능으로 단편화를 동적으로 줄이고, 같은 디스크에 약 5%의 데이터를 더 저장할수 있다. 유저들의 사용기에 따르면 하드웨어 특성을 예민하게 타서 안정성에 문제가 있다

유저 평에 의하면 간간히 파일이 깨진다고 한다. 크기등은 그대로이나 내용이 이상하게 바뀐다.

일년에 두세차례 정도 빈도로… 정전, 다운 사고가 발생하면, ext2는 ‘fsck를 돌려라’는 에러메시지가 나와 복구하는 과정이 자동으로 쉽지만, ReiserFS는 파티션을 아예 인식못하고 단지 에러만 표시, 복구가 힘들다. 복구 정보도 적어서 복구가 쉽지 않다.

주 제작자인 한스 라이저가 중범죄로 감옥살이 하는 덕에 이미지가 덩달아 안 좋아진 면도 있다. (Reiser4 중단.)

■ UFS 프비(FreeBSD)의 기본 파일 시스템. FreeNAS 등 프비 계열의 서버에 관심이 있다면.. ■ EXT4 우분투 9.04 부터는 별도 설치없이 처음부터 지원한다. (단 루트 파티션을 ext4로 하려면 구형 grub으로는 안된다, 재설치 필요) 처음엔 ext2,3 때처럼 하위호환성을 유지한채 개발하려했으나, 개발도중 ext3에서 분리하기로 한다. (2006년 6월) 저널링에 체크섬 기능을 추가 안정성과 성능을 개선 온라인 조각모음 지원 – 아직은 따로 프로그램을 설치해서 사용해야한다.

파일복구 기능 자체 지원 – 아직 예정 (EXT3 는 삭제한 파일 복구가 너무 힘들었다) ext3를 포함 대부분 파일 시스템은 초단위로 타임스탬프 자료를 기록하나, ext4는 나노초 까지 정밀도를 높임 저널링 기능을 끄고 사용할 수도 있다.

지금은 버그픽스도 거의 완료되었고, 실제 성능이 상당히 잘 나오는 관계로 ext4가 가장 좋은 선택일 것이다. ext4 마운트 옵션 – http://lwn.net/Articles/203915/

■ EXT4 성능 벤치마킹 출처 : http://arstechnica.com/open-source/news/2009/01/super-fast-ext4-filesystem-arrives-in-ubuntu-9-04.ars 위 그래프는 벤치마킹 툴로 측정한 것이고.. 실제 사용에서도 거의 벤치마킹 프로그램 속도까지 나온다는 것이 중요.. 하드속도가 100MB/s넘는 하드끼리의 복사라면, 파일복사속도가 60~70MB/s정도나오며, 동시에 두번째 복사작업을 하나 더 실행하면 추가로 30MB/s 정도로 더나온다.

■ BTRFS 차세대 파일 시스템. 아직 개발중으로 베타 테스트용으로만 사용중. 고성능 대용량 저장을 위한 시스템. GPL 라이센스. 굳이 차세대라는 용어를 쓴 이유는 기존 파일 시스템에서는 없었던 새로운 기능들이 꽤나 많이 적용되었기 때문.. 우분투 10.4 버전부터 포함되었으나, 아직은 성능,안정성 등에 문제가 있다고 함.

■ ZFS 차세대 파일 시스템. 라이센스 문제로 리눅스에서는 보기 힘들듯. Sun 에서 개발. Solaris10부터 적용 이미 사용중.

 

■ 저널링 파일 시스템 관련 출처와 references http://www.ibm.com/developerworks/kr/library/l-journaling-filesystems/index.html http://blog.naver.com/kingseft?Redirect=Log&logNo=140004706378 http://blog.naver.com/cosmos115?Redirect=Log&logNo=130002279705 http://blog.n-nuri.com/507 http://kldp.org/node/65341 http://wapedia.mobi/ko/Ext3 http://www.ibm.com/developerworks/kr/library/l-ext4/

Advertisements