mount
mount 명령어는 Linux 운영체제에서 다양한 파일 시스템을 특정 디렉터리에 연결하여 사용할 수 있도록 해줍니다. 이를 통해 로컬 디스크, USB 메모리와 같은 외부 장치, 네트워크 공유(NFS, SMB 등)와 같은 다양한 저장 장치를 리눅스 파일시스템에 통합할 수 있습니다. 조금 더 쉽게 표현하자면 우리가 Windows 운영체제에 외장하드를 꽂았을 때 탐색기에 ‘X 드라이브’ 같은 아이콘이 표시되며 사용할 수 있게 되는 것과 유사합니다.
mount 명령어는 다음과 같은 형식으로 사용됩니다1.
1> mount -t fstype [-o options] device_name dir
-t fstype: 마운트하는 파일 시스템 유형을 적어줍니다.- 일반적인 리눅스 디스크라면
ext4나xfs가 주로 사용됩니다. - 물리 디스크가 아닌
nfs나cifs같은 네트워크 프로토콜로 원격지 서버의 공간을 내 컴퓨터에 연결할 수도 있습니다.
- 일반적인 리눅스 디스크라면
-o options: 필요하다면 마운트에 필요한 옵션을 추가할 수 있습니다.device_name: 장치명은 로컬 디스크는/dev/sdb1, 네트워크 프로토콜은서버주소:경로형식을 사용합니다.dir: 마운트 할 내 로컬 경로를 지정합니다.
실습
실습 환경은 다음과 같습니다.
- HW: 2C/4GB Qemu VM on Proxmox 8.3
- OS: Navix 9.5
일반적인 mount
이번 실습에서는 기본이 되는 로컬 디스크 마운트를 해보겠습니다. 만약 NFS, SMB를 마운트하고 싶다면 링크를 참고해주세요.
먼저 현재 상태는 /dev/sdb1 파티션이 존재는 하지만 마운트 되지 않아 용량이 안 보이는 상태입니다.
1> lsblk
2NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
3sda 8:0 0 32G 0 disk
4├─sda1 8:1 0 1G 0 part /boot
5└─sda2 8:2 0 31G 0 part
6 ├─navix-root 253:0 0 29G 0 lvm /
7 └─navix-swap 253:1 0 2G 0 lvm [SWAP]
8sdb 8:16 0 10G 0 disk
9└─sdb1 8:17 0 10G 0 part
10
11> df -hT
12Filesystem Type Size Used Avail Use% Mounted on
13devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
14tmpfs tmpfs 352M 0 352M 0% /dev/shm
15tmpfs tmpfs 141M 14M 127M 10% /run
16/dev/mapper/navix-root xfs 29G 6.6G 23G 23% /
17/dev/sda1 xfs 960M 458M 503M 48% /boot
18tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
mount 명령을 실행하기 전 마운트 할 경로가 없다면 mkdir로 만들어줍니다.
1> mkdir /data
2> mount -t ext4 /dev/sdb1 /data
3> df -hT
4Filesystem Type Size Used Avail Use% Mounted on
5devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
6tmpfs tmpfs 352M 0 352M 0% /dev/shm
7tmpfs tmpfs 141M 14M 127M 10% /run
8/dev/mapper/navix-root xfs 29G 6.6G 23G 23% /
9/dev/sda1 xfs 960M 458M 503M 48% /boot
10tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
11/dev/sdb1 ext4 9.8G 24K 9.3G 1% /data
만약 이 컴퓨터를 재부팅했을 때도 마운트 상태를 유지하고 싶다면 /etc/fstab에 추가해줍니다.
1// /etc/fstab
2...
3/dev/sdb1 /data ext4 defaults 0 0
참고로 지금은 단순한 예시로
/dev/sdb1과 같은 장치명을 직접 사용했으나 이 방법은 권장되지 않습니다. 이에 대해서는 다음 글을 읽어보세요.
만약 이미 파일이 있는 경로에 마운트를 하면?
위에서 ‘마운트 할 경로가 없다면 만들어준다’고 했습니다. 그런데 만약 (정말 만약, 그러면 안 되지만, 당연히 확인 먼저 한 후에 마운트하는게 맞지만, 그럼에도 불구하고 가정으로) 이미 /data 경로에 어떤 파일이 있는데 모르고 (라는게 말이 안 되지만, 운영 서버에서 절대 이런 일은 없어야 되지만) 새로 추가한 디스크를 /data 경로로 마운트한다면 어떻게 될까요? 기존 파일은 사라질까요?
확인을 하기 위해 이전에 마운트 했던 것은 풀어주고 /data 폴더에 임의로 파일을 만들어봅시다.
1> umount /data
2> df -hT
3Filesystem Type Size Used Avail Use% Mounted on
4devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
5tmpfs tmpfs 352M 0 352M 0% /dev/shm
6tmpfs tmpfs 141M 14M 127M 10% /run
7/dev/mapper/navix-root xfs 29G 6.6G 23G 23% /
8/dev/sda1 xfs 960M 458M 503M 48% /boot
9tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
10
11# 2GB 더미 파일 생성
12> dd if=/dev/zero of=/data/dummy bs=1M count=2048
132048+0 records in
142048+0 records out
152147483648 bytes (2.1 GB, 2.0 GiB) copied, 7.70559 s, 279 MB/s
16
17# 2GB 파일 생성 후 root, /data 용량 확인
18> df -hT
19Filesystem Type Size Used Avail Use% Mounted on
20devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
21tmpfs tmpfs 352M 0 352M 0% /dev/shm
22tmpfs tmpfs 141M 14M 127M 10% /run
23/dev/mapper/navix-root xfs 29G 8.6G 21G 30% /
24/dev/sda1 xfs 960M 458M 503M 48% /boot
25tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
26
27> du -h /data
282.0G /data
이제 다시 마운트하고 용량을 확인해봅시다.
1> mount -t ext4 /dev/sdb1 /data
2
3> df -hT
4Filesystem Type Size Used Avail Use% Mounted on
5devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
6tmpfs tmpfs 352M 0 352M 0% /dev/shm
7tmpfs tmpfs 141M 14M 127M 10% /run
8/dev/mapper/navix-root xfs 29G 8.6G 21G 30% /
9/dev/sda1 xfs 960M 458M 503M 48% /boot
10tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
11/dev/sdb1 ext4 9.8G 24K 9.3G 1% /data
12
13> du -h /data
1416K /data/lost+found
1520K /data
/data 경로에 직전에 만든 dummy 파일이 없고 용량도 20KB밖에 안 잡혀 있습니다. 그런데 root 영역 용량은 2GB 파일 생성 후 확인했던 용량과 같습니다. 그러면 방금 만든 dummy 파일은 어디로 갔을까요? 🧐
기존 파일은 원래의 root filesystem에서는 그대로 존재하지만 mount 한 이후부터 /data 경로는 루트 파일 시스템이 아닌 마운트 대상 경로를 가리키기 때문에 기존 파일에는 접근하지 못하는 상황이 됩니다2. reddit같은 커뮤니티에서는 이렇게 비어있지 않은 디렉터리 위에 다른 파일 시스템을 마운트하거나, 파일 위에 다른 파일을 마운트하는 상황을 “Overmount“라고 부릅니다3.
이렇게 숨겨진 파일을 확인하려면 다시 원래대로 마운트를 해제하거나(마운트 경로를 구분시켜서 사용), mount --bind 명령어로 루트 파일 시스템을 다른 곳에 마운트하면 확인할 수 있습니다. 마운트 경로를 제대로 구분해서 쓰는 것이 당연히 좋은 방법일 것 같네요.
그럼 다시 umount를 하고 원래 파일이 살아있는지 확인해볼까요?
1> umount /data
2
3> df -hT
4Filesystem Type Size Used Avail Use% Mounted on
5devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
6tmpfs tmpfs 352M 0 352M 0% /dev/shm
7tmpfs tmpfs 141M 14M 127M 10% /run
8/dev/mapper/navix-root xfs 29G 8.6G 21G 30% /
9/dev/sda1 xfs 960M 458M 503M 48% /boot
10tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
11
12> ls /data
13dummy
14
15> du -h /data
162.0G /data
잘 살아있네요. 마지막으로 마운트 경로를 구분하는 것까지 해봅시다.
1> mkdir data-sdb
2> mount -t ext4 /dev/sdb1 /data-sdb
3
4> df -hT
5Filesystem Type Size Used Avail Use% Mounted on
6devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
7tmpfs tmpfs 352M 0 352M 0% /dev/shm
8tmpfs tmpfs 141M 14M 127M 10% /run
9/dev/mapper/navix-root xfs 29G 8.6G 21G 30% /
10/dev/sda1 xfs 960M 458M 503M 48% /boot
11tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
12/dev/sdb1 ext4 9.8G 24K 9.3G 1% /data-sdb
13
14> ls /data*
15/data:
16dummy
17
18/data-sdb:
19lost+found
20
21> du -h /data
222.0G /data
23
24> du -h /data-sdb
2516K /data-sdb/lost+found
2620K /data-sdb
저는 /dev/sdb 디스크를 추가했기 때문에 data-sdb라고 만들었는데 nfs-data, data-backup 등 상황에 맞게 이름은 바꿔서 사용하면 되겠습니다.
참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.
- Linux filesystem
- NFS, CIFS/SMB
“mount(8) - Linux Man page.” die.net. https://linux.die.net/man/8/mount (accessed Mar. 16, 2025). ↩︎
slim. “What does Linux do with existing files in a mount point?” superuser. https://superuser.com/questions/200685/what-does-linux-do-with-existing-files-in-a-mount-point/200697#200697 (accessed Mar. 16, 2025). ↩︎
takeiteasyradioshack. “list of “hidden” files behind mount point.” reddit r/linuxadmin. https://www.reddit.com/r/linuxadmin/comments/rcsitv/list_of_hidden_files_behind_mount_point/ (accessed Mar. 16, 2025). ↩︎
Comments