web-dev-qa-db-ja.com

マウント後にolddirを表示する方法--bindolddir newdir?

私のDebian7では:

$ pwd
/home/freestyler

$ mkdir old new
# mount --bind old new

その後

$ mount
/dev/cciss/c0d0p9 on /home/freestyler/new type ext4(rw,noatime,nodiratime,user_xattr,barrier=1,data=ordered)

/dev/cciss/c0d0p9しか見えませんが、これは/home/freestyler/oldと同じではありません。

元のolddirパスを取得するにはどうすればよいですか?

Debian 6の場合:

mountはolddirパスよりも優れています:

 $ mount

/home/freestyler/old on /home/freestyler/new type none (rw,bind)
2
freestyler

これはバグです、 あなたに答えはありませんが これがバグレポートです:

マウント:バインドマウントはマウント出力にそのように表示されません

私はこれを回避する方法に本当に興味があったので、debian7のライブCDを入手して遊んでみました。私は最終的にこの投稿に来ました:

/ etc/mtabは、mountによって維持されるテキストファイルである場合にのみここで役立つことに注意してください。一部のディストリビューションでは、代わりに/ etc/mtabを/ proc/mountsへのシンボリックリンクとして設定しています。/proc/mountsは/ etc/mtabとほとんど同じですが、いくつかの違いがあり、そのうちの1つはバインドマウントを追跡していません。

カーネルによって保持されているが/ proc/mountsには表示されていない情報のひとつは、マウントポイントがマウントされたファイルシステム上のディレクトリツリーの一部のみを表示している場合です。実際には、これは主にバインドマウントで発生します。

マウント--bind/mnt/one/sub/mnt/partial

/ proc/mountsでは、/ mnt/oneと/ mnt/partialのエントリは、同じデバイス、同じファイルシステムタイプ、同じオプションを持っています。/mnt/partialが/ subをルートとするファイルシステムの部分のみを表示するという情報は、/ proc/$ pid/mountinfo(列4)のプロセスごとのマウントポイント情報に表示されます。そこにあるエントリは次のようになります。

12 34 56:78// mnt/one rw、relatime-ext3/dev/foo rw、errors = remount-ro、data = ordered 12 34 56:78/sub/mnt/partial rw、relatime-ext3/dev/foo rw、errors = remount-ro、data = ordered

そして私のテストでは、以下を使用して必要な情報を抽出できる可能性があります。

root@debian:~# cat /proc/1/mountinfo 
14 24 0:13 / /sys rw,nosuid,nodev,noexec,relatime - sysfs sysfs rw
15 24 0:3 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
16 24 0:5 / /dev rw,relatime - devtmpfs udev rw,size=10240k,nr_inodes=126630,mode=755
17 16 0:10 / /dev/pts rw,nosuid,noexec,relatime - devpts devpts rw,gid=5,mode=620,ptmxmode=000
18 24 0:14 / /run rw,nosuid,noexec,relatime - tmpfs tmpfs rw,size=102704k,mode=755
20 24 11:0 / /lib/live/mount/medium ro,noatime - iso9660 /dev/sr0 ro
21 24 7:0 / /lib/live/mount/rootfs/filesystem.squashfs ro,noatime - squashfs /dev/loop0 ro
22 23 0:16 / /lib/live/mount/overlay rw,relatime - tmpfs tmpfs rw
23 24 0:17 / /lib/live/mount/overlay rw,noatime - tmpfs tmpfs rw,mode=755
24 1 0:18 / / rw,relatime - aufs aufs rw,si=993d359391edfb38,noxino
25 18 0:19 / /run/lock rw,nosuid,nodev,noexec,relatime - tmpfs tmpfs rw,size=5120k
26 18 0:20 / /run/shm rw,nosuid,nodev,noexec,relatime - tmpfs tmpfs rw,size=205400k
27 15 0:21 / /proc/sys/fs/binfmt_misc rw,nosuid,nodev,noexec,relatime - binfmt_misc binfmt_misc rw
29 24 0:18 / /bindmount rw,relatime - aufs aufs rw,si=993d359391edfb38,noxino
30 24 0:18 /root/old /root/new rw,relatime - aufs aufs rw,si=993d359391edfb38,noxino

差出人: バインドマウントのみを一覧表示

cat /proc/$$/mountinfoを使用することもできます。アプリケーションの場合は、ローカルアプリケーションのPIDを使用することもできます。

他の質問のコメントでは、使用できる別の可能なオプションはfindmnt |fgrep [です。視覚的に確認する場合は、findmntだけで、ソース列を読み取ってバインドマウントが一覧表示されていることを確認できます。

root@debian:~# findmnt | fgrep [
└─/root/new                                  aufs[/root/old] aufs         rw,relatime,si=993d359391edfb38,noxino
2
Regan