ln -s 대 mount --bind


19

사용하는 사이에 실질적인 차이가 ln -s나는 mount --bind?

데몬 설정을 변경하지 않고 일부 폴더를 다른 파티션으로 이동하고 어떤 접근법을 취해야하는지 궁금합니다.

ln -s최소 설정 ( /etc/fstab수정 없음 ) 이 필요 하지만 선호 하지 않는 이유가 있습니까?

답변:


25

당근 빠따 지. 를 실행하면 특정 파일 시스템 객체를 가리키는 아이 노드ln -s 인 심볼릭 링크를 만들 수 있습니다. 이것이 심볼릭 링크가 파일 시스템을 통과 할 수 있고 하드 링크가 불가능한 이유입니다. 하드 링크에는 자체 아이 노드가 없습니다.

로 파일 시스템을 마운트 하면 장치 또는 파일 시스템에 대한 --bind두 번째 마운트 지점 이 생성 됩니다.

심볼릭 링크를 리디렉션으로 구상하면 --bind마운트 된 파일 시스템을 데이터에 대한 다른 게이트웨이를 만드는 것으로 구상하십시오 .

심볼릭 링크와 바인드 마운트는 완전히 다른 볼 게임입니다.

--bind마운트는 좀 더 강력한 나에게 보인다 아마 조금 더 빠른 심볼릭 링크 작업을보다. 반면, 성능 저하가 적기 때문에 (링크가 존재하는 경우) 심볼릭 링크를 사용하는 데 심각한 결점이 없습니다.

편집 : 나는 이것에 대해 생각하고 있었고 성능 적중은 원래 생각했던 것보다 약간 클 수 있습니다. 많은 다른 파일을 읽는 응용 프로그램이있는 경우 열려있는 모든 새 파일에는 추가 읽기가 필요합니다. 여기에있는 일부 연구 따르면 내 가정이 정확하다고 제안하므로 IO 무거운 응용 프로그램을 실행하는 경우 --bindsymlink 솔루션 위에 마운트 하는 옵션을 고려하십시오 .

일반적이지 않은 이유는 아마도 심볼릭 링크가에 표시되는 ls반면, 바인드 마운트는 / proc / mounts 또는 / etc / mtab (마운트 명령이 수행하는 경우 수행하는 동작)을 볼 때만 볼 수 있기 때문입니다. 매개 변수없이 실행 됨). 그 외에는 문제가 없다고 생각합니다. 그래도 관심이 있습니다.

추가 : 또 다른 문제 ln -s는 일부 응용 프로그램의 경우 경로가 역 참조 될 때 특정 항목이 특정 위치에 "예상"될 경우 응용 프로그램이 멈출 수 있다는 것입니다.


설명을 주셔서 감사합니다! 작은 후속 질문-실제로 --rbind 매개 변수의 기능과 사용 방법은 무엇입니까? 매뉴얼에서 마운트 된 트리에 서브 마운트를 마운트하는 매개 변수를 지원하는 것 같습니다. 또한 --rbind만으로 충분합니까, 아니면 --bind를 수행 한 다음 --rebind를 수행해야합니까? 다시 감사합니다.
SyRenity

2
mount인수없이 호출하면의 내용을 인쇄합니다.의 내용은와 /etc/mtab약간 다릅니다 /proc/mounts. (특히, /proc/mounts에 (심볼릭 링크 /proc/self/mounts) 항상 읽기 과정을 볼 마운트 위치를 보여줍니다.)
grawity

1
@wzzrd- FAQ의 "최우수 – 기존 질문과 답변을 편집하고 개선하십시오!" :)은 결코 당신의 대답에 약간입니다 ..이 - 그것까지 투표 할 때 경우에 / 당신이 추가 담당자를 받게됩니다있는 추가 정보가있는 작은 개선 :
워렌

1
@warren, 신경 쓰지 마, 난 화 나지 않았다 :) 그것은 당신이 내가 전혀 알지 못하는 무언가를 추가했기 때문에 조금 이상하다고 느꼈다;)
wzzrd

2
@ wzzrd-발가락을 밟을 의도는 없었습니다 :) .. 앱 관련 문제는 내가 사용하는 주요 제품과 관련이 있습니다
warren

6

ln -s바인드 마운트와 의 큰 차이점 중 하나는 바인드 마운트를 사용하여 읽기 전용 파일 시스템을 "수정"할 수 있다는 것입니다. 예를 들어에 CD가 마운트 되어 있고 올바른 버전 /mnt/application으로 바꾸려면 다음 /mnt/application/badconfigfile.conf과 같이하십시오.

mount -o bind /path/to/correct/file.conf /mnt/application/badconfigfile.conf

대상 파일 시스템을 수정할 수 없으므로 symlink를 사용하여 동일한 변경에 영향을 줄 수 없습니다.

이는 NFS (또는 일종의 클러스터 파일 시스템)를 통해 공통 소프트웨어 제품군을 배포하고 한 시스템에서 호스트 별 변경을 수행하려는 경우에도 유용합니다. 대상 시스템에서 바인드 마운트를 사용하여 필요에 따라 파일 또는 디렉토리를 대체 할 수 있습니다.


두통 보호기! (드문 경우이지만 특별한 순간을 기억할 가치가 있음)
Jonathan Komar

2

ln -s와 mount --bind 사이의 실제 차이점 # 1 :

vsftpd는 심볼릭 링크를 통해 디렉토리를 탐색 할 수 없지만 마운트 할 때는 허용합니다.

사용중인 데몬을 모르지만 비슷하게 작동 할 수 있습니다.


1

마운트 자체에 바인딩 (나중에 리바운드되는)에 바인딩 한 결과 모든 것이 물리적으로 연결되어 있다고 가정하면 원래 바인딩은 그대로 유지됩니다.

즉, A를 B에 바인딩하고 B를 C에 바인딩 한 다음 D를 B에 바인딩하면 C는 여전히 A에 바인딩됩니다. 이는 원하는 것일 수도 있고 아닐 수도 있습니다. C가 B를 따르기를 원하면 같은 목표를 사용하여 다시 마운트 mount -o remount B C하거나 --rbind대신 사용하십시오. --rebind옵션 이 없습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.