web-dev-qa-db-ja.com

マウントされたデバイスを再度マウントできる(またはできない)のはなぜですか?何が起こっている?

マウントされたデバイスを再度マウントできる(またはできない)のはなぜですか?何が起こっている?
例えば:

/tmp/test$ Sudo mount /dev/sda5 ./1;echo ${?}
0
/tmp/test$ Sudo mount /dev/sda5 ./2;echo ${?}
0
/tmp/test$ Sudo mount | grep test
/dev/sda5 on /tmp/test/1 type ext4 (rw,relatime,data=ordered)
/dev/sda5 on /tmp/test/2 type ext4 (rw,relatime,data=ordered)
/tmp/test$ Sudo umount ./1 ./2;echo ${?}
0
/tmp/test$ Sudo losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE          DIO
/dev/loop0         0      0         0  0 /tmp/test/grub.iso   0
/tmp/test$ Sudo mount /dev/loop0 ./1;echo ${?}
mount: /dev/loop0 is write-protected, mounting read-only
0
/tmp/test$ Sudo mount /dev/loop0 ./2;echo ${?}
mount: /dev/loop0 is already mounted or /tmp/test/2 busy
       /dev/loop0 is already mounted on /tmp/test/1
32
/tmp/test$ Sudo mount | grep test
/dev/loop0 on /tmp/test/1 type iso9660 (ro,relatime,nojoliet,check=s,map=n,blocksize=2048)
/tmp/test$ 
2
illiterate

この理由は、マウントが同じである必要がある複数の場所の-wフラグと-rフラグにあるようです。

例(/dev/sda5はすでに-o rwでマウントされています):

$ Sudo mount -r ./grub.iso ./1;echo $?
0
$ Sudo mount -r ./grub.iso ./2;echo $?
0
$ Sudo mount -r ./grub.iso ./3;echo $?
0
$ Sudo umount ./1 ./2 ./3;echo $?
0
$ Sudo mount -r /dev/sda5 /mnt;echo $?
mount: /dev/sda5 is already mounted or /mnt busy
       /dev/sda5 is already mounted on /home/xx/yy
32

ストレッチ用のmanマウント :も参照してください。

-w, --rw, --read-write
          Mount the filesystem read/write.  This is the default.  A synonym is -o rw.

これが、デフォルトオプションを使用して複数の場所に/dev/sda5をマウントできるが、複数の場所にデフォルトオプションを使用してgrub.isoをマウントできない理由です。

1
illiterate

証拠から判断すると、/dev/sda2は元々/(ファイルシステムルート)としてマウントされていました。ただし、fstabは完全に無効になっており、メインマウントはmy_initスクリプトファイルで実行されます。最初のマウントでは、元のルートファイルシステムを含む完全な/dev/sda2が追加され、次の行は同じ/home/のみ/home/home/--bindオプションでマウントされます。元のルートファイルシステムの残りの部分。 umount /home/を1回実行すると、(私が書いたように)元のルートファイルシステム全体が/home/フォルダーに表示されます。つまり、ls/home /は、次のようになります。bin boot dev etc home ...

なぜ誰かがそうしたのか、私に聞かないでください。

0
schweik