동일한 tmpfs를 여러 번 마운트하는 기능

동일한 tmpfs를 여러 번 마운트하는 기능

왜 다음과 같은 상황이 가능한가?

root@pkara-pc01:~# mkdir -p /tmp/shared
root@pkara-pc01:~# mount -t tmpfs -o size=1G mymount /tmp/shared/
root@pkara-pc01:~# mount -t tmpfs -o size=1G mymount /tmp/shared/
root@pkara-pc01:~# mount | grep -i shared
mymount on /tmp/shared type tmpfs (rw,relatime,size=1048576k)
mymount on /tmp/shared type tmpfs (rw,relatime,size=1048576k)

편집하다: 일반적으로 이미 마운트된 파일 시스템을 마운트하려고 하면 실패(?)하기 때문에 이 질문을 드립니다.

$ mkdir -p mydir
/tmp
$ dd if=/dev/zero of=myfile bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.563994 s, 1.9 GB/s
/tmp
$ mkfs.ext4 myfile 
mke2fs 1.44.1 (24-Mar-2018)
Discarding device blocks: done                            
Creating filesystem with 256000 4k blocks and 64000 inodes
Filesystem UUID: 95fe153e-a575-4c9a-beef-b7a20a6ae342
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

/tmp
$ sudo mount -o loop myfile /tmp/mydir/
/tmp
$ sudo mount -o loop myfile /tmp/mydir/
mount: /tmp/mydir/: /tmp/myfile is already mounted.

답변1

이는 tmpfs 메타데이터를 쓸 백업 저장소가 없고 필요하지 않기 때문에 가상 파일 시스템입니다.

대신 ext4fs메타데이터를 쓰기 위해 백업 저장소(이미지 파일이든 실제 장치이든)가 필요한 영구 파일 시스템입니다.

따라서 mount 이 상황에 대한 명령은 tmpfs다음과 같습니다.재사용동일한 디렉터리를 마운트합니다.다른(여전히 tmpfs이지만) 완전히 원시 파일 시스템입니다. 이는 디렉토리가 이미 영구 파일 시스템의 마운트 지점으로 사용된 경우에도 허용됩니다 ext4. 예를 들어 두 번째 파일 시스템은 mount단순히 이전 파일 시스템을 덮어쓰므로 두 번째 파일 시스템이 마운트 해제된 시스템인 것처럼 파일이 다시 나타납니다.

대신 mount케이스에 대한 명령은 ext4설치를 시도하는 것입니다.동일한 백업 저장소( myfile파일)을 여러 번 실행하고 동일한 마운트 지점에 연결하면 오류 메시지가 표시됩니다. 가상 파일 시스템에는 tmpfs(외부) 백업 저장소가 전혀 없기 때문에 이런 일이 결코 발생할 수 없습니다. 실제로 mymount명령 조각은 tmpfsmake 구문 내용에 대한 자리 표시자일 뿐입니다. 대신 임의의 문자열  을 mount사용할 수 있습니다 tmpfs.myfileext4~ 해야 하다시스템에 이미 존재하고 사용 가능한 것. 영구 파일 시스템의 백업 저장소로 사용됩니다(해당 백업 저장소를 실제 휘발성 파일 시스템에 배치하더라도  명령과 드라이버는 그렇지 않습니다) tmpfs. 그것에 대해 알고/관심하세요).mkfs.ext4ext4fs

그러나 고대 v2.4 Linux 커널 덕분에 파일 시스템을 여러 번 안전하게 마운트하는 것도 가능합니다 ext4.을 텐데이들은 다른 마운트 지점에 설치됩니다(예: 예제와 동일한 디렉터리가 아님). 기본적으로 이와 같은 여러 설치 는 하나의 mount --bind. 전에. v2.29부터 동일한 지원 파일을 재사용할지 여부를 감지하고 이를 동등한 파일로 자동 변환합니다.loop/dev/loopXmount -o loopmount --bind

안전을 위해 동일한 백업 파일에 2.28.x 이하 버전을 여러 번 사용하지 마십시오 mount( -o loop중간에 제거하지 않는 한). 가능한 결과에는 임의 데이터 손실로 인한 커널 충돌이 포함됩니다.

관련 정보