[마운트] $ mount, $ umount , '/etc/fstab'

markyang92·2021년 9월 16일
0
post-thumbnail

마운트

  • 마운트: 파일 시스템을 디렉터리 계층 구조의 특정 디렉터리와 연결하는 것
    • 마운트 포인트: 디렉토리 계층 구조에서 파일 시스템이 연결되는 디렉토리를 마운트 포인트
  • 부팅될 때 자동으로 파일 시스템이 마운트 되게 하려면 /etc/fstab 파일에서 설정
  • /etc/fstab 파일의 기능: 파일 시스템의 마운트 설정 정보 저장

$ mount

$ mount: 마운트 정보 출력

$ mount
  • 실제 관리 파일은 /etc/fstab
  • 디바이스파일 / 마운트 포인트 / 파일 시스템 / 권한 등을 출력함

device file | mount point | filesystem type | ( permission, functions...)
sysfs   on  /sys   type sysfs    (rw,hosuid,nodev,noexec,realtime)
/dev/sda1 on /boot/efi type vfat     (rw,.....)


파티션을 마운트포인트에 마운트

$ mount <part> <mp>

  • $ mount <파티션> <마운트 포인트>: 파티션 -> 마운트 포인트마운트
$ sudo mount /dev/sda1 /media/${USER}/BOOT
$ sudo mount /dev/sda2 /media/${USER}/ROOT

  • 마운트 정보 조회
$ mount
...중략...
/dev/sda2 on /media/$USER/ROOT type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)
/dev/sda1 on /media/$USER/BOOT type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

fstab에 있는 대로 전부 마운트

$ mount --all

  • /etc/fstab에 올려져 있는대로 전부 마운트
$ sudo mount --all

$ mount <option>

  • 실제로 mount명령의 옵션은 엄청나게 많다.
  • 마운트 명령의 옵션은 크게 두 개의 카테고리로 나눌 수 있다.
  1. 일반 옵션
  2. 파일시스템 전용 옵션

파티션을 마운트포인트에 마운트 및 옵션

$ mount -t <part> <mp> -o <opt>

$ sudo mount -t vfat /dev/hda1 /dos -o ro,conv=auto
  • -t <file system>으로, Specified file system으로 마운트한다.
  • -o ro,conv=auto는 1) ro Read-only, 2) conv=auto는 텍스트 파일을 DOS 개행 문자(newline format)형식에서 유닉스 스타일로 자동적으로 변환시키도록 커널에 지시한다.

마운트 포인트에 옵션 재정의

$ mount -o <opt> <mp>

$ sudo mount -o <option> <mount point>

e.g.
    $ sudo mount -o norock /media/mycdrom	# /media/mycdrom에 norock 옵션을 사용한다.
    			              		# norock 옵션은 ISO9660 파일 시스템의 Rock Ridge 확장을 끈다.
  • 파일 시스템 옵션을 활성화 시키려면 -o 옵션과 filesystem option을 주면된다.

읽기 전용으로 마운트

$ mount -r <part> <mp>

$ sudo mount -r <partition> <mount point>
  • 파일 시스템 옵션인 (ro)와 같다.

mount가 시스템 런타임 마운트 DB(/dev/mtab) 업데이트 않게 함

$ mount -n

  • -n은 mount가 시스템 런타임 마운트 데이터베이스(/dev/mtab)을 업데이트하지 않도록한다.
    • 만약 -n옵션을 사용하지 않고 mount를 했을 때, 명령이 시스템 런타임 마운트 DB(/dev/mtab)을 업데이트 하지 못하면, mount 명령은 실패한다.
  • 예를 들면, '/' rootfs는 처음에는 ro이기 때문에, rootfs를 재마운트 할 때 '-n' 옵션을 사용하지 않으면 그 마운팅은 실패한다.
    • rootfs (시스템 마운트 데이터베이스)가 처음에는 read-only 이기 때문에, 부팅 시 매우 중요하다.

-n -o remount /

$ sudo mount -n -o remount /
  • 마운트 옵션을 변경해야 한다면, 최근에 마운트 한 파일 시스템을 동일한 마운트 포인트에 재 연결해야하는 상황이 종종 있다.
    • 예: 사고 복구 시 ro 파일 시스템을 rw가능하게 만들기
  • 위 명령은 /를 r/w 로 재 마운팅한다. (-n옵션을 쓰는 이유는 mount 명령의 경우 root가 읽기 전용일 때 시스템 마운트 데이터베이스에 write할 수 없기 때문이다.)
  • 위 명령은 /를 올바른 장치 목록이 /etc/fstab에 있다는 것을 가정하고 있고, 만약 그렇지 않으면 장치를 명시해야한다.

bind 시키기

$ mount --bind <A> <B>

$ mkdir -p /opt/piserver/root
$ mkdir -p /srv/tftp/pi
$ mount --bind /opt/piserver/root /srv/tftp/pi
echo "/opt/piserver/root /srv/tftp/pi none bind 0 0" >> /etc/fstab

$ umount <포인트>

  • $ umount <마운트 포인트>: 마운트 포인트언마운트
  • 터미널이 마운트 포인트위치에 있을 때 umount하면 device is busy
$ sudo umount <언마운트 하고 싶은 곳>

언마운트 옵션

-f: 강제

강제로 umount한다.

$ sudo umount -f <언마운트 하고 싶은 곳>

그 래 도! device is busy 면!

방법 1.
방법 2.


-l: detach later

  • -l, --lazy 옵션: 파일 시스템을 우선 detach하고, clean up things later
$ sudo umount -l <언마운트 하고 싶은 곳>

/etc/fstab

  • /etc/fstab: 마운트 정보를 설정하는 파일로, $ mount 명령도 이 파일을 단지 읽어오는 것
  • 이 파일에 설정하면 파일 시스템이 부팅 시 자동으로 마운트 됨
    • nfs도 mount 명령만 먹여두면, reboot 시 마운트 되어 있지 않음

fstab 항목설명
장치명 UUID ($1)파일 시스템을 유일하게 구분하는 128bit 수
UUID는 시스템의 하드웨어 정보와 시간 정보를 조합해 랜덤으로 생성
UUID로 지정된 장치는 /dev/disk/by-uuid 디렉토리에서 조회 가능
덤프 관련 설정 ($(NF-1))0: dump 불가
1: dump 가능
그냥 여긴 언제나 '0'을 사용함
파일 점검 옵션 ($NF)0: 부팅 시 fsck 안함 (cd-rom, swap, /proc 등)
1: 루트 파일 시스템은 '1'로 선택해야함!!! (파일 점검 옵션이 1인 UUID 부터 fsck가 먼저 동작함)
2: 루트 파일 시스템 이외

fstab 옵션 항목(다중 사용시 ',' 로 연결)설명
defaults일반적인 파일 시스템에 지정하는 속성
rw, nouser, auto, exec, suid 속성을 모두 포함한다.
auto부팅 시, 자동으로 마운트한다.
noauto부팅 시, 자동으로 마운트하지 않는다.
exec실행 파일이 실행되는 것을 허용한다.
noexec실행 파일이 실행되는 것을 허용하지 않는다.
suidsetuid,setgid의 사용을 허용한다.
nosuidsetuid,setgid의 사용을 금지한다.
roread-only
rwr/w 가능
user접근 권한이 없는 사용자들이 특정 항목에 대해 mount를 실행할 수 있게한다.
사용자들이 setuid-root 파일을 다른 시스템과 함께 이동식 미디어에 넣을 수 있기 때문에, CD-ROM 드라이브로 접속을 허용하려고 할 때 유용하다.
이 옵션은 nosuid,noexec,nodev를 설정한다.
nouser일반 사용자의 마운트가 불가능하다. 오직 root만 마운트할 수 있다.
usrquota사용자별로 디스크 쿼터 설정이 가능하다.
grpquota그룹별로 디스크 쿼터 설정이 가능하다.
conv='rule''rule' 기반으로 파일상의 개행 문자들을 변환한다.
1) conv=binary (defulat): 문자를 변환하지 않는다.
2) conv=text: 모든 파일들을 텍스트로 처리한다.
3) conv=auto: 확장자를 기반으로 파일을 변환한다. (예: .jpg 변환 X, .txt 변환)
errors=ext-2 전용 argument
시스템이 파일 시스템을 '마운팅하는 데, 문제가 있을 때! 커널의 동작 명시'
errors=continue (default): 커널이 오류코드를 반환하고 계속해서 실행
errors=remount-ro : 커널이 읽기 전용모드로 다시 마운팅을 시도하라
errors=panic : 마운팅에 문제가 있을 때, 커널에 중단하도록 지시
swswap 용
loop,offset=50331648이미지 파일에서 offset을 두어 마운트함
링크 참고: 링크
port=<PORT>포트번호 지정
_netdevnfs등을 사용할 때 사용되는 옵션. 이 옵션이 없으면 mount가 네트워크 연결보다 먼저 일어나기 때문에 시스템 시작 시, 자동 마운트 되지 않는다.
심한 경우 무한 블록된다.
즉, _netdev 옵션은 '네트워크에 연결후 마운트' 하라는 옵션이다.

fstab에 등록시켜보기

  1. UUID 구하기
    1-1. blkid -o list로 UUID를 구한다.
  • 그냥 /dev/sda1만 써도 된다.

  1. /etc/fstab에 등록한다.
  • 그냥 /dev/sda1을 써서,
    /dev/sda1 /mnt/sda1 ext4 defaults 0 2
    해도 된다.

fstab 대안

  1. 개별적으로 파일 시스템 설정 파일들을 포함하는 디렉토리 사용
    1.1 /etc/fstab.d 디렉토리를 두어 개별적으로 파일 시스템을 설정하는 파일들을 만들어 관리하게함
  2. 파일 시스템을 위해 systemd 유닛을 설정하는 것

profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글