3.13. 바인드 마운트 및 파일 시스템 마운트 순서
mount
명령의 bind
옵션을 사용할 때, 파일 시스템이 올바른 순서로 마운트되어 있는지를 반드시 확인해야 합니다. 다음의 예에서 /var/log
디렉토리는 /tmp
디렉토리에 바인드(bind) 마운트를 실행하기 전 /var/log
디렉토리가 마운트되어야 합니다:
# mount --bind /var/log /tmp
파일 시스템 마운트 순서는 다음과 같이 결정됩니다:
- 일반적으로 파일시스템 마운트 순서는
fstab
파일에 나타난 파일 시스템 순서대로 지정됩니다._netdev
플래그로 마운트된 파일 시스템 또는 자체init
스크립트를 갖는 파일 시스템은 이러한 순서에서 제외됩니다. - 자체
init
스크립트가 있는 파일 시스템은fstab
파일에 있는 파일 시스템 이후에, 초기화 과정 후반에 마운트됩니다. _netdev
플래그로 마운트된 파일 시스템은 시스템의 네트워크가 활성화되었을 때 마운트됩니다.
GFS2 파일 시스템을 마운트하기 위해 bind 마운트 생성을 필요로하는 설정의 경우 다음과 같이
fstab
파일 순서를 지정할 수 있습니다:
- 바인딩 마운트에 필요한 로컬 파일 시스템을 마운트합니다.
- GFS2 파일 시스템이 마운트된 디렉토리를 바인드 마운트합니다.
- GFS2 파일 시스템을 마운트합니다.
로컬 디렉토리 또는 파일 시스템을 GFS2 파일 시스템에 bind 마운트하는 설정이 필요한 경우,
fstab
파일에 파일 시스템을 올바른 순서로 나열하면 GFS2 init
스크립트가 실행될 때 까지 GFS2 파일 시스템은 마운트되지 않기 때문에 파일 시스템을 마운트하지 않게 됩니다. 이러한 경우, bind 마운트를 실행하기 위해 init
스크립트를 작성하여 GFS2 파일 시스템이 마운트되기 전 까지 bind 마운트되지 않게 합니다.
다음의 스크립트는 사용자 설정
init
스크립트의 예입니다. 이 스크립트는 GFS2 파일 시스템의 두 개의 디렉토리에 두 디렉토리의 바인딩 마운트를 실행합니다. 예에서 /mnt/gfs2a
에 기존 GFS2 마운트 지점이 있어 이는 클러스터가 시작된 후 GFS2 init
스크립트가 실행될 때 마운트됩니다.
예시 스크립트에서
chkconfig
문의 값은 다음을 나타냅니다:
- 345는 스크립트가 시작하는 런레벨입니다
- 29는 시작 우선 순위입니다. 이 경우 26 시작 우선 순위를 갖는 GFS2
init
스크립트 후 시작 시 스크립트가 실행됨을 나타냅니다. - 73은 종료 우선 순위입니다. 이 경우 74 종료 우선 순위를 갖는 GFS2 스크립트 전 종료 시 스크립트가 중지됨을 나타냅니다.
시작 및 종료 값은
service start
및 service stop
명령을 실행하여 나타난 동작을 수동으로 실행할 수 있음을 나타냅니다. 예를 들어, 스크립트 이름이 fredwilma
일 경우, service fredwilma start
를 실행할 수 있습니다.
이 스크립트는
/etc/init.d
디렉토리에 있는 다른 스크립트와 동일한 권한을 갖는 해당 디렉토리에 배치합니다. 그 후 chkconfig on
명령을 실행하여 스트립트를 나타난 런레벨에 연결할 수 있습니다. 예를 들어, 스크립트 이름이 fredwilma
일 경우, chkconfig fredwilma on
을 실행합니다.
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0