マウントポイントの元のコンテンツへのアクセス


32

ヘッドレスNASには、sdf1(フラッシュカード)が(ソフトウェアRAIDでバックアップされたLVMボリューム)からマウントされ//homeいるようにマウントさlv00れています。RAIDに障害が発生したときにマシンにアクセスできるようにするために、/home/foo/.sshからのファイルシステムにssh公開キーなどのコピーがありますsdf1。マウント
されている/homeことによって隠されているファイルを更新するには、通常に再マウントlv00/mnt/home、必要な操作を行ってからlv00、元の場所に戻します。
アンマウントせずにこれを達成する方法はあり/homeますか?

回答:


44
mkdir /mnt/root
mount --bind / /mnt/root
ls /mnt/root/home/foo/.ssh

--bind(ではなく--rbind)を使用している限り、その上にマウントされたものなしでマウントのクローンを取得します。


パーフェクト!私はのアイデアをいじっていましたがmount --bind、必要なときに必ず壊れてしまう複雑なアイデアしか得られませんでした。これはまさに私が必要とすることを行い、永久マウントとしても使用できます。ありがとう
ヤヌス


他の回答で説明されているように、マウントでカバーしたディレクトリの上位レベルをバインドマウントする必要があるという事実を含めるために、この回答を編集する価値がありますか?それ以外の場合、この答えは短くなります。したがって、すぐに読みやすくなります。
マイケルファース

5

私は似たようなことを達成しようとしましたが、短命の答えはメソッドのセマンティクスを説明しませんでした。それは私にとっては失敗したので、unix.SEで先ほどとほぼ同じ質問をしました。コメントの後、私は自分でそれを考え出し、答えました。これは、このコンテキストに適合するように私の回答を編集したものです。この質問に賛成して、他の質問(および回答)を削除しました。

これが私がやろうとしていたことです:

事例

マウント:

/dev/sda1  on /     type ext4 (rw)
/dev/sdb1  on /data type ext4 (rw)
/data/home on /home type none (rw,bind)

マウント後、ユーザー用/のフォルダー/home/joeがありますjoe。他の場所がマウントされたら(/data)ホームフォルダーの完全なセットが利用できるので、それらを所定の場所にバインドマウントします(/data/home on /home)。フォルダー/data/home/joeがあるので、のマウントが/dev/sdb1成功する限り、彼はのコンテンツを取得し/data/home/joe、そうでない場合は/home/joe(on /dev/sda1!)にフォールバックします。

成功した場合、次の場所にバインドマウントされたものではなく、/home/joe(on /dev/sda1!)の元のコンテンツにアクセスするにはどうすればよい /data/home/joeですか?

溶液

コメントに基づいてパトリック私の質問とephemientにより溶液(ここでは受け入れ答え)上のコメント、私は以下を思い付きました。

それはです明らかにできるmount --bind(またはmount -o bind親フォルダこれは重要な部分で他の場所とすることにより、元の内容にアクセスマウントのBIND)。したがって、私の例では、次のことを試みる代わりに:

mount --bind /home/joe /home/joe/underneath
# or ...
mount --bind /home /home/joe/underneath

(つまり、すでにバインドされている場所を別の場所にマウントします)

test -d /.ROOT || mkdir /.ROOT
mount --bind / /.ROOT
mount --bind /.ROOT/home/joe /home/joe/underneath

これがパトリックのコメントの意味です

/(ルート)に再度マウントする場合を除き、その答えは問題なく機能するはずです。

バインドマウントされた場所への親フォルダーが使用可能であれば、上記のように1つのインダイレクションがありますが、機能します。/の親フォルダがないため、何かをバインドマウントすると、運が悪くなります/


親フォルダーのマウントは、私が行方不明だった重要な部分でした。ありがとう。
aidan

1

次を使用して、マウントを解除せずにマウントを新しい場所に移動できますmount --move

$ mount --move /home /mnt/home
do stuff with the local /home
$ mount --move /mnt/home /home

1
マイケル、ありがとう。これには、他のユーザーが/ homeにアクセスできないという同じ欠点があります。
ヤヌス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.