同じ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。たとえば、2番目のファイルシステムはmount単純に古いファイルシステムを上書きするため、2番目のファイルシステムがアンマウントされたシステムのようにファイルが再表示されます。

代わりに、mountケースのコマンドはext4インストールを試みることです。同じバックアップストレージ(myfileファイル)を複数回実行し、同じマウントポイントに接続するとエラーメッセージが表示されます.仮想ファイルシステムにはtmpfs(外部)バックアップストアがまったくないため、これは決して発生しません。実際には、mymountコマンドのフラグメントはtmpfsmake 構文の内容のプレースホルダーだけです。代わりに任意の文字列をmount使用できますtmpfsmyfileext4〜しなければならないシステムにすでに存在し、利用可能なもの。永続ファイルシステムのバックアップストアとして使用されます(対応するバックアップストアを実際の揮発性ファイルシステムに配置しても、コマンドとドライバはそうではありません)tmpfs。それについて知って/興味を持ってください)。mkfs.ext4ext4fs

ただし、古代v2.4 Linuxカーネルのおかげで、ファイルシステムを複数回安全にマウントすることも可能ですext4をするこれらは別のマウントポイントにインストールされます(例と同じディレクトリではありません)。基本的に、このようないくつかのインストールは1つmount --bind。前に。 v2.29以降、同じサポートファイルを再利用するかどうかを検出し、それを同等のファイルに自動的に変換します。loop/dev/loopXmount -o loopmount --bind

安全のために、同じバックアップファイルに2.28.x以前のバージョンを複数回使用しないでくださいmount-o loop途中で削除しない限り)。考えられる結果には、ランダムなデータ損失によるカーネル衝突が含まれる。

関連情報