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