Fstab

fstab **fstab**(파일 시스템 테이블의 약자)은 유닉스 및 유닉스 계열 컴퓨터 시스템의 `/etc` 디렉터리에서 일반적으로 발견되는 시스템 파일이다. `/etc/fstab` 파일은 `util-linux` 패키지의 유틸리티(예: `mount` 및 `findmnt`)에서 사용되지만, 이에 국한되지 않고 `systemd`에서 `systemd-fstab-generator`를 통해 부팅 시 자동 마운트를 위해 처리되기도 한다. fstab 파일은 일반적으로 사용 가능한 모든 디스크 파티션과 기타 디스크 기반이 아닐 수도 있는 파일 시스템 및 데이터 소스 유형을 나열하고, 이들이 어떻게 초기화되거나 더 큰 파일 시스템 구조에 통합될지를 나타낸다. fstab 파일은 `mount` 명령에 의해 읽히는데, 이 명령은 부팅 시 자동으로 실행되어 전체 파일 시스템 구조를 결정하고, 이후 사용자가 `mount` 명령을 실행하여 해당 구조를 수정할 때 다시 읽힌다. fstab 파일을 적절하게 생성하고 유지하는 것은 시스템 관리자의 의무이다. fstab은 기본적인 시스템 구성에 사용되지만, 다른 용도로는 자동 마운트 메커니즘으로 대체되었다. 이 파일은 일부 유닉스 버전에서 다른 이름을 갖는다. 예를 들어, 솔라리스 시스템에서는 `/etc/vfstab`에 있다.
# 현대적 사용
fstab 파일은 디스크 파티션 및 기타 파일 시스템과 작동하는 프로그램에 의해 읽히며 자동으로 유지 관리되지 않는다. 대신 시스템 관리자 또는 때로는 운영 체제 설치 프로그램에 의해 작성된다. 그러나 일부 관리 도구는 fstab을 자동으로 구축하고 편집하거나, 그래픽 편집기 역할을 할 수 있다. 현대 리눅스 시스템은 fstab에 의존하는 대신 udev를 자동 마운터로 사용하여 장치(핫 스와핑과 같은 MP3 플레이어나 디지털 카메라)의 핫 스와핑을 처리한다. pmount와 같은 프로그램은 일반 사용자가 해당 fstab 항목 없이 파일 시스템을 마운트 및 언마운트할 수 있도록 허용한다. 전통적인 유닉스는 항상 특권 사용자(루트 사용자 및 wheel 그룹의 사용자)가 해당 fstab 항목 없이 장치를 마운트하거나 언마운트할 수 있도록 허용했다.
# 예시
다음은 일반적인 리눅스 시스템의 fstab 파일 예시이다. # device-spec mount-point fs-type options dump pass LABEL=/ / ext4 defaults 1 1 /dev/sda6 none swap defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 # Removable media /dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,ro 0 0 # NTFS Windows 7 partition /dev/sda1 /mnt/Windows ntfs-3g quiet,defaults,locale=en_US.utf8,umask=0,noexec 0 0 # Partition shared by Windows and Linux /dev/sda7 /mnt/shared vfat umask=000 0 0 # Mounting tmpfs tmpfs /mnt/tmpfschk tmpfs size=100m 0 0 # Mounting cifs //cifs_name/store /store/pingu cifs credentials=/root/smbpass.txt 0 0 # Mounting NFS nfs_name:/store /store nfs rw 0 0 fstab에 있는 레코드의 순서는 fsck(8), mount(8), umount(8)가 fstab을 순차적으로 반복하고 정의된 순서로 마운트하기 때문에 중요하다.man 5 fstab 빈 줄과 "#"으로 시작하는 주석 줄은 무시된다. 각 행 내의 공백 또는 탭으로 구분된 필드는 특정 순서로 나타나야 한다: # device-spec – 이 항목이 참조하는 파티션 또는 데이터 소스를 지정하는 장치 이름, 레이블, UUID 또는 기타 수단. # mount-point – 마운트 후 장치 내용에 접근할 수 있는 위치. 스왑 파티션 또는 파일의 경우 `none`으로 설정된다. # fs-type – 마운트될 파일 시스템의 유형. # options – 부팅 시 자동으로 마운트되는지 여부, 어떤 사용자가 마운트하거나 접근할 수 있는지, 쓰기 또는 읽기 전용인지, 크기 등 파일 시스템의 다양한 다른 측면을 설명하는 옵션. 특수 옵션 `defaults`는 파일 시스템 유형에 따라 미리 결정된 옵션 집합을 나타낸다. # dump – dump 프로그램에 의해 파일 시스템이 백업되어야 하는지 여부와 빈도를 나타내는 숫자. 0은 파일 시스템이 자동으로 백업되지 않음을 나타낸다. # pass – fsck 프로그램이 부팅 시 오류에 대해 장치를 확인할 순서를 나타내는 숫자: ::2 - 부팅 후 확인 마지막 두 필드에 값이 없으면 0으로 해석된다. 필요한 경우 첫 번째, 두 번째 및 네 번째 필드의 공백 문자는 40으로 표시된다.
# 모든 파일 시스템에 공통적인 옵션
; `auto` / `noauto` : `auto` 옵션을 사용하면 장치는 부팅 시 또는 mount -a 명령이 실행될 때 자동으로 마운트된다. `auto`는 기본 옵션이다. 장치가 자동으로 마운트되지 않으려면 /etc/fstab에서 `noauto` 옵션을 사용한다. `noauto`를 사용하면 장치는 명시적으로만 마운트할 수 있다. ; `dev` / `nodev` : 파일 시스템에서 블록 특수 장치의 해석 동작을 제어한다. ; `exec` / `noexec` : `exec`는 파티션에 있는 바이너리가 실행되도록 허용하고, `noexec`는 그 반대이다. `noexec`는 /var처럼 바이너리가 없는 파티션에 유용하거나, 사용자가 시스템에서 실행하고 싶지 않은 바이너리가 포함된 파티션, 또는 윈도우 파티션의 경우처럼 시스템에서 실행될 수 없는 바이너리가 포함된 파티션에 유용할 수 있다. ; `rw` / `ro` : 파일 시스템을 읽기/쓰기 또는 읽기 전용 모드로 마운트한다. 파일 시스템을 명시적으로 `rw`로 정의하면 플로피 디스크나 NTFS 파티션과 같이 기본적으로 읽기 전용으로 설정되는 파일 시스템의 일부 문제를 완화할 수 있다. ; `sync` / `async` : 파일 시스템에 대한 입력 및 출력이 수행되는 방식. `sync`는 동기적으로 수행됨을 의미한다. fstab 예시를 보면 플로피 디스크에 사용된 옵션이다. 이는 예를 들어 파일이 플로피 디스크에 복사될 때, 복사 명령이 실행되는 동시에 변경 사항이 물리적으로 플로피 디스크에 기록됨을 의미한다. ; `suid` / `nosuid` : suid 및 sgid 비트의 작동 동작을 제어한다. ; `user` / `users` / `nouser` : `user`는 모든 사용자가 파일 시스템을 마운트할 수 있도록 허용한다. 이는 명시적으로 재정의되지 않는 한 `noexec`, `nosuid`, `nodev`를 자동으로 의미한다. `nouser`가 지정되면 루트만 파일 시스템을 마운트할 수 있다. `users`가 지정되면 users 그룹의 모든 사용자가 볼륨을 언마운트할 수 있다. ; `defaults` : 기본 설정을 사용한다. 기본 설정은 파일 시스템 수준에서 파일 시스템별로 정의된다. ext3 파일 시스템의 경우 tune2fs 명령으로 설정할 수 있다. ext3 파일 시스템의 일반적인 기본값은 `rw,suid,dev,exec,auto,nouser,async`와 동일하다. 최신 Red Hat 기반 시스템은 루트 파일 시스템에서 ACL 지원을 기본으로 설정하지만, 사용자가 생성한 ext3 파일 시스템에서는 설정하지 않는다. XFS와 같은 일부 파일 시스템은 기본적으로 ACL을 활성화한다. 기본 파일 시스템 마운트 속성은 /etc/fstab에서 재정의할 수 있다. ; `owner` (리눅스 전용) : 장치 소유자가 마운트할 수 있도록 허용한다. ; `nofail` : 디스크 마운트에 실패해도 시스템 부팅을 중지하지 않는다. ; `atime` / `noatime` / `relatime` / `strictatime` (리눅스 전용) : 유닉스 stat 구조는 파일이 마지막으로 접근된 시간(atime), 수정된 시간(mtime), 변경된 시간(ctime)을 기록한다. 한 가지 결과는 파일이 읽힐 때마다 atime이 기록되어 성능 저하와 마모 증가를 야기한다는 비판을 많이 받았다. 그러나 atime은 일부 응용 프로그램에서 사용되고 일부 사용자가 원하므로 atime(접근 시 업데이트), noatime(업데이트 안 함) 또는 (리눅스에서) relatime(mtime보다 오래된 경우 atime 업데이트)으로 구성할 수 있다. 리눅스 2.6.29까지는 atime이 기본이었고, 2.6.30부터는 relatime이 기본이다.Linux 2 6 30 at Linux Kernel Newbies
# 파일 시스템별 옵션
`mount`가 지원하는 특정 파일 시스템에 대한 많은 옵션이 있다. 아래에는 일반적으로 사용되는 일부가 나열되어 있다. 전체 목록은 mount 설명서에서 찾을 수 있다. 이들은 리눅스용이며, 전통적인 유닉스 계열 시스템은 일반적으로 유사한 기능을 제공했지만 약간 다른 구문이나 형식을 가졌다.
## ext2
; `check=[none, normal, strict]` : fsck 검사 수준을 설정한다. ; `debug` : 재마운트 시마다 디버깅 정보를 출력한다. ; `sb=n` : `n`은 파일 시스템의 슈퍼블록으로 사용되어야 하는 블록이다.
## FAT 전용
; `check=[r(elaxed), n(ormal), s(trict)]` : 허용되는 파일명에 대한 정책. `mount(8)`을 참조하라. ; `conv=[b(inary), t(ext), a(uto)]` : DOS UNIX 텍스트 파일 변환을 자동으로 수행한다. `mount(8)`을 참조하라.
## FAT, NTFS
; `windows_names` : 리눅스 파일 시스템은 파일명에 허용되는 문자의 집합이 더 크다. `windows_names`는 볼륨에 허용되는 문자 집합을 Windows에서 허용하는 문자만으로 제한한다. FAT/NTFS가 가장 일반적인 사용 사례이지만, 이 기능은 특정 파일 시스템 유형에만 국한되지 않는다. ; `uid=n`, `gid=n` : 파일 시스템의 모든 파일에 대한 사용자 식별자(uid) 및 그룹 식별자(gid)를 설정한다. ; `umask=nnn, dmask=nnn, fmask=nnn` : 파일 시스템 노드의 마스킹을 제어한다. ::fmask - 파일에만 해당 fstab 파일에 대한 더 자세한 정보는 리눅스 fstab의 맨 페이지에서 찾을 수 있으며, 다른 시스템의 경우 아래를 참조하라.
## NFS
; `addr=ip` : `ip`는 유효한 IP 주소이다.