리눅스 파일시스템 관리

시스템 관리자로써 해야 할 또 다른 작업은 파일 시스템을 관리하는 것이다. 이 일의 대부분은 위험하거나 손상된 파일들의 파일 시스템을 주기적으로 검사하는 데 필요한 작업들이다. 따라서 대부분의 배포본들은 부팅 시에 자동으로 파일 시스템을 검사하도록 설정되어 있다. 리눅스에서는 플로피 디스크를 사용하기 위해서 이 작업이 꼭 필요하다.

파일 시스템 마운팅

먼저, 파일 시스템에 대한 몇 가지 개념을 알아보자. 파일 시스템이 시스템에 액세스하기 전에 반드시 디렉토리가 마운트되어 있어야한다. 예를 들면, 플로피에 파일 시스템이 있으면, 그 안의 파일을 액세스하기 위해서 /mnt 같은 임의의 디렉토리에 반드시 마운트시켜야 한다. 디렉토리에 파일 시스템을 마운팅시킨 후에, 그 내용이 디렉토리안에 나타난다. 플로피의 경우, 플로피에 있는 파일들은 디렉토리 /mnt 안에 나타나며, Unmounting을 한 후에는 /mnt 디렉토리는 다시 비여 있게 된다.

하드 드라이브의 파일 시스템도 같다. 시스템은 부트 시에 하드 드라이브의 파일 시스템을 자동으로 마운트시킨다. “root filesystem” 이라고 불리는 것은 디렉토리 “/” 를 마운트한 것이다. 만일 /usr 에 여러 개의 파일 시스템이 존재한다면, /usr 가 마운트되어야 한다. 오직 root 파일 시스템만 있다면, 모든 파일은 그 파일 시스템에 /usr를 포함한 모든 파일이 있게 된다.

명령어 ‘mount’는 파일 시스템을 마운트하는데 사용된다.

  mount -av

위의 명령은 /etc/rc (부트 시 실행되는 시스템 초기화 파일)의 파일로부터 자동으로 실행된다. mount -av 명령은 파일 시스템의 정보와 /etc/fstab 파일의 내용으로 부터 마운트 포인트를 얻는다. fstab파일의 내용은 아래와 유사할 것이다.

  # device directory type options
  /dev/hda2 / ext2 defaults
 /dev/hda3 /usr ext2 defaults
 /dev/hda4 none swap sw
 /proc /proc proc none

첫 번째 필드는 마운트되기 위한 파티션의 디바이스 이름이다. 두 번째 필드는 마운트 포인트이며, 세 번째 필드는 ext2(e2fs)나 minix(미닉스 파일 시스템)같은 파일 시스템의 형태를 지정한다. 마지막 필드는 마운트 옵션이 포함되며, 보통 “default”로 설정되어 있다.

여기서 볼 수 있는 것처럼, 스웹 파티션도 /etc/fstab 에 포함되어 있다. 명령어 ‘swapon -a’ 는 /etc/rc 로부터 실행되며, 이것은 /etc/fstab 의 스웹 디바이스의 목록에서 스웹을 가능하게 하는데 사용된다.

파일 fstab에서 /proc 파일 시스템은 특별한 엔트리이다. /proc 파일 시스템은 시스템 프로세스나 사용 가능한 메모리 등에 대한 정보를 저장하고 있다. /proc가 마운트 되어있지 않으면, ‘ps’ 같은 명령어는 사용할 수 없다.

이와 같이, ‘mount -av’ 명령어는 root 파일 시스템 이외의 모든 파일 시스템을 실제적으로 마운트하며, root 파일 시스템은 커널에 의해 부트 시에 자동적으로 마운트된다. 이 명령을 사용하는 대신에, 아래와 같이 파일 시스템을 손수 마운트 시킬 수 있다.

    mount -t ext2 /dev/hda3 /usr

이 명령은 /dev/hda3 파티션을 “ext2” 파일시스템으로 /usr 안에 마운트시킨다.

그럼 여기서 DOS로 포맷된 디스크를 사용하는 예를 들어보자.

    mkdir driveA
    moune -t msdos /dev/fd0 /driveA
    ls /driveA

이러한 형식으로, 플로피 디스크를 사용할 수 있으며, DOS, minix, ext2fs 등의 파일 시스템을 가지는 플로피 디스크를 읽을 수 있다. 또한, 디스크를 교환하거나 사용이 끝난 후에는 반드시 unmount 시키는 것에 주의해야 하며, ‘shutdown’, ‘halt’ 등의 명령으로 시스템을 종료하면, 자동적으로 다운되기 전에 unmount된다.

파일 시스템 검사

파일 시스템의 위험이나 손상에 대비하기 위해서 종종 체크하는 것이 좋다. 대부분의 시스템은 부트 시에 /etc/rc 파일 안에 있는 명령어에 의해 자동적으로 그 파일 시스템을 체크해준다.

파일 시스템을 체크하는 것은 파일 시스템의 형태에 따라 다르며, ext2fs 파일 시스템은 일반적으로 많이 쓰이는 형태로써 명령어 e2fsck 를 사용한다.

    e2fsck -av /dev/hda2

위의 명령어는 /dev/hda2 의 ext2fs 파일 시스템을 체크하고 에러가 있을 경우 교정한다.

파일 시스템을 체크하기 전에 unmount시키는 것이 보다 안전하다.

   umount /dev/hda2

위의 명령은 /dev/hda2를 unmount시킬 것이고, 후에 파일 시스템을 체크할 수 있다. 예외라면, 일단 부팅된 후에는 root 파일 시스템을 unmount 시킬 수 없다. root 파일 시스템을 체크하기 위해서는 unmount 되어야 하는데, 이것은 따라 boot/root 디스크를 사용하여 부팅 되었을 경우에 가능한데, 이것은 운영되는 프로세스가 사용되는 어떤 파일들도 unmount 시킬 수 없기 때문이다. 예를 들어, 어떤 사용자가 파일 시스템의 커런트 작업 디렉토리에 있다면, unmount 시킬 수 없게 된다. 사용되고 있는 파일 시스템을 unmount시키려 하면 “Device busy”에러를 받을 것이다.

파일 시스템의 형태는 efsck를 비롯한 여려 형태가 있기 때문에, 검사할 파일시스템마다 고유의 검사 프로그램을 사용해야한다. 이런 경우, 간단히 ‘fsck’ 명령어를 사용하면, 파일 시스템의 형태를 자동으로 검출하여 알맞은 검사 프로그램을 동작시켜 해당하는 파일시스템을 검사한다.

파일 시스템을 체크한 후에 바로 재부트하여야 그 파일 시스템에 어떤 에러 교정에 완벽을 기할 수 있다. 예를 들면, 만일 e2fsck가 파일 시스템의 어떤 에러를 교정하였다고 보고하면, 시스템을 재부트하기 위해서 즉시 shutdown -r을 해야 한다. 이것은 fsck 가 에러를 교정한다면, 시스템이 파일 시스템에 대한 정보를 re-sync 하게 허용한다.

물론, /proc파일 시스템은 이런 방법으로도 결코 체크되지 못한다. /proc는 메모리 파일 시스템이며, 커널에 의해 직접 관리되기 때문이다.