mount 경로를 파일이 존재하는 디렉터리로 잡으면 기존 파일은 어떻게 될까?
- Published on
- Published on
- Revised on
mount
mount
명령어는 Linux 운영체제에서 다양한 파일 시스템을 특정 디렉터리에 연결하여 사용할 수 있도록 해줍니다. 이를 통해 로컬 디스크, USB 메모리와 같은 외부 장치, 네트워크 공유(NFS, SMB 등)와 같은 다양한 저장 장치를 리눅스 파일시스템에 통합할 수 있습니다. 조금 더 쉽게 표현하자면 우리가 Windows 운영체제에 외장하드를 꽂았을 때 탐색기에 'X 드라이브' 같은 아이콘이 표시되며 사용할 수 있게 되는 것과 유사합니다.
mount
명령어는 다음과 같은 형식으로 사용됩니다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
파티션이 존재는 하지만 마운트 되지 않아 용량이 안 보이는 상태입니다.
> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 32G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 31G 0 part
├─navix-root 253:0 0 29G 0 lvm /
└─navix-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
└─sdb1 8:17 0 10G 0 part
> df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 352M 0 352M 0% /dev/shm
tmpfs tmpfs 141M 14M 127M 10% /run
/dev/mapper/navix-root xfs 29G 6.6G 23G 23% /
/dev/sda1 xfs 960M 458M 503M 48% /boot
tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
mount
명령을 실행하기 전 마운트 할 경로가 없다면 mkdir
로 만들어줍니다.
> mkdir /data
> mount -t ext4 /dev/sdb1 /data
> df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 352M 0 352M 0% /dev/shm
tmpfs tmpfs 141M 14M 127M 10% /run
/dev/mapper/navix-root xfs 29G 6.6G 23G 23% /
/dev/sda1 xfs 960M 458M 503M 48% /boot
tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
/dev/sdb1 ext4 9.8G 24K 9.3G 1% /data
만약 이 컴퓨터를 재부팅했을 때도 마운트 상태를 유지하고 싶다면 /etc/fstab
에 추가해줍니다.
...
/dev/sdb1 /data ext4 defaults 0 0
참고로 지금은 단순한 예시로
/dev/sdb1
과 같은 장치명을 직접 사용했으나 이 방법은 권장되지 않습니다. 이에 대해서는 다음 글을 읽어보세요.
만약 이미 파일이 있는 경로에 마운트를 하면?
위에서 '마운트 할 경로가 없다면 만들어준다'고 했습니다. 그런데 만약 (정말 만약, 그러면 안 되지만, 당연히 확인 먼저 한 후에 마운트하는게 맞지만, 그럼에도 불구하고 가정으로) 이미 /data
경로에 어떤 파일이 있는데 모르고 (라는게 말이 안 되지만, 운영 서버에서 절대 이런 일은 없어야 되지만) 새로 추가한 디스크를 /data
경로로 마운트한다면 어떻게 될까요? 기존 파일은 사라질까요?
확인을 하기 위해 이전에 마운트 했던 것은 풀어주고 /data
폴더에 임의로 파일을 만들어봅시다.
> umount /data
> df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 352M 0 352M 0% /dev/shm
tmpfs tmpfs 141M 14M 127M 10% /run
/dev/mapper/navix-root xfs 29G 6.6G 23G 23% /
/dev/sda1 xfs 960M 458M 503M 48% /boot
tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
# 2GB 더미 파일 생성
> dd if=/dev/zero of=/data/dummy bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 7.70559 s, 279 MB/s
# 2GB 파일 생성 후 root, /data 용량 확인
> df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 352M 0 352M 0% /dev/shm
tmpfs tmpfs 141M 14M 127M 10% /run
/dev/mapper/navix-root xfs 29G 8.6G 21G 30% /
/dev/sda1 xfs 960M 458M 503M 48% /boot
tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
> du -h /data
2.0G /data
이제 다시 마운트하고 용량을 확인해봅시다.
> mount -t ext4 /dev/sdb1 /data
> df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 352M 0 352M 0% /dev/shm
tmpfs tmpfs 141M 14M 127M 10% /run
/dev/mapper/navix-root xfs 29G 8.6G 21G 30% /
/dev/sda1 xfs 960M 458M 503M 48% /boot
tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
/dev/sdb1 ext4 9.8G 24K 9.3G 1% /data
> du -h /data
16K /data/lost+found
20K /data
/data
경로에 직전에 만든 dummy
파일이 없고 용량도 20KB밖에 안 잡혀 있습니다. 그런데 root 영역 용량은 2GB 파일 생성 후 확인했던 용량과 같습니다. 그러면 방금 만든 dummy
파일은 어디로 갔을까요? 🧐
기존 파일은 원래의 root filesystem에서는 그대로 존재하지만 mount 한 이후부터 /data
경로는 루트 파일 시스템이 아닌 마운트 대상 경로를 가리키기 때문에 기존 파일에는 접근하지 못하는 상황이 됩니다2. reddit같은 커뮤니티에서는 이렇게 비어있지 않은 디렉터리 위에 다른 파일 시스템을 마운트하거나, 파일 위에 다른 파일을 마운트하는 상황을 "Overmount"라고 부릅니다3.
이렇게 숨겨진 파일을 확인하려면 다시 원래대로 마운트를 해제하거나(마운트 경로를 구분시켜서 사용), mount --bind
명령어로 루트 파일 시스템을 다른 곳에 마운트하면 확인할 수 있습니다. 마운트 경로를 제대로 구분해서 쓰는 것이 당연히 좋은 방법일 것 같네요.
그럼 다시 umount
를 하고 원래 파일이 살아있는지 확인해볼까요?
> umount /data
> df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 352M 0 352M 0% /dev/shm
tmpfs tmpfs 141M 14M 127M 10% /run
/dev/mapper/navix-root xfs 29G 8.6G 21G 30% /
/dev/sda1 xfs 960M 458M 503M 48% /boot
tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
> ls /data
dummy
> du -h /data
2.0G /data
잘 살아있네요. 마지막으로 마운트 경로를 구분하는 것까지 해봅시다.
> mkdir data-sdb
> mount -t ext4 /dev/sdb1 /data-sdb
> df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 352M 0 352M 0% /dev/shm
tmpfs tmpfs 141M 14M 127M 10% /run
/dev/mapper/navix-root xfs 29G 8.6G 21G 30% /
/dev/sda1 xfs 960M 458M 503M 48% /boot
tmpfs tmpfs 173M 116K 173M 1% /run/user/1000
/dev/sdb1 ext4 9.8G 24K 9.3G 1% /data-sdb
> ls /data*
/data:
dummy
/data-sdb:
lost+found
> du -h /data
2.0G /data
> du -h /data-sdb
16K /data-sdb/lost+found
20K /data-sdb
저는 /dev/sdb 디스크를 추가했기 때문에 data-sdb
라고 만들었는데 nfs-data
, data-backup
등 상황에 맞게 이름은 바꿔서 사용하면 되겠습니다.
참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.
- Linux filesystem
- NFS, CIFS/SMB
Footnotes
"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). ↩