2011. 8. 10. 00:55

■ 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 명령 기본적인 사용 예:

▶ 마운트된 로컬 및 원격지 파일시스템 목록보기

$ mount

/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)

proc on /proc type proc (rw,noexec,nosuid,nodev)

none on /sys type sysfs (rw,noexec,nosuid,nodev)

 

▶ 특정 파일시스템 유형을 가진 목록만 보기 (-t 옵션 사용)

$ mount -t ext4

/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0)

/dev/sdb1 on data type ext4 (rw)

 

/dev/sdb1 디바이스를 /mnt/mymount로 마운트 (-v 옵션 : 자세한 정보 출력)

$ sudo mount -v /dev/sdb1 /mnt/mymount/

mount: you didn't specify a filesystem type for /dev/sdb1

I will try type ext4

/dev/sdb1 on /mnt/mymount type ext4 (rw)

☞ 파일시스템 유형을 명시하지 않고 경고를 출력하며, 알아서 ext4로 시도하여 마운트 함.

 

▶ 마운트할 파일시스템 유형을 명시적으로 지정 (-t 옵션 사용)

$ sudo mount -v -t ext4 /dev/sdb1 /mnt/mymount

/dev/sdb1 on /mnt/mymount type ext4 (rw)

 

▶ 마운트 옵션 지정 (-o 옵션 사용)

/* 읽고/쓰기(rw) 모드 지정 */

$ sudo mount -v -t ext4 -o rw /dev/sdb1 /mnt/mymount

/dev/sdb1 on /mnt/mymount type ext4 (rw)

/* 읽기전용(ro) 모드 지정 */

$ sudo mount -v -t ext4 -o ro /dev/sdb1 /mnt/mymount

/dev/sdb1 on /mnt/mymount type ext4 (ro)

/etc/fstab 파일의 네 번째 필드와 동일한 효력을 가짐.

-o 옵션과 콤마로 구분된 옵션들을 입력하여 구제적인 마운트 옵션을 지정해줄 수 있음.

 

remount 옵션 - 이미 마운트되어 있는 파일시스템의 옵션 변경.

/* 만약 이미 마운트 되어 있다면 경고 메시지와 함께 마운트 되지 않는다 */

$ sudo mount -v -t ext4 -o ro /dev/sdb1 /mnt/mymount

mount: /dev/sdb1 already mounted or /mnt/mymount busy

mount: according to mtab, /dev/sdb1 is already mounted on /mnt/mymount

/* remount 옵션을 사용하여 한번의 명령으로 언마운트하고 새로운 옵션으로 다시 마운트 */

$ sudo mount -v -o remount,rw /dev/sdb1 /mnt/mymount

/dev/sdb1 on /mnt/mymount type unknown (rw)

☞ 읽기 전용으로 마운트되어 있는 파일시스템을 읽기전용으로 다시 마운트.

 

--bind 옵션 - 마운트되어 있는 파일시스템을 다른 위치에 한번 더 마운트.

$ sudo mount -v --bind /mnt/mymount /tmp/mydir

/mnt/mymount on /tmp/mydir type none (rw,bind)

 

$ mount | grep /mnt/mymount

/dev/sdb1 on /mnt/mymount type ext4 (rw)

/mnt/mymount on /tmp/mydir type none (rw,bind)

☞ 동일한 파일시스템을 서로 다른 두 개의 마운트 지점에서 접근할 수 있게 되었다.

☞ 새로운 마운트 지점 역시 기존과 같은 옵션을 사용.

 

--move 옵션 - 마운트되어 있는 파일시스템의 마운트 지점을 다른 위치로 이동.

$ sudo mount -v --move /mnt/mymount /tmp/mydir

/mnt/mymount on /tmp/mydir type none (rw)

 

$ mount | grep /dev/sdb1

/dev/sdb1 on /tmp/mydir type ext4 (rw)

 

 

 

[ fstab 파일에 기술되어 있는 파일시스템을 마운트 하는 세 가지 방법 ]

mount -a [-t type] 라고 하면 fstab 에서 기술되어 있는 모든 파일 시스템을 마운트 시킨다.

② 그냥 디바이스명만 써주거나 또는 마운트 포인트(마운트될 디렉토리)만 적어주면 된다.

$ sudo mount -v /dev/sdb1

디바이스명을 사용해 파일시스템 마운트

$ sudo mount -v /mnt/mymount

마운트 지점을 사용해 파일시스템 마운트

③ 다음과 같이 fstabuser라는 옵션이 적혀 있다면, 누구든 마운트 가능.

/dev/sdb1 /data ext4 ro,user,noauto,async 0 0

 

 

 

[ 루프백 마운트 ]

♧ 파일을 블럭 디바이스 처럼 엑세스 할 수 있게 해주는 가상의 장치.

 

스왑 파일을 생성하는 것처럼, 일반 파일시스템도 파일 속에 생성할 수 있다.

이러한 가상 파일시스템은 루프백 마운트라고 하는 방법으로 마운트 해야 한다.

(다운로드받은 리눅스 설치 CD또는 라이브 CD등을 마운트하려는 경우)

 

▷ loop장치가 명시되지 않으면 ( -o loop라는 옵션만 주면)

mount는 사용하지 않은 loop장치를 찾아서 사용

 

▶ CD 이미지파일(iso9660)을 시스템에 마운트

$ sudo mount -v -t iso9660 -o loop /tmp/myimage.iso /mnt/mymount

mount: going to use the loop device /dev/loop0

/tmp/myimage.iso on /mnt/mymount type ext3 (rw, loop=/dev/loop0)

loop : 명시적으로 /dev/loop* 를 지정하지 않으면 사용하지 않는 loop 디바이스를 자동으로 지정.

 

▶ USB 디스크 부트 이미지 파일을 시스템에 마운트.

$ sudo mount -v -o loop /tmp/diskboot.img /mnt/mymount

mount: going to use the loop device /dev/loop0

mount: you didn't specify a filesystem type for /dev/loop0

I will try type vfat

/tmp/diskboot.img on /mnt/mymount type vfat (rw,loop=/dev/loop0)

 

♧ 루프백 디바이스 상태에 관한 정보를 보고 싶다면 losetup 명령 사용.

▶ 마운트된 루프백 디바이스를 보여준다.

$ sudo losetup /dev/loop0

/dev/loop0: [0807]:1009045 (/tmp/diskboot.img)

 

▶ 마운트된 루프백 디바이스를 강제로 언마운트

$ sudo losetup -d /dev/loop1

☞ 만약 루프백 마운트에 문제가 발생해 언마운트할 수 없다면 다음 명령어를 사용하여 분리작업 시도

 

 

 

 

■ umount 명령어를 사용해 파일시스템 언마운트 하기

♧ 파일시스템의 마운트 해제는 umount명령을 사용한다.

 

umount [-hV]

 

    umount -a [-dflnrv] [-t vfstype] [-O options]

    umount [-dflnrv] {dir | device}...

 

 

umount 명령 기본적인 사용 예:

♧ 마운트와 마찬가지로 디바이스명 또는 마운트 지점을 이용해 언마운트 할 수 있다.

bind 옵션(하나의 디바이스, 여러 개의 마운트 지점)으로 마운트 했을 경우 발생할 수 있는 혼란을 피하고 싶다면

가급적 마운트 지점을 이용해 언마운트 하도록 한다.

 

▶ 디바이스명을 사용해 언마운트.

$ sudo umount -v /dev/sda1

/dev/sdb1 umounted

 

▶ 마운트 지점을 사용해 언마운트.

$ sudo umount -v /mnt/mymount/

/tmp/diskboot.img umounted

 

▶ 언마운트가 되지 않을 경우

$ sudo umount -v /mnt/mymount

umount: /mnt/mymount: device is busy.

(In some cases useful info about processes that use

the device is found by lsof(8) or fuser(1))

☞ 만약 디바이스가 사용 중이라면 'device is busy' 라는 메시지가 출력되면서 언마운트할 수 없을 것.

(실패하는 일반적인 원인으로, 마운트된 파일시스템의 디렉토리를 사용하고 있는 쉘이 실행중인 경우가 많음)

 

드물지만 'device is busy'의 정확한 원인을 알 수 없을 경우 :

/* mymount 파티션에 열려있는 파일을 찾는다 */

$ sudo lsof | grep mymount

bash 9341 devanix cwd DIR 7,0 4096 2 /mnt/mymount

☞ devanix 유저가 실행한 PID 9341이 bash 쉘 프로세스가 마운트 지점을 사용하고 있다는 것을 확인.

(결국 이 bash 프로세스가 mymount 파티션의 언마운트를 방해하고 있었던 것)

 

▶ -l 옵션 : 지연된 언마운트(lazy umount) 사용.

/* 지연된 언마운트를 실행 */

$ sudo umount -vl /mnt/mymount/

☞ 'device is busy'로 언마운트할 수 없을 때,

이를 해결하기 위한 또 다른 방법으로 지연된 언마운트(lazy umount)가 있다.

☞ 지연된 언마운트(lazy umount)는 디바이스가 사용되지 않을 때까지 대기한 후에

디렉토리 트리로부터 파일시스템을 언마운트한다.

 

▷ 그밖에 이동식 저장장치를 언마운트할 때에는 eject 명령어를 사용할 수 있다.

eject를 사용하면 CD파일시스템이 언마운트되고 드라이브에서 CD가 자동으로 배출 된다.

$ sudo eject /dev/cdrom

 

Posted by devanix