[Linux] fstab 파일에 대한 이해


서버를 관리하는 엔지니어면 대부분 알고 있는 fstab에 대해서 기록하고자 한다.

fstab은 한마디로 “서버 부팅단계에서 마운트되어야 할 볼륨 정보를 담은 파일”이다.

서버 부팅중 에러가 나는 경우의 절반은 fstab이 차지했던 것 같다.
(이제는 별로 그럴 일은 없지만..)

먼저 간단하게 fstab에 예는 아래와 같다.




#
# /etc/fstab
# Created by anaconda on Tue Oct 25 16:27:45 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=8ce3c9de-8217-4378-8b70-b63ce4d6c6a2 /                       xfs     defaults        0 0
UUID=45a9df56-7731-479c-8c8f-f0280b387749 /boot                   xfs     defaults        0 0
/dev/vdb /mnt/a xfs defaults 0 0

/etc/fstab에 존재하고 있으며 크게 6개의 정보로 이루어진다.

  1. 장치명
  2. 마운트 경로
  3. 파일 시스템
  4. 마운트 옵션
  5. dump 설정
  6. fsck 설정

1번 – UUID 또는 /dev/vdb(장치명)으로 표현되는데 디스크의 경우 고유한 UUID를 가지고 있기에 되도록이면 UUID로 설정하고 있다.

2번 – 말 그대로 1번의 디스크(볼륨)을 어디에 마운트할 지 정한다.

3번 – 1번의 디스크(볼륨)을 포맷할 때 사용한 파일 시스템을 작성한다. (ext4, xfs, nfs4 등)

4번 – 마운트 옵션을 선택할 수 있는데 이 부분부터 조금 세세하게 다뤄진다.
defaluts : auto, rw, nouser, exec, suid 옵션을 모두 포함하는 옵션 (대부분이 사용하고 있는 옵션)
auto : 부팅 시 자동 마운트
noauto : 부팅 시 자동 마운트 하지 않음
rw : 읽기, 쓰기 모두 가능하도록 마운트
ro : 읽기 전용 마운트
nouser : root 계정만 마운트 가능
user : 일반 계정도 마운트 가능
exec : 파일 실행 허용
suid : SetUID와 SetGID 허용
nofail : 오류가 발생해도 부팅할 수 있도록 해주는 옵션 (서비스가 자동으로 올라오게 되어있으면 위험한 옵션)

5번 – 파일 시스템의 dump 기능 여부를 설정한다.
0 : dump 되지 않는 파일 시스템
1 : 백업 등의 목적으로 dump 되는 파일 시스템

6번 – 부팅 시 fsck를 통해 파일 시스템 체크할지 설정한다.
0 : 부팅 시 fsck 미실행
1 : 부팅 시 root 파일 시스템 체크 (부팅 시 시간이 소요될 수 있음)
2 : 부팅 시 root 이외의 파일 시스템 체크 (부팅 시 시간이 소요될 수 있음)





Linux에서 주로 마운트할 때 사용하는 명령어는

mount {볼륨} {마운트경로}
mount -a (/etc/fstab에 있는 디스크들을 전부 마운트하고, 에러가 날 시 출력해준다)

umount {마운트경로}
umount -a (/etc/fstab에 있는 디스크들을 전부 언마운트하고, 에러가 날 시 출력해준다)

다만 위 명령어 중 mount만 작성했을 경우 fstab에 자동으로 추가되진 않기에, fstab에 작성 안하고 부팅하면 에러가 발생할 수 있다.

fstab으로 인해 서버 기동에 문제가 있을 경우는 대부분 콘솔로 들어가 작업을 해야한다.