강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 리눅스 마운트(mount)의 다양한 옵션들

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 리눅스 마운트(mount)의 다양한 옵션들




 

 

파일 시스템 개별적인 마운트 옵션

 

 

앞서 mount와 함께 사용되는 옵션에 대해서 기술하였는데, 여기서는 개별 파일 시스템에 특정된 마운트 옵션들에 대해 살펴보도록 한다.

 

 

 

파일 시스템들 중에서 ext2, ext3 ext4 파일 시스템들에 대해서 살펴볼 것이며, 모두 o 플래그 뒤에 기술되는 옵션이다.

 

 

 

이 파일 시스템 외에도 fat, vfat, ntfs, iso9660, nfs, jfs, proc, ramfs, reiserfs, romfs, tmpfs, xfs, Loop Device, devpts, debugfs, cifs mount가 지원하는 다양한 파일 시스템에 대한 옵션들이 존재한다.

 

 

 

이들에 대해서는 man 페이지 등의 자료를 참고하기 바란다.

 

 

 

 

ext2 파일 시스템 마운트 옵션

 

ext2 파일 시스템은 표준 리눅스 파일 시스템이다.

 

 

 

이후 ext3ext4의 버전으로 이어졌다.

 

 

 

현재는 거의 사용되지 않는다.

 

 

 

 

acl 또는 noaclPOSIX 접근 통제 목록을 지원하거나 지원하지 않도록 한다.

 

 

 

 

 

bsddf 또는 minixdfstatfs 시스템 호출의 행동 방식을 결정한다.

 

 

 

minixdf의 경우 f_blocks 필드에 파일 시스템의 전체 블록수를 반환하게 한다.

 

 

 

bsddf의 경우에는 (기본 설정치) ext2 파일 시스템 자체에 의해 사용되고 파일 저장에는 사용되지 않는 블록수를 뺀 값을 반환한다(이 옵션은 /etc/fstab 파일에서 줄 수도 있다). 예를 들면 다음과 같다.

 

 

 

 

 

 

 

 

 

% mount /k -o minixdf; df /k; umount /k

Filesystem 1024-blocks Used Available Capacity Mounted on

/dev/sda6 2630655 86954 2412169 3% /k

% mount /k -o bsddf; df /k; umount /k

Filesystem 1024-blocks Used Available Capacity Mounted on

/dev/sda6 2543714 13 2412169 0% /k

 

 

 

 

 

 

check=none 또는 nocheck

마운트 시에 아무런 점검도 하지 않는다.

 

 

 

 

 

 

 

debug

마운트, 리마운트마다 정보를 출력한다.

 

 

 

 

 

errors=continue / errors=remount-ro / errors=panic

 

오류가 발생했을 때의 반응양식을 정의한다

 

(오류를 무시하고 파일 시스템에 이상이 있더라도 그냥 사용하게 하거나 파일 시스템을 읽기 전용으로 마운트 또는 시스템을 패닉 상태로 두어 중지하도록 할 수 있다).

 

기본 설정치는 파일 시스템의 수퍼블럭에 저장되며 tune2fs(8)를 사용하여 변경할 수 있다.

 

 

 

 

 

grpid 또는 bsdgroups / nogrpid 또는 sysvgroups

새롭게 생성되는 파일에 부여될 기본 그룹 ID를 정의한다.

 

 

 

grpid 가 설정되어 있다면 속한 디렉토리의 그룹 ID를 취한다; 그렇지 않은 경우(기본 설정치), 디렉토리에 setgid 가 설정되어 있지 않는 한 현재 프로세스의 fsgid 를 따른다.

 

 

 

상위 디렉토리에 setgid 가 설정되어 있는 경우 파일은 상위 디렉토리의 gid 를 따르고, 디렉토리가 생성되면 또 다시 setgid 설정을 갖는다.

 

 

 

 

 

 

grpquota / noquota / quota / usrquota

옵션을 쓸 수는 있으나 그냥 무시된다.

 

 

 

 

 

nobh

파일 페이지캐시(pagecache)buffer_heads를 붙이지 않는다(커널 2.5.49 이후)

 

 

 

nouid32

32 비트 UIDGID를 비활성화한다.

 

 

 

 

 

resgid=nresuid=n

ext2 파일 시스템은 파일 시스템의 일정 퍼센트를 다른 용도로 사용한다(기본적으로 5%인데 mke2fs(8)tune2fs(8)을 참고하기 바란다). 이 옵션은 예약된 블록을 누가 사용할 수 있는지 결정 한다(대략 UID, GID를 갖는 누구든 사용할 수 있다고 할 수 있다).

 

 

 

sb=n

블럭 1을 사용하지 않고 블럭 n 을 수퍼블럭으로 사용한다.

 

 

 

파일 시스템이 손상을 입었을 경우에 유용하다.

 

 

 

보통 수퍼블록의 복사본은 매 8192 블록마다 있다.

 

 

 

따라서 1번 블록, 8193번 블록, 16385번 블록 등이다(따라서 대용량 파일 시스템인 경우 수백 심지어 수천 개의 수퍼블록 복사본을 갖는다).

 

 

user_xattr 또는 nouser_xattr

“user.”의 확장된 속성들을 지원하거나 지원하지 않도록 한다.

 

 

 

 

 

ext3 파일 시스템 마운트 옵션

 

ext3 파일 시스템은 ext2 파일 시스템에 저널링 파일로 향상된 버전이다.

 

 

 

따라서 다음 옵션들 뿐만 아니라 ext2와 동일한 옵션들을 지원한다.

 

 

 

 

journal=update

ext3 파일 시스템의 저널을 현재 포맷으로 업데이트한다.

 

 

 

 

 

journal=inum

저널이 이미 존재하면 이 옵션은 무시된다.

 

 

 

ext3 파일 시스템의 저널 파일에 해당하는 inode 번호를 특정한다.

 

 

 

ext3는 해당 inode 번호의 콘텐츠를 덮어 쓰면서 새로운 저널을 생성할 것이다.

 

 

 

 

journal_dev=devnum

외부 저널 장치의 major/minor 번호가 변경되었을 때, 이 옵션은 사용자가 새로운 저널 위치를 특정할 수 있도록 한다.

 

 

 

저널 장치는 devnum에 기술된 그 새로운 major/minor 숫자들을 통해서 확인된다.

 

 

 

 

norecovery/noload

마운트할 때 저널을 로드하지 않도록 한다.

 

 

 

만약 파일 시스템이 제대로 마운트되지 않았다면, 저널 리플레이(replay)를 넘기는 것은 문제를 일으킬 수 있는 파일 시스템이 오류들(inconsistencies)을 포함하도록 할 것이다.

 

 

 

 

data={journal|ordered|writeback}

파일 데이터를 위한 저널링 모드를 지정한다.

 

 

 

메타 데이터(Metadata)가 항상 저널된다.

 

 

 

 

 

- journal : 모든 데이터가 메인 파일 시스템으로 작성되기 전에 저널로 이행된다.

 

 

 

(committed)

- ordered : 이것이 기본 모드이다.

 

 

 

메타 데이터가 저널로 이행되기 이전에 모든 데이터가 메인 파일 시스템에서 직접 강제로 삭제된다.

 

 

 

- writeback : 데이터 순서가 보이지 않도록 한다.

 

 

 

메타 데이터가 저널로 이행된 후에 데이터가 메인 파일 시스템에 작성될 수 있다.

 

 

 

이것은 최상의 처리량 옵션이라는 소문이 있다.

 

 

 

내부 파일 시스템 무결성을 보장한다.

 

 

 

그러나 이것은 충돌과 저널 복구 이후에 오래된 데이터가 파일들로 보이도록 할 수 있다.

 

 

 

 

barrier=0 / barrier=1이것은 barrier 들을 활성화하거나 비활성화할 수 있다.

 

 

 

barrier=0은 이것을 비활성화하고 barrier=1은 활성화한다.

 

 

 

write barriers는 어느 정도 성능을 낮추면서 volatile disk write caches를 이용하기 안전하게 만들면서 저널 이행들(commits)의 적절한 디스크상의 순서를 강제한다.

 

 

 

ext3write barriers가 기본으로 활성화된다.

 

 

 

 

commit=nrsec모든 데이터와 메타데이터를 매 nrsec 초마다 Sync한다.

 

 

 

기본값은 5초이다.

 

 

 

0은 기본값을 의미한다.

 

 

 

 

user_xattr확장된 사용자 속성들을 활성화한다.

 

 

 

 

aclPOSIX 접근 통제 목록들을 활성화한다.

 

 

 

 

ext4 파일 시스템 마운트 옵션

 

ext4 파일 시스템은 대용량 파일 시스템을 지원하는 것에 대한 확장성과 신뢰성 향상을 포함하는 ext3 파일 시스템의 개선된 버전이다.

 

 

 

journal_dev, noload, data, commit, orlov, oldalloc, [no]user_xattr [no]acl, bsddf, minixdf, debug, errors, data_err, grpid, bsdgroups, nogrpid sysvgroups, resgid, resuid, sb, quota, noquota, grpquota, usrquota and [no]bh 옵션들은 ext2ext3와 호환된다.

 

 

 

 

journal_checksum

저널 트랜젝션(transaction)의 체크섬(check sum)을 활성화한다.

 

 

 

이것은 e2fsck에서의 복구 코드와 커널이 커널에서의 오류를 감지할 수 있도록 한다.

 

 

 

이것은 호환가능한 변경이고 구버전의 커널에 의해서는 무시될 것이다.

 

 

 

 

journal_async_commit

commit 블럭이 descriptor 블럭들을 기다리지 않고 디스크에 작성될 수 있다.

 

 

 

활성화되면, 구버전의 커널이 장치를 마운트할 수 없다.

 

 

 

 

journal=update

ext4 파일 시스템의 저널을 현재 포맷으로 업데이트한다.

 

 

 

 

 

barrier=0 / barrier=1 / barrier / nobarrier

이것은 jdb 코드에 write barriers의 사용을 활성화/비활성화하는 것이다.

 

 

 

barrier=0은 비활성화이고, barrier=1은 활성화이다.

 

 

 

또한 이것은 barriers를 지원하는 IO 스택을 요구하며, 만약 jdbbarrier write에 관하여 오류가 나면 경고와 함께 다시 비활성화 된다.

 

 

 

write barriers는 어느 정도 성능을 낮추면서 volatile disk write caches를 이용하기 안전하게 만들면서 적절하게 저널 이행들(commits)의 디스크상 순서를 강제한다.

 

 

 

다른 ext4 마운트 옵션들과 함께 마운트 옵션으로 barriernobarrier을 사용해도 barriers를 활성화하거나 비활성화할 수 있다.

 

 

 

ext4write barriers가 기본으로 활성화된다.

 

 

 

 

inode_readahead_blks=n

이 최적화 파라미터(tuning parameter)ext4의 아이노드 테이블 readahead 알고리즘이 버퍼 캐시로 미리 읽어들일 아이노드 테이블 블록의 최대수를 통제한다.

 

 

 

그 값은 2의 거듭제곱이어야 한다.

 

 

 

기본값은 32 블록이다.

 

 

 

 

stripe=n

mballoc이 할당 크기와 배열(alignment)을 위해 사용할 파일 시스템 블록의 수 RAID5/6 시스템에 대해 이것은 데이터 디스크 파일 시스템 블록들에서의 RAID chunk 크기의 수여야 한다.

 

 

 

 

delalloc

작성(write-out) 시까지 블록 할당을 연기한다.

 

 

 

 

nodelalloc

지연 할당을 비활성화한다.

 

 

 

블록들은 데이터가 사용자로부터 페이지 캐시로 복사될 때 할당된다.

 

 

 

 

 

max_batch_time=usec

ext4synchronous write 작동과 함께 처리하기 위해 추가적인 파일 시스템 작동을 기다려야 하는 시간의 최대량이다.

 

 

 

synchronous write 작동이 이행(commit)I/O 완료의 대기를 강제할 것이기 때문에, 많은 비용이 들지 않고 많은 사용량에서의 이득이 있을 것이며, 어떤 다른 트렌젝션이 synchronous write에 편승할 수 있는지를 알기 위해 약간의 시간이 걸린다.

 

 

 

사용된 알고리즘은 트렌젝션의 이행을 종료하는데 걸리는 (평균에서의) 총시간을 측정함에 의해 자동적으로 디스크 속도에 최적화되도록 설계된다.

 

 

 

이때를 이행 시간(commit time)”이라고 한다.

 

 

 

트렌젝션이 실행되고 있는 시간이 이행 시간보다 적다면, ext4는 다른 작동이 트렌젝션에 합류하는지를 알기 위해 sleeping을 시도할 것이다.

 

 

 

이행 시간은 max_batch_time에 의해 한도가 정해지며, 기본값은 15000us(15ms)이다.

 

 

 

이러한 최적화는 max_batch_time0으로 설정함에 의해 완전히 사라지게 될 수 있다.

 

 

 

 

 

min_batch_time=usec

이 파라미터는 commit 시간을 (위에 기술된 대로) 최소한 min_batch_time인 것으로 설정한다.

 

 

 

0이 기본값이다.

 

 

 

이 파라미터를 증가시키는 것은 대기 시간(latency)을 증가시키지만 매우 빠른 디스크상의 멀티쓰레드, synchronous workloads의 처리량을 향상시킬 수 있다.

 

 

 

 

 

journal_ioprio=prio

commit이 자동하는 동안 kjournald2에 의해서 제출되는 I/O 작동을 위해 사용되어야 하는 I/O 우선권(0부터 7까지이며 0이 최상값이다). 이것의 기본값은 3이며, 이것은 기본 I/O 우선권보다 조금 더 높다.

 

 

 

 

 

abort

디버깅 목적으로 ext4_abort()를 호출한 결과를 시뮬레이트 한다.

 

 

 

이것은 보통 이미 마운트된 파일 시스템을 재마운트하면서 사용된다.

 

 

 

 

auto_da_alloc|noauto_da_alloc

auto_da_alloc이 활성화되면 ext4replace-via-renamereplace-via-truncate 패턴들을 탐지하고, 다음 저널 이행(commit)에서 기본 data=ordered 모드로 새로운 파일의 데이터 블록들이 rename() 작동이 이행되기 전에 디스크에 강제되는 방식으로 모든 지연 할당 블록들이 할당되도록 강제할 것이다.

 

 

 

이것은 ext3과 거의 동일한 수준의 보증을 제공하고, 지연 할당 블록들이 디스크에 강제되기 전에 시스템이 충돌할 때 발생할 수 있는 “zero-length” 문제를 회피한다.

 

 

 

 

discard/nodiscard

ext4discard/TRIM 명령을 블록들이 자유로운 블록 장치들로 내려야 하는 것인지 여부를 통제한다.

 

 

 

이것은 SSD 장치들과 sparse/thinly-provisioned LUNs에 대해 유용하지만, 충분한 테스트가 행해지기 전까지 기본값은 off이다.

 

 

 

 

 

nouid32

32비트 UIDGID를 비활성화한다.

 

 

 

이것은 16비트 값들만 저장하고 기대하는 구버전의 커널들과의 호환성을 위한 것이다.

 

 

 

 

 

resize

파일 시스템의 크기를 마지막에 존재하는 블록 그룹의 끝까지 조정할 수 있도록 하고, 이상의 크기 조정은 온라인 또는 오프라인에서 resize2fs를 가지고 행해져야 한다.

 

 

 

이것은 remount와 함께만 사용될 수 있다.

 

 

 

 

 

block_validity/noblock_validity

이 옵션들은 내부 데이터 구조들 내의 파일 시스템 메타데이터 블록들을 트랙킹하기 위한 커널 내부 기능(in-kernel facility)을 활성화하거나 비활성화하도록 한다.

 

 

 

이것은 다중 블록 할당자와 다른 루틴들이 파일 시스템 메타데이터 블록들과 겹칠 수 있는 extents를 빠르게 찾도록 한다.

 

 

 

이 옵션은 디버깅 목적을 위해 의도되었고, 성능에 부정적으로 영향을 미치기 때문에 기본값은 off로 설정된다.

 

 

 

 

dioread_lock/dioread_nolock

ext4DIO read locking을 사용해야하는지 여부를 통제한다.

 

 

 

dioread_lock 옵션이 지정되면, ext4는 버퍼가 IO가 환성된 후에 초기화된 extent를 기록하고 변경하기 전에 초기화되지 않은 extent를 할당할 것이다.

 

 

 

이 접근은 ext4 코드가 inode mutex를 사용하지 않을 수 있게 하여, 빠른 속도의 스토리지들에 확장성을 향상시킨다.

 

 

 

그러나 이것은 nobh 옵션과 작동하지 않고 마운트가 실패할 것이다.

 

 

 

데이터 저널링과도 작성하지 않고 dioread_nolock 옵션은 커널 경고와 함께 무시될 것이다.

 

 

 

dioread_nolock 코드 패스는 단지 extent 기반의 파일들을 위해서만 사용된다.

 

 

 

이 옵션들의 제한들 때문에, 이것은 기본값으로 off이다.

 

 

 

 

i_version

64비트 아이노드 버전 지원을 활성화한다.

 

 

 

이 옵션의 기본값은 off이다.

 

 

 

 

4) 설명

 

mount는 파일 시스템을 특정 디렉토리에 연결하는 작업이기 때문에 마운트의 대상이 되는 파일 시스템 장치가 어떤 것인지에 대한 정보와 이 파일 시스템을 어느 디렉토리에 연결할 것인지에 대한 정보가 있어야 한다.

 

 

 

이때 연결할 디렉토리를 마운트 포인트라고 부른다.

 

 

 

파일 시스템의 종류에 따라 t 옵션으로 지정해 주어야 한다.

 

 

 

 

예를 들어 /mnt에 윈도우즈 파일 시스템을 mount한다고 가정하자

 

(윈도우즈의 파일 시스템이 fat32 파일 시스템인 경우에 fat 또는 vfat, NTFS인 경우에는 ntfst 옵션과 함께 기술한다).

 

다음은 SCSI 또는 SATA 형식의 두 번째 하드 디스크의 첫 번째 파티션을 /mnt/win 디렉토리에 마운트하는 것이다

 

(앞서 하드 디스크의 장치명에 대해서 살펴본 바 있으므로 장치명은 해당 부분을 참조하기 바란다).

 

 

 

 

 

# mount -t vfat /dev/sdb1 /mnt/win

 

 

 

 

 

 

 

한편, 위와 같은 하드 디스크 외에도 특정 장치의 장치명, 파일 시스템, 마운트포인트를 위와 같은 형식으로 지정하면 마운트가 가능하다.

 

 

 

 

 

그리고 여기에서 파일 시스템마다 파일을 open, read, write를 하는 방법이 달라야 할 것이다.

 

 

 

왜냐하면 각 파일 시스템마다 방법이 틀리기 때문이다.

 

 

 

mount라는 작업은 한편으로 바로 이것을 지정해 주는 것이다.

 

 

 

위 예제에서 /mnt/win 디렉토리로 이동해 보자.

 

 

 

 

 

 

# cd /mnt/win

 

 

 

 

 

 

ext4 파일 시스템에서 파일을 읽고 쓰기를 하다가 /mnt/win 디렉토리에 들어가면 커널에서 vfat 파일 시스템에 관한 함수들이 수행될 것이다.

 

 

 

이것은 커널에 해당 파일 시스템을 제어할 수 있는 기능이 포함되어 있기 때문이다.

 

 

 

그래서 만약 커널에 이 기능을 포함하지 않는다면 해당 파일 시스템을 제어할 수 없을 것이다.

 

 

 

 

다음으로 CD-ROM를 마운트하여 사용해 보자. CD-ROMiso9660 파일 시스템을 사용한다.

 

 

 

따라서 CD-ROM을 마운트할 때에는 t 옵션에 iso9660이라는 파일 시스템 타입을 지정해야 한다.

 

 

 

 

 

 

 

 

 

# mount -t iso9660 /dev/cdrom /mnt/cdrom

 

 

 

 

 

 

 

에러 메시지가 출력되지 않으면 잘 마운트된 것이다.

 

 

 

한편, CD-ROM은 다음과 같이 /etc/fstab에 관련 설정이 되어 있기 때문에 또는 설정을 하면 “mount /mnt/cdrom”과 같은 간단한 방법으로 마운트가 가능하다.

 

 

 

 

 

 

 

 

/dev/cdrom /mnt/cdrom udf,iso9660,noauto,owner,kudzu,ro 0 0

 

 

 

 

 

 

 

CD-ROM 뿐만 아니라 이렇게 /etc/fstab에 마운트 관련 설정을 하여 두면 mount 명령을 내릴 때 장치명이나 마운트 포인트만 지정해도 정상적으로 마운트가 된다(/etc/fstab 파일에 대해서는 앞서 상세히 설명하였다).

 

 

시스템이 시작될 때 이 파일의 마운트 정보를 읽어 들여서 자동으로 마운트를 하게 되는데, rootmount 명령을 사용할 때에도 이 파일이 영향을 미치는 것이다.

 

 

 

물론, 이 파일에 설정되어 있지 않는 파일 시스템도 mount를 할 수 있다.

 

 

 

/etc/fstab 에 설정된 모든 파일 시스템을 마운트하고자 할 때에는 다음과 같이 a 옵션을 붙여서 명령을 내린다.

 

 

 

 

 

 

 

 

# mount a

 

 

 

 

 

 

 

만약 뒤에 파일 시스템을 지정하면 해당 파일 시스템인 경우만 마운트가 된다.

 

 

 

 

 

 

 

 

# mount a t ext4

 

 

 

 

 

 

 

한편, mount 명령은 원칙적으로 root 만 사용할 수 있도록 되어 있지만, /etc/fstab 파일에 user 옵션이 붙어 있는 경우에는 어느 누구든 마운트가 가능하다.

 

 

 

이것은 특히 CD-ROM의 마운트 설정을 할 때 유용하다.

 

 

 

 

이렇게 마운트를 하고 나면 mountumount에 의해 /etc/mtab 파일에 현재 마운트되어 있는 파일 시스템의 목록이 기록된다.

 

 

 

그리고 /proc/mounts에도 마운트 정보가 기록된다.

 

 

 

따라서 이 파일들을 보거나 (옵션 없이) mount 명령을 내리면(또는 “mount v”와 같이 명령을 내린다) 현재 시스템의 마운트 정보를 알 수 있다.

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  124 명