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
하면 다음과 같은 결과가 나타납니다.ls
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 부분이 숨겨져 있는 이유"
간단히 말해서, /run
tmpfs 파티션이기 때문에 삭제되었습니다. 이 부품들은 왜 제거되었나요?
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/dir1
USB의 실제 위치를 알 수 있는 방법이 없기 때문에 루트가 될 수도 /dir1
있고 /usb/dir1
그럴 수도 있습니다./mnt/usb/dir1