'U&L Developer˚ε♡з。'에 해당되는 글 233건
- 2011.08.11 [Chap8 #01] - tar를 사용하여 백업 아카이브(archive) 만들기
- 2011.08.10 [Chap7 #04] - 파일시스템 검사하기 (badblocks , fsck)
- 2011.08.10 [Chap7 #03] - (2) 파일시스템 마운트 & 언마운트(mount, umount)
- 2011.08.09 [Chap7 #03] - (1) fstab 파일의 파일시스템 마운트
- 2011.08.09 [Chap7 #02] - (3) 파일시스템 포맷(mkfs), 가상 파일 생성
- 2011.08.08 [Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs)
- 2011.08.08 [Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted)
- 2011.08.07 [Chap7 #01] - 파일시스템 기초 이해
♧ tar(tape archiver)는 초기 유닉스 시스템에서부터 사용. 지금은 마그네틱 테이프가 일반적이지 않지만, tar는 여전히 아카이브 파일을 생성하고 여러 미디어를 통해 배포하는데 선호되는 명령어이다. |
◈ [ 기능 옵션 ] - 반드시 아래 옵션들 중 하나가 들어가야 함
옵 션 [ ,긴 옵션 ] | 설 명 |
-c, --create | 새로운 아카이브를 만든다 |
-x, --extract | 아카이브 파일을 풀어준다 |
-d, --diff | 아카이브 파일을 비교하여 다른 점을 찾는다 |
-u, --update | 아카이브 파일에 저장된 사본보다 새로운 파일만 덧붙여 업데이트 |
-A, --catenate | 하나의 tar 파일에 다른 파일을 병합 |
-r, --append | 아카이브 파일 끝에 파일을 덧붙여 추가 |
-t, --list | 아카이브 파일 내용목록을 보여준다 |
--delete | 기존 아카이브 파일에서 삭제 (자기 테이프에 쓰면 안됨X) |
◎ [ 부가적인 옵션 ]
옵 션 [ ,긴 옵션 ] | 설 명 |
-f, --file ARCHIVE | 지정한 아카이브파일에 읽기 ∙ 쓰기를 실행. (필수) " - " 는 표준입력에서 데이터를 받거나 표준출력으로 데이터를 쓴다. |
-v, --verbose | 처리중인 과정을 자세히 출력 |
-p | 모든 퍼미션 정보를 유지. |
-j, --bzip2 | bzip2 사용하여 파일 압축/풀기 |
-z, --[un]gzip | gzip 사용하여 파일 압축/풀기 |
-Z, --[un]compress | compress 사용하여 파일 압축/풀기 |
--use-compress-program PROG | PROG 로 지정된 압축툴로 아카이브 파일을 다시 처리 ( PROG는 반드시 -d(압축 해제)를 처리해야 함) |
tar는 명령어에 옵션을 넣어주는 표준적인 방법이 정해지기 전에 만들어진 명령이다. 지금은 tar에서도 대시(-)로 시작하는 옵션을 사용할 수 있지만 항상 필요한 것은 아니다. 때문에 옵션을 의미하는 문자가 없는 tar xvf와 같은 명령어도 볼 수 있다. |
tar [ .tar ] - 기본 사용 예 | ||||||
♧ tar는 기본적으로 압축은 하지 않고 단순히 하나의 파일(.tar)로 묶음.
▶ tar 아카이브 파일 생성(묶기) : (c옵션)
▶ tar 아카이브 파일 풀기 : (x옵션)
▶ tar 아카이브 파일 목록 보기 : (t옵션)
▶ tar 아카이브 파일에 다른 파일을 병합 : (A 옵션)
☞ archive2.tar 파일이 archive1.tar 아카이브에 추가된다.
▶ tar 아카이브에서 파일 삭제 : (--delete)
▶ tar 아카이브에 하나 이상의 파일 추가 : (r 옵션)
☞ ddd.txt, eee.txt가 archive1.tar 아카이브 파일에 추가 된다.
|
tar + 타 압축 필터(gzip, bzip2, ...) | |||||||
♧ tar + gzip (z 옵션) ⇒ tar로 하나의 파일로 묶고 gzip으로 압축하는 과정을 한번에 수행. ⇒ tar+gzip의 확장자 : [ .tar.gz | .tar.z | .tgz ]
▶ tar + gzip 아카이브 파일 압축 생성 : (.tar.gz)
▷ z옵션이 지원하지 않는 경우 :
☞ tar로 하나의 아카이브 파일로 묶고(.tar) gzip로 압축(.gz) 한다.
▶ tar + gzip 아카이브 압축 파일 풀기 : (.tar.gz)
▷ z옵션이 지원하지 않는 경우 :
☞ gunzip으로 압축 파일을 풀고(.gz) tar로 나머지 아카이브 파일 풀기(.tar)
♧ tar + bzip2 (j 옵션) ⇒ tar로 하나의 파일로 묶고 bzip2으로 압축하는 과정을 한번에 수행. ⇒ tar+bzip2의 확장자 : [ .tar.bz2 ]
▶ 압축 생성 & 해제 역시 위의 예와 동일하나 해당 압축 필터 사용 옵션으로 변경 한다.
♧ tar + lzop (--use-compress-progarm 옵션) ⇒ --use-compress-program옵션 사용하여 lzop 압축 툴 사용. ⇒ 해당 lzop 압축 유틸은 조금 덜 통합된 tar이다. ⇒ lzop를 사용하기 전에 lzop 패키지를 먼저 인스톨 해야 한다. ⇒ tar+lzop의 확장자 : [ .tar.lzo ]
▶ tar+lzop 압축 & 해제 사용
※ 다른 압축 파일 역시 사용 방법은 다 비슷하므로 file 명령을 사용하여 압축 파일의 종류를 먼저 구분한다.
|
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap9 #01] - 활성화 프로세스 보기(ps, top) (0) | 2011.08.13 |
---|---|
[Chap8 #02] - 네트워크를 통해 백업하기(ssh, rsync) (0) | 2011.08.12 |
[Chap7 #04] - 파일시스템 검사하기 (badblocks , fsck) (0) | 2011.08.10 |
[Chap7 #03] - (2) 파일시스템 마운트 & 언마운트(mount, umount) (0) | 2011.08.10 |
[Chap7 #03] - (1) fstab 파일의 파일시스템 마운트 (0) | 2011.08.09 |
♧ 리눅스에서는 윈도우에서 사용하는 scandisk 유틸리티와 같은
물리적인 수준에서 배드블록을 검사하기 위해 badblocks 명령어를 사용한다.
그리고 fsck 명령어를 사용해 논리적인 수준에서 파일시스템의 오류를 검사할 수도 있다.
■ badblocks - 장치의 배드블럭을 검색
badblocks [ -b 블록크기 ] [ -o 출력파일 ] [ -v ] [ -w ] |
◈ [ 옵션 ]
옵 션 | 설 명 |
-b 블록크기 | 블록크기를 바이트 수로 나타냄 (기본값 : 1024 bytes) |
-o 파일명 | 지정한 파일에 배드 블록의 리스트 기록 |
-v | 자세한 출력 모드 |
-e 최대블록개수 | 점검을 멈출 최대 블록 개수 (0이면 지정된 범위 까지 점검) |
-p num_passes | 지정된 숫자 만큼 디스크 스캔 반복. |
-w | 읽기/쓰기 모드 에서 배드블록을 검사 (-n 옵션과 함께 사용 X, 상호 배타적임) |
-n | 비-파괴 읽고/쓰기 모드 ( -w옵션과 함께 사용 X, 상호 배타적임) |
-s | 검사 진행 과정 표시 |
badblocks 명령의 일반적인 사용 예: | ||||
▶ -v 옵션 : 자세한 정보 출력과 함께 기본적인 사용
▶ 비-파괴 모드로 배드블록을 검사.
☞ 기본적으로, 배드블록 검사는 읽기전용 모드에서 수행하는 것이 안전하다. 비-파괴(non-destructive) 읽고/쓰기 검사는 매우 느리지만 디바이스에 저장된 데이터의 손실 없이 검사할 수 있는 가장 좋은 방법이다.
▶ 읽기/쓰기 모드 검사. ( 경고 : 데이터가 파괴될 수 있음 )
☞ 읽기/쓰기 모드에서 배드블록을 검사하는 것으로 빠르게 검사할 수는 있지만 데이터가 파괴 된다.
▶ 다수의 배드블록 검사 수행
☞ 디스크 품질을 검사하고, 초기 고장률을 낮추기 위한 테스트용으로 사용. |
■ fcsk - 리눅스 파일시스템을 검사
♧ fsck 명령어는 특정 파일시스템 유형에 사용되는 검사 유틸리티의 프론트엔드 역할을 수행.
fsck [ -AVRTNP ] [ -s ] [ -t 파일시스템유형 ] [ 파일시스템옵션 ] 파일시스템 [ ... ] |
◈ [ 옵션 ]
옵 션 | 설 명 |
-A | /etc/fstab 파일에 표시된 모든 파일시스템을 한 번 씩 모두 점검. |
-R | -A 플래그와 같이 사용될 때 루트 파일시스템은 제외 |
-T | 시작할 때 버전정보를 출력하지 않음 |
-V | 자세한 출력 수행 |
-N | 실행하지는 말고 어떤 작업을 할 것인지만 보여줌. |
fsck 명령의 일반적인 사용 예: | ||
▶ 파일시스템 검사 (-TV : 자세한 출력 및 버전 출력 방지 옵션)
▷ 검사 수행 도중 문제가 발생하면, 문제를 수정할 것인지 사용자에게 물어보는데 -y옵션을 추가하여 모든 질문에 대해 yes로 답변하도록 할 수 있다.
|
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap8 #02] - 네트워크를 통해 백업하기(ssh, rsync) (0) | 2011.08.12 |
---|---|
[Chap8 #01] - tar를 사용하여 백업 아카이브(archive) 만들기 (0) | 2011.08.11 |
[Chap7 #03] - (2) 파일시스템 마운트 & 언마운트(mount, umount) (0) | 2011.08.10 |
[Chap7 #03] - (1) fstab 파일의 파일시스템 마운트 (0) | 2011.08.09 |
[Chap7 #02] - (3) 파일시스템 포맷(mkfs), 가상 파일 생성 (0) | 2011.08.09 |
■ mount 명령어를 사용해 파일시스템 마운트 하기
♧ mount 명령어를 사용하면 로컬(하드디스크, USB, CD, DVD 등)뿐만 아니라 원격지(NFS, 삼바 등)까지
포함해 시스템에 마운트되어 있는 모든 파일시스템 정보를 볼 수 있음.
mount [-hV] mount -a [-fnrvw] [-t 파일시스템유형] mount [-fnrvw] [-o 옵션 [,...]] 장치 | 디렉토리 mount [-fnrvw] [-t 파일시스템유형] [-o 옵션] 장치 디렉토리 |
▶ mount 명령어 옵션
옵 션 |
설 명 |
-a, --all |
fstab 파일에 언급된 모든 파일시스템을 마운트. |
-v, --verbose |
자세한 출력 모드. |
-f, --fake |
실제 시스템 호출은 하지 않고 마운트할 수 있는지 점검. 보통 -v 플래그를 써서 mount 명령의 결과를 알고자 할 때 유용 |
-n, --no-mtab |
/etc/mtab 파일에 쓰기 작업을 하지 않고 마운트. /etc가 읽기전용 파일시스템인 경우에 필요. |
-r, --read-only |
읽기만 가능하게 마운트. ( 같은 옵션으로 -o ro ) |
-w, --rw |
읽기/쓰기 모드로 마운트. ( 같은 옵션으로 -o rw ) 기본 디폴트값 |
-t <vfstype> |
마운트할 파일시스템 유형을 명시적으로 지정. |
-o <options> |
플래그 뒤에 콤마로 분리한 옵션을 적어준다. |
-B, --bind |
기존에 마운트되어 있는 파일시스템을 서브트리의 다른 위치에 한번 더 마운트. |
-M, --move |
마운트되어 있는 파일시스템의 마운트 지점을 다른 위치로 이동. |
▷ 마운트 플래그 옵션 : 파일시스템 속성 설정 옵션
옵 션 |
설 명 |
defaults |
rw, suid, dev, exec, auto, nouser, async 속성을 모두 가짐 |
auto |
부팅시 자동 마운트 |
noauto |
부팅시 자동마운트 안함 |
dev |
파일시스템 상의 문자, 블럭 특수 장치를 해석. |
nodev |
파일시스템 상의 문자, 블럭 특수 장치를 해석 하지 않음. |
exec |
바이너리 실행파일이 실행되는 것을 허용. |
noexec |
바이너리 실행파일이 실행되는 것을 허용 안함. (/tmp 디렉토리와 같이 신뢰할 수 없는 사용자도 접근할 수 있는 경우에 보안 향상) |
suid |
setuid, setgid 의 사용을 허용 |
nosuid |
setuid, setgid의 사용을 거부 |
ro |
읽기 전용 (read-only) |
rw |
읽기/쓰기 (read/write) 가능 |
async |
파일시스템에 대한 I/O가 비동기적으로 이뤄지게 함. |
sync |
파일시스템에 대한 I/O가 동기적으로 이뤄지게 함. |
user |
일반 계정 사용자들도 마운트 할 수 있게 허용 |
nouser |
일반 계정 사용자가 마운트할 수 없음 (즉, root만 mount 가능) |
noatime |
파일 접근시간을 업데이트하지 않는다. (메일 스풀이나 로그와 같이 I/O가 많은 파일시스템에 유용) |
remount |
이미 마운트된 파일시스템을 다시 마운트. |
mount 명령 기본적인 사용 예: |
||||||||
▶ 마운트된 로컬 및 원격지 파일시스템 목록보기
▶ 특정 파일시스템 유형을 가진 목록만 보기 (-t 옵션 사용)
▶ /dev/sdb1 디바이스를 /mnt/mymount로 마운트 (-v 옵션 : 자세한 정보 출력)
☞ 파일시스템 유형을 명시하지 않고 경고를 출력하며, 알아서 ext4로 시도하여 마운트 함.
▶ 마운트할 파일시스템 유형을 명시적으로 지정 (-t 옵션 사용)
▶ 마운트 옵션 지정 (-o 옵션 사용)
☞ /etc/fstab 파일의 네 번째 필드와 동일한 효력을 가짐. ☞ -o 옵션과 콤마로 구분된 옵션들을 입력하여 구제적인 마운트 옵션을 지정해줄 수 있음.
▷ remount 옵션 - 이미 마운트되어 있는 파일시스템의 옵션 변경.
☞ 읽기 전용으로 마운트되어 있는 파일시스템을 읽기전용으로 다시 마운트.
▷ --bind 옵션 - 마운트되어 있는 파일시스템을 다른 위치에 한번 더 마운트.
☞ 동일한 파일시스템을 서로 다른 두 개의 마운트 지점에서 접근할 수 있게 되었다. ☞ 새로운 마운트 지점 역시 기존과 같은 옵션을 사용.
▷ --move 옵션 - 마운트되어 있는 파일시스템의 마운트 지점을 다른 위치로 이동.
|
[ fstab 파일에 기술되어 있는 파일시스템을 마운트 하는 세 가지 방법 ] |
|||||
① mount -a [-t type] 라고 하면 fstab 에서 기술되어 있는 모든 파일 시스템을 마운트 시킨다. ② 그냥 디바이스명만 써주거나 또는 마운트 포인트(마운트될 디렉토리)만 적어주면 된다.
③ 다음과 같이 fstab에 user라는 옵션이 적혀 있다면, 누구든 마운트 가능.
|
[ 루프백 마운트 ] |
||||
♧ 파일을 블럭 디바이스 처럼 엑세스 할 수 있게 해주는 가상의 장치.
스왑 파일을 생성하는 것처럼, 일반 파일시스템도 파일 속에 생성할 수 있다. 이러한 가상 파일시스템은 루프백 마운트라고 하는 방법으로 마운트 해야 한다. (다운로드받은 리눅스 설치 CD또는 라이브 CD등을 마운트하려는 경우)
▷ loop장치가 명시되지 않으면 ( -o loop라는 옵션만 주면) mount는 사용하지 않은 loop장치를 찾아서 사용
▶ CD 이미지파일(iso9660)을 시스템에 마운트
☞ loop : 명시적으로 /dev/loop* 를 지정하지 않으면 사용하지 않는 loop 디바이스를 자동으로 지정.
▶ USB 디스크 부트 이미지 파일을 시스템에 마운트.
♧ 루프백 디바이스 상태에 관한 정보를 보고 싶다면 losetup 명령 사용. ▶ 마운트된 루프백 디바이스를 보여준다.
▶ 마운트된 루프백 디바이스를 강제로 언마운트
☞ 만약 루프백 마운트에 문제가 발생해 언마운트할 수 없다면 다음 명령어를 사용하여 분리작업 시도
|
■ umount 명령어를 사용해 파일시스템 언마운트 하기
♧ 파일시스템의 마운트 해제는 umount명령을 사용한다.
umount [-hV]
umount -a [-dflnrv] [-t vfstype] [-O options] umount [-dflnrv] {dir | device}... |
umount 명령 기본적인 사용 예: |
||||||
♧ 마운트와 마찬가지로 디바이스명 또는 마운트 지점을 이용해 언마운트 할 수 있다. bind 옵션(하나의 디바이스, 여러 개의 마운트 지점)으로 마운트 했을 경우 발생할 수 있는 혼란을 피하고 싶다면 가급적 마운트 지점을 이용해 언마운트 하도록 한다.
▶ 디바이스명을 사용해 언마운트.
▶ 마운트 지점을 사용해 언마운트.
▶ 언마운트가 되지 않을 경우
☞ 만약 디바이스가 사용 중이라면 'device is busy' 라는 메시지가 출력되면서 언마운트할 수 없을 것. (실패하는 일반적인 원인으로, 마운트된 파일시스템의 디렉토리를 사용하고 있는 쉘이 실행중인 경우가 많음)
▶ 드물지만 'device is busy'의 정확한 원인을 알 수 없을 경우 :
☞ devanix 유저가 실행한 PID 9341이 bash 쉘 프로세스가 마운트 지점을 사용하고 있다는 것을 확인. (결국 이 bash 프로세스가 mymount 파티션의 언마운트를 방해하고 있었던 것)
▶ -l 옵션 : 지연된 언마운트(lazy umount) 사용.
☞ 'device is busy'로 언마운트할 수 없을 때, 이를 해결하기 위한 또 다른 방법으로 지연된 언마운트(lazy umount)가 있다. ☞ 지연된 언마운트(lazy umount)는 디바이스가 사용되지 않을 때까지 대기한 후에 디렉토리 트리로부터 파일시스템을 언마운트한다.
▷ 그밖에 이동식 저장장치를 언마운트할 때에는 eject 명령어를 사용할 수 있다. eject를 사용하면 CD파일시스템이 언마운트되고 드라이브에서 CD가 자동으로 배출 된다.
|
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap8 #01] - tar를 사용하여 백업 아카이브(archive) 만들기 (0) | 2011.08.11 |
---|---|
[Chap7 #04] - 파일시스템 검사하기 (badblocks , fsck) (0) | 2011.08.10 |
[Chap7 #03] - (1) fstab 파일의 파일시스템 마운트 (0) | 2011.08.09 |
[Chap7 #02] - (3) 파일시스템 포맷(mkfs), 가상 파일 생성 (0) | 2011.08.09 |
[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs) (0) | 2011.08.08 |
■ fstab - 파일 시스템에 대한 정보를 고정적으로 저장
♧ /etc/fstab 파일은 보통 리눅스 설치단계에서 루트 파일시스템과 시스템에서 사용될
다른 파일시스템 정보를 바탕으로 자동적으로 만들어 진다.
⇒ fstab 파일은 리눅스에서 사용하는 파일시스템 정보를 고정적으로 저장하고 있는 파일로
시스템이 부팅될 때 자동으로 마운트되거나 사용자가 직접 마운트한다.
⇒ fstab파일의 정보가 조금이라도 잘못되면 부팅과정의 파일시스템 마운트 단계에서 멈춤.
◈ /etc/fstab 파일 예제:
<file system> | <mount point> | <type> | <options> | <dump> | <pass> |
/dev/VolGroup00/LogVol00 | / | ext3 | defaults | 1 | 1 |
LABEL=/boot | /boot | ext3 | defaults | 1 | 2 |
tmpfs | /dev/shm | tmpfs | defaults | 0 | 0 |
devpts | /dev/pts | devpts | gid=5, mode=620 | 0 | 0 |
sysfs | /sys | sysfs | defaults | 0 | 0 |
proc | /proc | proc | defaults | 0 | 0 |
/dev/VolGroup00/LogVol01 | swap | swap | defaults | 0 | 0 |
/dev/sda1 | /mnt/windows | vfat | noauto | 0 | 0 |
( 직관적으로 보기 위해UUID 목록 제외 )
☞ 루트 파일시스템(/) 과 스왑 파티션(swap)의 경우 논리적 볼륨 관리자(LVM)의 볼륨으로 설정.
- LVM은 볼륨 ID는 그대로 유지하면서 물리적인 파티션들을 이동시키거나 연결하기 쉽도록 만들어 줌.
☞ 여러 가상 파일시스템(물리적 파티션이 없는 파일시스템)으로 구성.
- devpts(pts 가상 터미널 인터페이스)
- sysfs(커널 2.6에 관한 정보 제공 통로)
- proc(커널 2.6 이전에 구현된 커널 정보 제공 통로) 등
☞ 마지막 /dev/sda1 디스크 파티션의 경우, 하드디스크에 있는 윈도우 파티션을 마운트하기 위해 사용자가 직접 추가.
※ 과거 리눅스 버전과 달리 /etc/fstab 파일에서는 이제 더 이상 이동식 저장장치 정보를 관리하지 않음. 이러한 이동식 저장장치들은 하드웨어 추상화 계층(Hardware Abstraction Layer, HAL)이라고 하는 시스템에 의해 자동적으로 검색된 후, /media 디렉토리에 생성된 전용 마운트 지점 (디바이스 볼륨 ID 정보 등을 바탕으로 생성)에 마운트 된다. |
- 필요하다면 /etc/fstab 파일에 자신만의 하드디스크 또는 이동식 저장장치 파티션에 대한 정보 추가.
- 원격지 파일시스템(NFS, 삼바 등) 역시 /etc/fstab 파일에 포함될 수 있음.
◈ /etc/fstab 파일의 필드
필 드 | 설 명 |
1 <file system> | 파일시스템을 대표하는 디바이스명: ⇒ 마운트되는 파티션의 디바이스명(/dev/sda1와 같은) 표시. (그러나 최근에는 디바이스명 대신 LABEL 또는 UUID를 사용) |
2 <mount point> | 파일시스템이 마운트될 위치: ⇒ 마운트된 파일시스템의 모든 디렉토리 트리구조와 저장된 데이터가 이 지점과 연결. |
3 <type> | 파일시스템 유형: ⇒ ext?, tmpfs, devpts, sysfs, swap, vfat, hfs, ufs …와 같은 파일시스템 장치 종류 ⇒ /proc/filesystems에서 리눅스에서 현재 사용하고 있는 지원가능한 파일시스템 확인 |
4 <options> | 마운트 옵션: ⇒ 파일시스템을 용도에 맞게 사용하기 위한 파일시스템 속성 설정. ⇒ defaults, auto, exec, suid, ro, rw, user, nouser 등 (man mount 에서 -o 옵션 참조) |
5 <dump> | 파일시스템 덤프 여부: ( 0 또는 1의 값을 가짐) ⇒ dump 명령을 사용하여 백업을 수행할 때에만 의미가 있다. 숫자 0 : dump 명령으로 덤프 되지 않는 파일시스템. 숫자 1 : 데이터 백업등을 위해 dump가 가능한 파일시스템. |
6 <pass> | 파일시스템 검사 여부: ⇒ fsck 명령을 사용한 무결성 검사가 필요한지 여부를 가리킨다. 숫자 0 : 해당 파일시스템에 검사가 필요 없음 (fsck가 실행 되지 않음) 숫자 1 : 먼저 파일시스템 검사가 필요 (루트 파일시스템) 숫자 2 : 루트 파일시스템을 제외한 나머지 파일시스템을 의미 |
[ 디바이스명 대신 UUID를 사용하자 ] | |||
♧ 하드디스크를 추가한 후 드바이스명이 순서가 바뀔 수 있다. 이런경우 하드디스크의 고유한 UUID 를 이용하면 바뀌는 것에 신경을 쓰지 않아도 된다.
① fstab에 추가할 디바이스 UUID 확인
② /etc/fstab 파일 편집
☞ /dev/sda3 디바이스명을 위처럼 UUID=e3853343… 처럼 바꿔주면 된다.
이렇게 하면 추후 하드디스크를 추가해서 드라이브문자가 바뀐다고 해도 이상 없이 작동한다. |
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap7 #04] - 파일시스템 검사하기 (badblocks , fsck) (0) | 2011.08.10 |
---|---|
[Chap7 #03] - (2) 파일시스템 마운트 & 언마운트(mount, umount) (0) | 2011.08.10 |
[Chap7 #02] - (3) 파일시스템 포맷(mkfs), 가상 파일 생성 (0) | 2011.08.09 |
[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs) (0) | 2011.08.08 |
[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted) (0) | 2011.08.08 |
♧ 모든 파티션 준비가 끝났다면 이제 각각의 파티션을 원하는 파일시스템으로 포맷.
■ mkfs - 리눅스 파일 시스템 만들기
mkfs [ -V ] [ -t fstype ] [ fs-options ] filesys [ blocks ] |
▷ mkfs 명령어는 아래와 같은 리눅스 파일 시스템을 만든다.
mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.cramfs, mkfs.msdos, mkfs.ntfs, mkfs.vfat … 등등 |
▷ 기본적인 사용 방법 예:
$ sudo mkfs -t ext3 /dev/sdb1 | sdb1에 ext3 파일시스템 생성. |
$ sudo mkfs -t ext3 -v -c /dev/sdb1 | 배드 플록 검사와 함께 좀 더 자세한 출력 요구. |
$ sudo mkfs.ext3 -c /dev/sdb1 | 위 명령어와 동일한 경과 |
[ 가상 파일시스템 생성 ] | |||||||||||
♧ 물리적으로 고정된 디스크 파티션을 직접 생성하지 않고 특정 파일시스템 유형을 테스트 하고자 한다면 가상 파일시스템을 사용할 수 있다. (라이브 CD를 만들거나 가상 운영체제를 실행하는 경우에 유용)
▷ 1GB 크기의 빈 디스크 이미지 파일을 생성 & 포맷 & 마운트
☞ dd 명령어로 204800 블록(약 1GB)의 빈 디스크 이미지 생성. ☞ mkfs 명령어로 사용자가 선택한 유형의 파일시스템을 생성. → 실제 블록 디바이스가 아니기 때문에 경고 출력 ☞ 가상 파일시스템은 다른 파일시스템과 동일한 방법으로는 마운트 할 수 없다. → 마운트할 디렉토리를 생성한 다음, 파일(mydisk)를 루프 디바이스(-o loop)로서 마운트 해야 함 → mount 명령 실행시 root 권한 필요
▶ 가상 파일시스템 /mnt/image 접근 사용.
☞ 가상 파일시스템의 마운트를 해제한 다음, 파일을 다른 시스템으로 이동시키거나 다른 곳에서 사용하기 위해 CD에 기록해 둘 수 있다. ☞ 만약 이 가상 파일시스템이 더 이상 필요 없다면 단순히 파일을 삭제. |
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap7 #03] - (2) 파일시스템 마운트 & 언마운트(mount, umount) (0) | 2011.08.10 |
---|---|
[Chap7 #03] - (1) fstab 파일의 파일시스템 마운트 (0) | 2011.08.09 |
[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs) (0) | 2011.08.08 |
[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted) (0) | 2011.08.08 |
[Chap7 #01] - 파일시스템 기초 이해 (0) | 2011.08.07 |
♧ 디스크 파티션과 관련하여 라벨(label)이라는 용어는 두 가지 다른 의미를 가짐.
⌒ 디스크 라벨은 parted 출력에서 볼 수 있뜻이 파티션 테이블의 또 다른 이름.
⌒ 파티션 라벨은 각각의 개별 파티션이 가진 이름을 의미.
■ e2label - 리눅스 파일시스템(ext2,ext3,ext4) 라벨 변경.
e2label device [ new-label ] |
▷ e2label 명령어를 사용하여 파티션의 라벨을 출력.
$ sudo e2label /dev/sda2 /home |
▷ e2label 명령어로 파티션 라벨 설정.
$ sudo e2label /dev/sda2 datapartition |
▷ /etc/fstab에서도 파티션을 마운트하기 위해 파티션라벨을 사용할 수 있다.
LABEL=/boot | /boot | ext3 | defaults | 1 2 |
☞ 그러나 라벨 변경 작업으로 인해 시스템이 부팅하지 못하는 경우를 주의.
■ findfs - UUID나 LABEL을 이용하여 파일시스템(or 파티션) 찾기
findfs LABEL=label findfs UUID=uuid |
▶ findfs 명령어를 사용하여 label 이나 uuid로 파티션 찾기.
$ sudo findfs LABEL=datapartition /dev/sda2
$ sudo findfs UUID=01b059a5-5924… /dev/sda2 |
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap7 #03] - (1) fstab 파일의 파일시스템 마운트 (0) | 2011.08.09 |
---|---|
[Chap7 #02] - (3) 파일시스템 포맷(mkfs), 가상 파일 생성 (0) | 2011.08.09 |
[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted) (0) | 2011.08.08 |
[Chap7 #01] - 파일시스템 기초 이해 (0) | 2011.08.07 |
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum) (0) | 2011.08.07 |
♧ 전통적으로 PC 하드디스크는 마스터 부트 레코드(MBR)가 포함된 32bit PC-BIOS
파티션 테이블을 사용해왔다. 이러한 조건 때문에 파티션 하나의 크기는 최대 2TB
가 한계이며, 각 드라이브당 네 개의 주(primary) 파티션만을 가질 수 있었다.
확장 파티션은 이러한 주 파티션의 개수의 제한을 극복하기 위한 방법이다.
최근에는 2TB파티션 용량 제한을 해결하기 위해 PC-BIOS 파티션 테이블을
GTP(GUID 파티션테이블)로 대체 하고 있다.
기존 디스크 파티션 작업을 위한 표준 명령어로는 fdisk가 있다. 그러나 fdisk는
현재 새로운 GTP 파티션을 지원하지 못하기 때문에 사용빈도가 줄어들 것이다.
대신 적극적으로 지원받고 있는 새로운 명령어인 parted가 부각되고 있다.
⌒그래픽 파티셔닝 툴 : gparted, qtparted
■ fdisk를 사용하여 디스크 파티션 변경
♧ fdisk 명령어는 디스크 파티션을 나열하고 변경하는데 유용한 툴.
▶ 파티션 정보 출력
$ sudo fdisk -l
Disk /dev/sda: 19.3 GB, 19327352832 bytes 255 heads, 63 sectors/track, 2349 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0003ed61
Device Boot Start End Blocks Id System /dev/sda1 * 1 2220 17824768 83 Linux /dev/sda2 2220 2350 1046529 5 Extended /dev/sda5 2220 2350 1046528 82 Linux swap / Solaris |
☞ 리눅스 커널 2.6.20 버전부터 IDE와 SCSI 디스크 모드 /dev/sd? 디바이스명 사용.(여기서 ? 표시는 a,b,c 등)
우분투의 오래된 버전은 SCSI 디스크와 USB디스크만 /dev/sd?를 사용하며,
IDE 하드드라이브는 /dev/hd?를 사용했다.
☞ 특정 디스크에 대한 파티션 목록 출력 : $ sudo fdisk -l /dev/sdb
▶ 간략한 fdisk 명령어 사용 예:
$ sudo fdisk /dev/sdb | |
Command (m for help): m | 도움말 출력 |
Command (m for help): d Partition number (1-4): 1 | 파티션 삭제 요청 삭제할 파티션 번호 입력 |
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-130, default 1): 1 Last cylinder … +size{K,M,G} (1-130, default 130): 130 | 새로운 파티션 생성
확장 파티션 주 파티션 주 파티션 선택 주 파티션 번호 1번 선택 시작 위치 선택(또는 그냥 엔터) 끝 위치 선택 (또는 그냥 엔터) |
Command (m for help): a Partition number (1-4): 1 | 부팅 가능한 파티션 선택 부팅 가능한 파티션 번호 입력 |
Command (m for help): t Hex code (type L to list codes): L Hex code (type L to list codes): 82 | 파일시스템 유형 선택 선택할 코드 리스트 출력 스왑 파티션으로 지정 |
Command (m for help): w | 변경 내용 파티션 테이블에 쓰고 종료 |
■ sfdisk를 사용하여 파티션 테이블 복사
♧ 디스크 파티션 테이블을 백업하거나 복사하는 경우 sfdisk 사용
$ sudo sfdisk -d /dev/sda > sda-table | 파티션 테이블을 파일로 복사 |
$ sudo sfdisk /dev/sda < sda-table | 파일로부터 파티션 테이블을 복구 |
$ sudo sfdisk -d /dev/sda | sfdisk /dev/sdb | 디스크에서 다른 디스크로 파티션 테이블 복사 |
■ parted를 사용하여 디스크 파티션 변경
♧ fdisk와 같이 parted 역시 디스크 파티션 정보를 확인하거나 변경하는 툴
▶ 디스크 파티션 목록 출력
$ sudo parted /dev/sda print Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 19.3GB Sector size (logical/physical): 512B/512B Partition Table: msdos
Number Start End Size Type File system Flags 1 1049kB 18.3GB 18.3GB primary ext4 boot 2 18.3GB 19.3GB 1072MB extended 5 18.3GB 19.3GB 1072MB logical linux-swap(v1) |
▶ 대화식 모드
$ sudo parted GNU Parted 2.3 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. |
☞ 특정 디스크 파티션 작업 : $ sudo parted /dev/sdb
※ fdisk와는 다르게, parted는 별도의 쓰기 과정 없이 파티션에 변경 작업을 즉시 적용. 따라서 단순히 parted를 종료하는 것으로는 어떠한 변경도 되돌릴 수 없기 때문에 신중하게 작업해야 함. |
▶ 간략한 parted 명령어 사용 예:
$ sudo parted /dev/sdb | |
(parted) help mklabel | 특정 도움말 자세히 출력 |
(parted) mklabel msdos | 새로운 디스크 레이블 만듬(리눅스: msdos) |
(parted) rm Partition number? 1 | 파티션 삭제 요청 삭제할 파티션 번호 입력 |
(parted) mkpart Partition type? primary/extended? primary File system type? [ext2]? ext3 Start? 1 End? -1 | 새로운 파티션 생성 파티션 타입 파일 시스템 타입 시작 위치 끝 위치 (-1: 끝까지 의미) |
(parted) print | 파티션 테이블 출력 |
(parted) quit | 종료 |
☞ 명령어와 함께 입력 (예: rm 1, mkpart primary ext3 0 -1)
☞ parted의 mkpartfs 명령은 ext3 파티션을 제대로 생성하지 못하므로 가급적 사용을 피한다
☞ 일반적으로 parted는 ext3, ext4 파일시스템 지원이 미비 하므로 mkfs.ext? 명령 이용하여 파티션 포맷.
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap7 #02] - (3) 파일시스템 포맷(mkfs), 가상 파일 생성 (0) | 2011.08.09 |
---|---|
[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs) (0) | 2011.08.08 |
[Chap7 #01] - 파일시스템 기초 이해 (0) | 2011.08.07 |
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum) (0) | 2011.08.07 |
[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr) (1) | 2011.08.07 |
파일시스템은 파일, 디렉토리, 디바이스, 그리고 리눅스 시스템을 구성하는 다른 요소들에
대한 구조적 체계를 제공한다. 리눅스는 다양한 파일시스템 유형을 지원할 뿐만 아니라,
이 파일시스템으로 구성되어 있는 다양한 미디어(하드디스크, CD, USB 디스크, ZIP 드라이브 등) 역시 지원.
디스크 파티션과 이들 파티션에 파일시스템을 생성하고 관리하는 작업은 리눅스 시스템 관리에 있어
가장 핵심적인 작업 가운데 하나이다. 파일시스템에 문제가 생길 경우, 컴퓨터 하드디스크 또는
usb 디스크 같은 이동식 저장장치에 저장되어 있는 중요한 데이터를 잃을 가능성이 아주 높기 때문이다.
▷ 리눅스에서 요구하는 기본적 파일시스템 환경을 위한 세 개의 파티션 구성
- 부트로더 및 리눅스커널을 저장하는 부트 파티션,
- 루트 파일시스템을 위한 파티션
- 스왑 파티션(RAM에 데이터를 저장할 공간이 부족할 경우 사용)
(3 개의 파티션으로 나누는 것은 항상 이상적인 형태는 아니고, 시스템의 사용목적과 조건에 따라 달라질 수 있음)
▶ 리눅스에서 지원하고 있는 대표적인 파일시스템 유형들
[ 파일시스템 유형 ] | [ 설 명 ] |
ext2 | ext3 파일시스템이 개발되기 이전 버전의 파일시스템으로, (저널링 기능은 제공하지 않음) |
ext3 | 리눅스에서 일반적으로 사용되고 있는 파일시스템으로, 안전한 데이터 관리와 비정상적인 종료 후에 신속하게 재부팅하기 위한 저널링 기능 지원 |
iso9660 | High Sierra 파일시스템(CD-ROM의 초기 표준으로 사용)에 기초한 파일시스템으로, 로그 파일 이름과 다른 정보 (파일 퍼미션, 소유권, 링크)를 지원하기 위한 Rock Ridge 확장을 포함하고 있다. 현재 CD-ROM의 표준 파일 시스템. |
jffs2 | USB 디스크와 같은 플래시 드라이브를 효과적으로 이용할 수 있도록 고안된 저널링 플래시 파일시스템(JFS)의 두번째 버전(JFFS2). |
jfs | IBS OS/2 워프 운영체제에 사용되었던 파일시스템으로, 대용량의 파일시스템과 고성능을 요하는 환경에 적합하도록 개량. |
msdos | MS-DOS 파일시스템. 플로피디스크와 같이 오래된 MS-DOS 파일시스템을 마운트할 때 사용. |
ntfs | 윈도우에서 사용하는 파일시스템의 하나로, 윈도우 시스템 (다중 부팅 환경 또는 이동식 드라이브 등)과 파일을 공유해야 할 때 유용. |
ReiserFS | SUSE, Slackware와 다른 리눅스 시스템에서 기본으로 사용하고 있는 저널링 파일시스템. |
squashfs | 압축되고, 읽기전용의 파일시스템으로 많은 리눅스 라이브CD에서 사용. |
swap | 데이터가 넘쳐 RAM에 여유가 없을 경우, 임시적으로 넘치는 데이터를 저장하는 목적의 SWAP 파티션에 사용되는 파일시스템. |
ufs | 썬마이크로시스템즈의 솔라리스와 SunOS 운영체제에서 사용하고 있는 파일시스템 |
vfat | 확장 FAT(VFAT) 파일시스템. 윈도우 시스템 (듀얼 부팅 환경 또는 이동식 드라이브 등)과 파일을 공유해야 할 때 유용. |
xfs | 고성능을 요하는 환경을 위한 저널링 파일시스템으로, 시스템이 대용량 데이터를 관리할 수 있으며, 초당 수 기가 바이트를 전송할 수 있도록 해줌. |
☞ 이 표에 소개된 파일시스템뿐 아니라, 네트워크상의 공유를 목적으로 사용되는 파일시스템도 있다.
로컬 시스템에서 보자면 이들 네트워크 공유 파일시스템 역시 ext3, ntfs 등과 같은 파일시스템일 것이다.
그렇지만 이 파일시스템은 모두 Samba(smbfs 또는 cifs 파일시스템 유형), NFS(nfs), NetWare(ncpfs)와
같은 프로토콜을 통해 네트워크에 공유될 수 있다.
모든 파일시스템 유형이 새로운 파일시스템에 적합하거나 모든 리눅스 버전에서 지원되는 것은 아니다.
예를 들어, minix(Minix 시스템용), befs(BeOS 시스템용), affs(Amiga 시스템용) 같은 파일시스템들은
이들 시스템에서 사용되었던 오래된 백업 미디어를 마운트하거나 접근해야 할 경우에만 유용하다.
물론 유명한 파일시스템이라고 해서 완전히 지원되는 것은 아니다.
reiserfs 파일시스템은 우분투 버전 중 Kubuntu에서 쓰기 기능이 지원되지 않는다.
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap7 #02] - (2) 파일시스템 라벨 작업(e2label, findfs) (0) | 2011.08.08 |
---|---|
[Chap7 #02] - (1) 하드디스크 파티션 나누기(fdisk, sfdisk, parted) (0) | 2011.08.08 |
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum) (0) | 2011.08.07 |
[Chap4 #05] - 확장 파일시스템의 파일 속성 변경(lsattr, chattr) (1) | 2011.08.07 |
[Chap4 #04] - 파일 복사하기(cp, dd) (0) | 2011.08.07 |