Monday, April 9, 2018

CentOS 6.6 리눅스 관리] 3. 파일시스템 Mount/Unmount


안녕하세요. 썬구루입니다. 이번 게시물에서는 생성한 파일시스템을 사용하기 위해 파일시스템과 디렉터리를 연결 짓는 방법이 대해 알아보도록 하겠습니다. 이 방법까지 알게 되면 리눅스 서버시스템에 새로운 디스크를 추가, 인식, 사용하는 데는 어려움이 없을 것이라 생각됩니다.

■ mount 명령

파일시스템과 디렉터리를 연결 짓기 위해 사용되는 명령이다. 파일시스템과 디렉터리를 연결 짓는 작업을 마운트(Mount) 작업이라 한다. 그리고 파일시스템의 연결점(Mount point) 조건은 빈 디렉터리(Empty directory)이다.

마운트 된 파일시스템은 연결점을 통해 접근을 할 수 있다. 그리고 리부팅이 되더라도 자동으로 마운트 되도록 만들기 위해서는 /etc/fstab 파일 수정이 필요하다.


1). 명령 형식

mount [옵션] [DEVICE] [MOUNT POINT]

mount 명령을 단독으로 사용할 경우 이미 마운트 되어 있는 파일시스템의 정보를 보여줍니다. 그리고 옵션 없이 파일시스템을 마운트 할 경우 기본적으로 읽기/쓰기 모드로 동작한다.

2). 옵션

옵 션
내 용
-r
 파일시스템을 읽기 모드로 마운트 한다. 이렇게 하면 파일 읽기만 가능.
-w
 기본 옵션이며 파일시스템을 읽기/쓰기 모드로 마운트 한다.
-t FS_TYPE
 파일시스템 유형을 명시한다. [ ext2, ext3, ext4 등 ]
-o OPTION
 마운트 세부 옵션을 설정하기 위해 사용한다.

  rw : 읽기/쓰기 모드로 마운트 한다.
  ro : 읽기 모드로 마운트 한다.
  suid : setuid, setgid를 허가한다.
  nosuid : setuid, setgid를 불허한다.
  exec : 실행 파일 실행을 허가한다.
  noexec : 실행 파일 실행을 불허한다.
-v
 세부 내용을 출력한다. (Verbos mode)




3). 예제

아래는 /dev/sdc2에 만들어진 파일시스템을 /data02 디렉터리에 마운트 하는 것을 보여준다. df 명령을 사용하면 파일시스템이 마운트 된 것을 확인할 수 있다. 이 파일시스템을 /data02 파일시스템이라 부른다.

[root@sunguru ~]# blkid /dev/sdc2
/dev/sdc2: UUID="7ef26df0-eadb-4c36-b4ce-2e07268342c6" TYPE="ext4"
[root@sunguru ~]#
[root@sunguru ~]# mkdir /data01 /data02
[root@sunguru ~]#
[root@sunguru ~]# mount /dev/sdc2 /data02
[root@sunguru ~]#
[root@sunguru ~]# mount | grep sdc2
/dev/sdc2 on /data02 type ext4 (rw)
[root@sunguru ~]#
[root@sunguru ~]# lsblk /dev/sdc
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdc      8:32   0    4T  0 disk
|-sdc1   8:33   0  1.9T  0 part
`-sdc2   8:34   0  2.1T  0 part /data02
[root@sunguru ~]#
[root@sunguru ~]# df -h /data02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc2       2.2T   73M  2.0T   1% /data02
[root@sunguru ~]# 

아래는 마운트 된 /data02 파일시스템을 언마운트 한 후 다시 읽기 전용 모드로 마운트 되도록 만들기 위해 -r 옵션을 사용하는 것을 보여준다. 그리고 /data02 디렉터리로 이동하여 파일시스템에 접근한 후 touch 명령으로 파일 만들기를 시도하면 명령 실패가 되는 것을 확인할 수 있다.

[root@sunguru ~]# umount /data02
[root@sunguru ~]# df -h /data02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        16G  2.7G   12G  19% /
[root@sunguru ~]#
[root@sunguru ~]# df -h | grep /data02
[root@sunguru ~]#
[root@sunguru ~]# mount -t ext4 -r /dev/sdc2 /data02
[root@sunguru ~]#         
[root@sunguru ~]# lsblk /dev/sdc
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdc      8:32   0    4T  0 disk
|-sdc1   8:33   0  1.9T  0 part
`-sdc2   8:34   0  2.1T  0 part /data02
[root@sunguru ~]#
[root@sunguru ~]# mount | grep data02
/dev/sdc2 on /data02 type ext4 (ro)
[root@sunguru ~]#
[root@sunguru ~]# df -h /data02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc2       2.2T   73M  2.0T   1% /data02
[root@sunguru ~]#
[root@sunguru ~]# cd /data02
[root@sunguru data02]# touch file1
touch: cannot touch `file1': Read-only file system
[root@sunguru data02]# 

아래는 /data02 파일시스템을 언마운트 한 후 다시 마운트 echo.sh 파일을 생성한 후 실행 권한을 부여한 후 실행을 해본다. 그리고 파일시스템을 noexec 옵션을 주어 재 마운트 한 후 echo.sh 파일이 실행되는지를 확인한다.

[root@sunguru ~]# umount /data02
[root@sunguru ~]#
[root@sunguru ~]# mount /dev/sdc2 /data02
[root@sunguru ~]#
[root@sunguru ~]# cd /data02
[root@sunguru data02]#
[root@sunguru data02]# pwd
/data02
[root@sunguru data02]# cat > echo.sh
#!/bin/sh
echo hello
[root@sunguru data02]# more echo.sh
#!/bin/sh
echo hello
[root@sunguru data02]# chmod +x echo.sh
[root@sunguru data02]#
[root@sunguru data02]# ls -l echo.sh
-rwxr-xr-x. 1 root root 21 Jul  1 09:52 echo.sh
[root@sunguru data02]#
[root@sunguru data02]# ./echo.sh
hello
[root@sunguru data02]# cd /
[root@sunguru /]# umount /data02
[root@sunguru /]#
[root@sunguru /]# mount -o rw,noexec /dev/sdc2 /data02
[root@sunguru /]# 
[root@sunguru /]# mount | grep /data02
/dev/sdc2 on /data02 type ext4 (rw,noexec)
[root@sunguru /]#
[root@sunguru /]# cd /data02
[root@sunguru data02]# ls -l
total 20
-rwxr-xr-x. 1 root root    21 Jul  1 09:52 echo.sh
drwx------. 2 root root 16384 Jun 29 17:30 lost+found
[root@sunguru data02]#
[root@sunguru data02]# ./echo.sh
bash: ./echo.sh: Permission denied
[root@sunguru data02]# 





■ umount 명령

이 명령은 마운트 된 파일시스템을 마운트 포인트인 디렉터리와 연결을 끊기 위해 (unmount) 사용되는 명령이다. 단 파일시스템에 존재하는 파일이 열려(Open) 있으면 안 되고 파일시스템 위에서 명령이 실행된 다시 말해 파일시스템에 연관된 프로세스가 있으면 언마운트 되지 않는다.

1). 명령 형식

umount [옵션] 마운트 포인트 또는 DEVICE NAME

2). 옵션

옵 션
내 용
 -f
 강제적으로 파일시스템 연결을 끊기 위해(unmount) 사용한다.

3) 예제

아래는 umount 명령을 사용하여 /data02 파일시스템을 언마운트 하는 것을 보여준다.

[root@sunguru ~]# df -h /data02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc2       2.2T   73M  2.0T   1% /data02
[root@sunguru ~]#
[root@sunguru ~]# umount /data02
[root@sunguru ~]#
[root@sunguru ~]# df -h | grep date02
[root@sunguru ~]#
[root@sunguru ~]# mount /dev/sdc2 /data02
[root@sunguru ~]#
[root@sunguru ~]# df -h /data02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc2       2.2T   73M  2.0T   1% /data02
[root@sunguru ~]#
[root@sunguru ~]# cd /data02
[root@sunguru data02]#
[root@sunguru data02]# umount /data02
umount: /data02: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@sunguru data02]#
[root@sunguru data02]# fuser -ck /data02
[root@sunguru data02]#
[root@sunguru data02]# umount -f /data02
[root@sunguru data02]# 

■ df 명령

이 명령은 마운트 된 파일시스템 정보를 확인하기 위해 사용되는 명령이다.

1). 명령 형식

df [옵션] MOUNT POINT 또는 DEVICE

2). 옵션

옵 션
내 용
-t FS_TYPE
 파일시스템 유형에 일치하는 파일시스템 정보를 보여준다. [ ext2, ext4, ext4, iso9660 ]
-k
 용량 단위를 Kilobyte 단위로 보여준다.
-h
 사용자가 알아보기 쉬운 단위로 보여준다. MB, GB, TB 단위를 자동으로 보기 편하게 보여 줌 

3). 예제

아래는 df 명령을 사용하여 유형별, 마운트 포인트 별로 파일시스템 정보를 보여준다.

[root@sunguru data02]# df
Filesystem      1K-blocks    Used  Available Use% Mounted on
/dev/sda3        16180136 2826456   12525112  19% /
tmpfs              957724     228     957496   1% /dev/shm
/dev/sda1          194241   32441     151560  18% /boot
/dev/sr0          4523182 4523182          0 100% /media/CentOS_6.6_Final
/dev/sdc2      2258823048   74536 2144000200   1% /data02
[root@sunguru data02]#
[root@sunguru data02]# df -t ext4
Filesystem      1K-blocks    Used  Available Use% Mounted on
/dev/sda3        16180136 2826456   12525112  19% /
/dev/sda1          194241   32441     151560  18% /boot
/dev/sdc2      2258823048   74536 2144000200   1% /data02
[root@sunguru data02]#
[root@sunguru data02]# df -t iso9660
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sr0         4523182 4523182         0 100% /media/CentOS_6.6_Final
[root@sunguru data02]#
[root@sunguru data02]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        16G  2.7G   12G  19% /
tmpfs           936M  228K  936M   1% /dev/shm
/dev/sda1       190M   32M  149M  18% /boot
/dev/sr0        4.4G  4.4G     0 100% /media/CentOS_6.6_Final
/dev/sdc2       2.2T   73M  2.0T   1% /data02
[root@sunguru data02]#
[root@sunguru data02]# df -k /boot
Filesystem     1K-blocks  Used Available Use% Mounted on
/dev/sda1         194241 32441    151560  18% /boot
[root@sunguru data02]# 




■ /etc/fstab 파일

부팅 시 마운트 될 파일시스템에 대한 정보를 가지고 있는 파일이다. 한 줄 당 하나의 파일시스템에 대한 정보를 가지고 있으며 한 줄 당 6개의 필드가 존재하며 필드 구분자는 탭(Tab)이다.

필 드
내 용
Device Name
 마운트 될 디바이스 이름을 지정한다.
Mount Point
 마운트 포인트를 지정한다.
FS Type
 파일시스템 유형을 지정한다.
Option
 파일시스템 마운트 시 적용할 옵션을 지정한다.
Dump
 dump 명령에 의해 백업 될 파일시스템을 표시한다.
 0 : 필요없음
 1 : 필요함
FSCK
 시스템 부팅 시 파일시스템을 fsck 명령으로 무결성 검사를 할 것인지에 대한 유무를 표시한다.
 0 : 무결성 검사 하지 않음
 1 : 우선순위 1을 뜻하며 무결성 검사 실행 ( 보통 / 가 1 우선순위를 가짐. 나머진 2)
 2 : 우선순위 2를 뜻하며 무결성 검사 실행

1). 예제

/etc/fstab에 새로운 파일시스템에 대한 정보를 입력하면 리부팅 시 자동으로 파일시스템을 마운트 한다. 아래는 /data02 파일시스템에 대한 정보를 입력한 후 mount 명령으로 간단히 마운트 하는 예를 보여준다.

[root@sunguru ~]# more /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri May 27 02:44:29 2016
#
# 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=047dc93f-6363-4570-a7b5-1937a6534afa /                       ext4    defaults        1 1
UUID=b7618935-2a1e-4f2a-ad9f-167a96b8e935 /boot                   ext4    defaults      1 2
UUID=1b4804f6-b38b-4484-928d-73f04f327afb swap                    swap    defaults     0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sdc2  /data02   ext4 ro,noexec 1 2
[root@sunguru ~]#
[root@sunguru ~]# umount /data02
[root@sunguru ~]# mount /data02
[root@sunguru ~]#
[root@sunguru ~]# mount | grep data02
/dev/sdc2 on /data02 type ext4 (ro,noexec)
[root@sunguru ~]#
[root@sunguru ~]# grep data02 /etc/mtab
/dev/sdc2 /data02 ext4 ro,noexec 0 0
[root@sunguru ~]# 

■ tune2fs 명령

파일시스템의 속성 정보를 확인, 수정하기 위해 사용되는 명령이다. 이 명령을 통해 파일시스템 온라인 시 또는 비 온라인 시 최대 마운트 횟수, Min Free 값 등을 변경할 수 있다.

1). 명령형식

tune2fs [옵션] DEVICE

2). 옵션

옵 션
내 용
-l
 파일시스템 슈퍼블럭에 대한 정보를 보여준다.
-c NUM
 파일시스템의 최대 마운트 횟 수를 설정한다. 0으로 설정하면 마운트 횟수 제한이 제거된다.
-m FREE%
 예약 블록 퍼센트를 설정한다. 파일시스템 Full(100% 사용)을 예방하기 위해 설정한다.
-i INTERVAL
 파일시스템  점검 간 시간 간격을 설정한다. INTERVAL은 d, m, w (일, 월, 주)단위로 설정 가능 하다.

3). 예제

[root@sunguru ~]# tune2fs -l /dev/sdc2 | grep -E -i "(mount count|maximum|interval|reserved block count)"
Reserved block count:     28687078
Mount count:              3
Maximum mount count:      23
Check interval:           15552000 (6 months)
[root@sunguru ~]#
[root@sunguru ~]# tune2fs -c 48 /dev/sdc2
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to 48
[root@sunguru ~]#
[root@sunguru ~]# tune2fs -l /dev/sdc2 | grep -E -i "(mount count|maximum|interval|reserved block count)"
Reserved block count:     28687078
Mount count:              3
Maximum mount count:      48
Check interval:           15552000 (6 months)
[root@sunguru ~]#
[root@sunguru ~]# tune2fs -m 8 /dev/sdc2
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 8% (45899325 blocks)
[root@sunguru ~]#
[root@sunguru ~]# tune2fs -l /dev/sdc2 | grep -E -i "(mount count|maximum|interval|reserved block count)"
Reserved block count:     45899325
Mount count:              3
Maximum mount count:      48
Check interval:           15552000 (6 months)
[root@sunguru ~]#
[root@sunguru ~]# tune2fs -i 3d /dev/sdc2
tune2fs 1.41.12 (17-May-2010)
Setting interval between checks to 259200 seconds
[root@sunguru ~]#
[root@sunguru ~]# tune2fs -l /dev/sdc2 | grep -E -i "(mount count|maximum|interval|reserved block count)"
Reserved block count:     45899325
Mount count:              3
Maximum mount count:      48
Check interval:           259200 (3 days)
[root@sunguru ~]# 

■ fsck 명령

파일시스템 무결성 체크를 하기 위해 사용되는 명령이다. 만약 파일시스템이 마운트 되지 않는다면 무결성에 문제가 있어 그러한 것이다. 이를 해결하기 위해 fsck 명령을 사용할 수 있다. 파일시스템 체크를 하기 위해서는 반드시 언마운트 상태여야 한다.

1). 명령 형식

fsck [옵션] DEVICE

2). 옵션

옵 션
내 용
-b NUM
 백업 슈퍼블럭을 사용하여 파일시스템 체크를 한다. 슈퍼블럭이 깨졌을 때 사용하는 옵션이다.

3). 예제

아래는 dumpe2fs 명령을 사용하여 /dev/sdc2 파일시스템의 백업 슈퍼블럭을 확이 한 후 그것을 사용하여 파일시스템 체크하는 방법을 보여 준다. 이 방법은 슈퍼블럭이 손상되었다고 판단되는 경우에만 사용하시길 바란다.

[root@sunguru ~]# df -h /data02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc2       2.2T   73M  2.0T   1% /data02
[root@sunguru ~]#
[root@sunguru ~]# umount /data02
[root@sunguru ~]#
[root@sunguru ~]# fsck /dev/sdc2
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sdc2: clean, 11/143441920 files, 9054439/573741568 blocks
[root@sunguru ~]#
[root@sunguru ~]# dumpe2fs /dev/sdc2 | grep -i backup | awk -F, '{print $1}' | head -4
dumpe2fs 1.41.12 (17-May-2010)
Journal backup:           inode blocks
  Backup superblock at 32768
  Backup superblock at 98304
  Backup superblock at 163840
[root@sunguru ~]#
[root@sunguru ~]# fsck -b 98304 /dev/sdc2
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sdc2 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -(65600--65603) -(65606--65607) -(65609--65610) -(65615--65617) -(65620--65622) -(65624--65626) -65628 -65630

Fix<y>? yes

/dev/sdc2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sdc2: 11/143441920 files (0.0% non-contiguous), 9054439/573741568 blocks
[root@sunguru ~]#
[root@sunguru ~]# mount /data02
[root@sunguru ~]# df -h /data02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc2       2.2T   73M  2.0T   1% /data02
[root@sunguru ~]# 

여기까지 파일시스템 mount/umount 명령에 대해 알아보았습니다.. 다음 게시물에서는 데이터 가용성을 높이기 위해 사용되는 기술인 RAID에 대해 알아봅니다.






No comments:

Post a Comment