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

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

proc매뉴얼 에서는 네 번째 열의 이름을 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/. 이 환경의 루트는 입니다 . chroot된 환경에서 작업을 수행 /home/test/testSystem하면 다음과 같은 결과가 나타납니다.lsls //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.

root가 주어지면 /mnt/usb/dir1USB의 실제 위치를 알 수 있는 방법이 없기 때문에 루트가 될 수도 /dir1있고 /usb/dir1그럴 수도 있습니다./mnt/usb/dir1

관련 정보