Linux - 마운트

2021. 8. 7. 11:33Linux

이번 시간에는 전 시간에 간단하게 배운 마운트에 대해 자세히 배워보겠습니다.

HDD, SSD, CD/DVD-ROM과 같은 외부장치를 리눅스 시스템에서 사용하기 위해서는 사용자가 지정한 위치 혹은 시스템이 자동으로 지정한 위치(마운트 포인트)에 연결해 줘야 합니다.  이런 과정을 마운트 라고 합니다.

윈도우 같은 경우 외부 장치를 장착하면 D:드라이브, E:드라이브등 드라이브로 구분이 됩니다. 

윈도우가 깔려 있는 HDD 혹은 SSD 의 크기와는 상관 없이 추가로 용량이 생기는 것입니다.

하지만 리눅스는 장치를 장착하면 윈도우와 같이 새로운 드라이브를 생성하는 것이 아니라  / 루트 디렉터리 아래의 특정 디렉터리에 연결이 됩니다. 

즉 리눅스는 하나의 디렉터리 (/ 루트 디렉터리)로부터 뻗어지는 single directory tree 구조를 가지고 있는 것입니다.

리눅스가 깔려 있는 HDD 혹은 SSD의 남은 공간에만 장치를 장착할 수 있습니다. 만약 장착하고자 하는 장치의 크기가 남은 공간보다 클 경우에는 장착 하지 못합니다.

제가 사용하고 있는 GUI 환경에서는 장치를 장착하기만 하면 자동으로 마운트가 됩니다.

실제로 장착해보도록 하겠습니다.

 

 

Windows 10, CentOS-7 두개의 iso 파일들중 장착하고 싶은 장치를 클릭하면 클릭한 장치가 리눅스에 장착되면서

자동으로 마운트가 됩니다. (iso 파일은 CD/DVD를 그대로 복사한 파일이기 때문에 장치로 간주 합니다)

 

mount 명령어 단독으로 사용하면 마운트된 장치들에 대한 자세한 정보를 알 수 있습니다. 방금 마운트된 장치에 대한 정보는 제일 마지막에 있습니다.

 

 

1. /dev/sr0 : 장치를 장착하면 모든 장치를 관리하는 /dev 디렉터리에 블록(block) 파일이 저장됩니다.

장착하는 장치 종류에 따라 다른 이름으로 저장이 됩니다.

CD/DVD : /dev/cdrom이라는 명을 가지게 됩니다. 저희는 방금 DVD iso 파일을 장착했는데 왜 sr0 라는 파일명으로 저장이 되었을까요?

 

심볼릭 링크로 두 파일은 링크 되어 있는 것을 볼 수 있습니다. 즉 cdrom 과 sr0 파일은 같은 파일임을 알 수 있습니다.

 

USB : /dev/usb, IDE 하드드라이브 : /dev/hd*, SCSI 하드드라이브 : /dev/sd* 로 파일명이 정해집니다.

hd와 sd 뒤에 *을 붙인 이유는 hd와 sd로 시작하는 파일명이라는 의미입니다. hda, hdb, sda, sdb 등

 

2. /run/media/사용자명 : 마운트 포인트인것입니다. /dev/sr0 장치는 /run/media/root 디렉터리에 Centos 7 x86_64라는 이름으로 마운트 된 것입니다. 사용자는 마운트 된 위치에 접근해서 해당 장치를 사용할 수 있습니다.

 

사용자명이 root로 되어 있는것을 볼 수 있습니다. 이는 root로 로그인후 장치를 마운트 했기 때문입니다. 그럼 로그아웃후 다른 사용자인 keum 사용자로 로그인후 장치를 마운트 해보겠습니다.

 

 

사용자 부분이 keum으로 바뀐것을 볼 수 있습니다. 이는 첫 로그인하는 사용자로 적용이 되는 것입니다. su 명령어로 다른 사용자로 로그인후 장치를 마운트해도 사용자 부분은 바뀌지 않습니다.

 

여기서 이상한 점을 찾을 수 있습니다. 저희는 저번에 공부할때 자동으로 마운트 될 경우 /media 에 마운트가 된다고 배웠습니다. 하지만 자동으로 마운트된 위치를 보면 /run/media/사용자명 인것을 볼 수 있습니다. 

저희가 지금 사용하고 있는 리눅스는 GUI 환경입니다. 이 상태에서는 장치를 장착하면 자동으로 마운트가 되고 /run/media/사용자명 위치로 마운트 포인트가 잡힙니다. 하지만 CUI 환경 예를 들어 소프트웨어 선택에서 최소 설치와 같은 상태에서 장치를 장착하면 자동으로 마운트가 안되기 때문에 사용자가 직접 마운트를 수동으로 해줘야 합니다.

자동 마운트는 시스템을 재부팅을 해도 마운트를 유지합니다. 하지만 수동으로 마운트를 한 장치들은 시스템을 부팅하고 나면 마운트가 자동으로 해제됩니다. 

부팅을 해도 마운트가 해제되지 않도록 마운트 설정을 해 줄 수 있는데 이때 사용하는 마운트 포인트가 /media 인것입니다. (물론 다른 디렉터리로 해도 상관 없습니다 /media는 자동 마운트 포인트로 자주 쓰이는 디렉터리인 것입니다)

자동 마운트 설정은 아래에서 수동 마운트를 연습해보고 설명하겠습니다. 

 

외부 장치가 리눅스에서 작동하는 원리에 대해 다시 한번 집고 넘어가겠습니다.

외부 장치를 리눅스에서 사용하려면 우선 장치를 장착해야합니다. 장치를 장착하면 /dev 디렉터리 안에 장착한 장치의 종류에 따라 파일명이 정해져서 저장이 됩니다. (/dev/sr0) 그럼 시스템에서 정해진 디렉터리 (/run/media/사용자명)로 해당 장치 파일을 마운트 합니다.

이를 자동 마운트라고 합니다. 자동 마운트가 완료가 되면 사용자는 장치 내용을 이 마운트가 완료된, 시스템에서 정한 디렉터리로 접근해서 사용할 수 있는 것입니다.

여기서 질문이 있을 수 있습니다. 장치를 장착하면 /dev 아래에 장치 파일이 저장된다고 했는데 이 파일에 접근해서 장치를 사용하면 되지 왜 마운트를 하는건가요?

 

장치에는 장치를 관리하는 파일시스템이 있습니다. OS에서 장치를 사용하려면 장치의 파일 시스템을 알아야 합니다.

mount는 장치를 사용하기 위해 OS에게 장치의 파일 시스템을 알려주는 작업인것입니다.

그래서 mount 작업을 해야 장치를 사용할 수 있게 되는 것입니다.

 

GUI 환경에서는 자동으로 마운트 되는 것을 확인 했으니 이번에는 CUI 환경에서 수동으로 직접 마운트 해보겠습니다.

mount 장치명 마운트포인트

자동 마운트 포인트는 /run/media/사용자명 이였습니다. 저는 /media 아래에 isodir이라는 디렉터리를 생성한뒤 마운트 시켜보겠습니다.

 

 

/dev/sr0 장치는 write는 불가능하고 read-only만 할 수 있는 상태로 마운트 되었다는 메세지가 나왔습니다.

즉 이 장치는 읽기만 가능하다는 것입니다.

 

 

mount 명령어로 확인 해보니 /dev/sr0 장치는 /media/isodir 에 마운트 되었으며 파일시스템은 iso9660을 사용했고 ro(read-only) 읽기만 가능하다는 것을 확인 할 수 있었습니다.

 

옵션 t를 사용하면 파일시스템을 지정할 수 있습니다. 

mount -t 파일 시스템 마운트 포인트

 

이제 아까 위에서 언급한 부팅후에도 마운트를 유지할 수 있는 자동 마운트를 해보겠습니다

/etc/fstab 파일에 아래와 같은 형식으로 마운트할 내용을 추가한뒤 부팅하면 재부팅할 때마다 마운트가 자동으로 됩니다.

 

/dev/mapper/centos-swap : 장치명

swap : 마운트 포인트

swap : 파일스시템의 타입

defaults : 마운트 옵션 ( ro = read-only, rw = read-write, exec = 실행파일 실행 허용, defaults = rw, exec,

1. 장치명 : /dev/mapper/centos-swap

2. 마운트 포인트 : swap

3. 파일시스템의 타입 : swap, xfs

4. 마운트 옵션 : ro = read-only, rw = read-write, exec = 실행파일 실행 허용, no user = 관리자만 마운트 허용,

auto = 재부팅시 마운트 유지, defaults = rw, exec, no user, auto 포함

5. dump 허용 여부 : 0과 1로 표시를 하며 7.x 부터는 기본값 0으로 설정 합니다. dump란 백업을 의미합니다.

0 : 불허 1 : 허용

6. 무결성 검사 : 부팅시 파일 시스템 체크를 할 것인지 지정하는 것입니다.  0, 1, 2로 설정하며 7.x 부터는 기본값 0으로 설정합니다

0 : 체크 안함, 1 : / 루트 디렉터리, 2 : 그외

 

우선 장치의 파일시스템 타입을 알아야합니다. 이는 blkid 라는 명령어를 사용하면 확인 할 수 있습니다.

 

 

저는 /dev/sdb1 장치와 /dev/sr0 장치, 두개의 장치를 자동 마운트되도록 설정하겠습니다.

 

위와 같이 저장후 reboot 명령어를 사용하겠습니다.

재부팅 후에도 마운트가 유지되어 있는 모습을 확인 할 수 있습니다.

df  : 리눅스의 전체 디스크에서 마운트된 목록들을 확인 할 수 있습니다.

-h : 사용자가 보기 편한 단위로 용량을 출력합니다.

 

 

du : 파일이나 디렉터리들이 디스크에서 차지하고 있는 크기를 출력합니다. 단위는 kb 입니다.

-h : 사용자가 보기 편한 단위로 용량을 출력합니다.

 

 

mount를 해보았으니 이번에는 마운트 해제 u(un)mount를 해보겠습니다.

umount 장치명 or 마운트 포인트

umount 하기 전에는 사용중인 장치를 모두 종료해야합니다. 현재 위치가 장치의 마운트 포인트인 상태에서도 장치를 사용중으로 취급되기 때문에 umount 할 수 없습니다.

 

 

/media/isodir target is busy : 해당 장치가 사용중이라는 의미입니다.

umount는 꼭 마운트 포인트에서 벗어난 위치에서 해야한다는 점을 기억하도록 해야합니다.

 

 

아무런 반응이 없으면 성공적으로 마운트를 해제된것이고 마찬가지로 df 명령어로 확인 할 수 있습니다.

 

 

이상으로 마운트에 대해 공부해보는 시간을 가졌습니다. 다음 시간에는 grep, find에 대해 공부 해보겠습니다.

 

 

 

다음 시간

Linux - grep & 정규 표현식

'Linux' 카테고리의 다른 글

Linux - locate & find  (0) 2021.08.10
Linux - grep & 정규 표현식  (1) 2021.08.08
Linux - 패키지 관리 도구 rpm & yum  (0) 2021.08.02
Linux - 권한(permission)(3)  (0) 2021.08.01
Linux - 권한(permission)(2)  (0) 2021.08.01