/proc/.../mountinfo의 네 번째 열(루트)은 무엇을 의미합니까?

/proc/.../mountinfo의 네 번째 열(루트)은 무엇을 의미합니까?

매뉴얼에서는 proc4번째 열의 이름을 mountinfo"root"로 지정하고 "이 마운트의 루트를 형성하는 파일 시스템의 디렉터리 경로 이름"이라고 설명합니다. 하지만 어떻게 이해해야 할까요?

마운트의 기본 요소는 소스와 대상 경로라고 생각했습니다. "마운트 소스"는 10번째 열이고 대상은 5번째 열이므로 루트는 무엇에 사용됩니까?

대부분의 마운트 정보에서 루트는 /의미가 없는 것 같습니다. 바인드 마운트의 루트가 와 다른 경우에만 /바인드 마운트에만 유용합니까? 그리고 바인드의 경우 루트에 절대 경로를 표시하지 않는 이유는 무엇입니까? 예를 들어, 바인딩할 때 /run/test_dir/a루트 /run/test_dir/b열에 이 표시되는데 /test_dir/a왜 해당 /run부분을 숨기나요?

답변1

(적어도 내 영어 능력으로는) 언어 요소로 설명하기가 어렵습니다. 그래서 예제 기반 답변을 만들기로 결정했습니다.

루트 디렉토리는 종종제일 높은또는가장 높은예배 규칙서. 이는 부분적으로만 사실입니다. 이 디렉토리가정된다으로제일 높은예배 규칙서. "이 디렉토리부터 시작할 것입니다. 이것이 가장 높은 디렉토리이고 위에는 아무것도 없다고 가정합니다."라고 설명할 수 있습니다.

"루트"가 무엇을 의미하는지 명확히 하기 위한 몇 가지 예:

  • 웹 서버를 실행하고 도메인의 루트 example.com/var/www/html/example.com. 이제 파일을 만듭니다 /var/www/html/example.com/test.html. https://example.com/test.html브라우저에서 열면 . 생성된 파일의 내용을 가져옵니다. 루트로 설정한 경우 /var/www/html열어야 합니다.https://example.com/example.com/test.html
  • chroot디렉토리에 들어가면 /home/test/testSystem/. 이 환경의 루트는 입니다 /home/test/testSystem. lschrooted 환경 내부에서 작업을 수행하면 ls /다음 내용을 얻을 수 있습니다./home/test/testSystem/

루트가 있는 마운트 지점/

예를 들어 USB에는 다음이 포함됩니다.

/
├── dir1
│   ├── subfile1
│   └── subfile2
├── file1
├── file2
└── file3

이 USB를 마운트하면 USB 디렉토리를 루트로 /mnt사용하기 때문에 예상한 정상적인 출력을 얻을 수 있습니다 ./

531 137 0:52 / /mnt rw,nosuid,nodev shared:75 - /dev/sdb [...]

따라서 대부분의 경우 마운트 지점의 루트는 실제로 /.

루트가 다른 마운트포인트/

직접 시도해 볼 수 있습니다. 파일 시스템에 있는 두 개의 디렉터리를 다음과 같이 바인딩합니다.

$ mount --bind /var/test1 /var/test2

의 출력은 mountinfo다음과 같습니다.

564 29 0:26 /var/test1 /var/test2 rw,relatime shared:1 - ext4 /dev/sda rw [...]

아래에 있는 마운트 지점의 루트 /var/test2는 입니다 /var/test1. 마운트 소스(마운트한 것)는 다음과 같습니다./dev/sda

USB 예로 돌아가서: 이제 콘텐츠를 /mnt/dir1다른 것에 마운트하면 마운트 루트를 얻게 되고 마운트 소스는 (USB) /dir1가 됩니다 . /dev/sdb해당 /mnt부분이 여기에 삭제되었습니다.

"/run 부분을 숨기는 이유"

즉, /runtmpfs 파티션이기 때문에 삭제됩니다. 그 부품들은 왜 제거되나요?

USB 예에서는 를 dir1에 마운트했습니다 . 출력은 다음과 같습니다:/dev/sdb/home/test/usbmnt/

564 29 0:26 /dir1 /home/test/usbmnt/ rw,relatime shared:1 - ext4 /dev/sdb rw [...]

/dir1의 내용(하드 드라이브가 아닌 USB에서)을 usbmnt라는 디렉터리에 마운트한 것을 볼 수 있습니다. 로 읽어보시면 도움이 될 것 같습니다 /dev/sdb/dir1.

/mnt/usb/dir1USB의 실제 위치가 무엇인지 알 수 없어 루트가 제공되는 경우 : /dir1또는 /usb/dir1아마도/mnt/usb/dir1

관련 정보