다양한 파티션 및 다양한 파일 시스템에 대한 마운트 지점

다양한 파티션 및 다양한 파일 시스템에 대한 마운트 지점

계속해서 읽으면서마운트 포인트, Linux의 파일 관리는 다음과 같다고 생각합니다.

  • /나무의 본체이다
  • /a본체의 가지, 가지 /a/b의 가지 입니다/a
  • c마운트 지점에 파티션을 마운트한다는 것은 파티션을 분기에 /a/b"마운트"하는 것을 의미합니다./c/a/b/a/b/c

질문이 몇 개 있습니다:

  1. 전체 파티션만 마운트할 수 있나요, 아니면 파티션의 일부만 마운트할 수 있나요? 자세히 설명해주세요.

  2. 이미 마운트된 다른 파티션에 파티션을 마운트합니까? 예를 들어, 일부 d는 에 설치되었으나 ​​이제 생성된 또 다른 를 /mnt설치할 수 있습니까 ? 아니면 "고정 분기"에 마운트할 수 있습니까 ? 가능하다면 을 제거하면 어떻게 됩니까 ? 자동으로 제거됩니까 ?/ed/mnt/d/e//mnt/d/e

  3. 다른 파일 시스템을 사용하여 설치할 수 있나요? 예를 들어, /a파일 시스템 F1이 있는 경우 /b파일 시스템 F2를 여기에 마운트 a하고 생성 할 수 있습니까 /a/b?

  4. 장치에 2 sda개의 파티션이 있다고 가정합니다 sda1. sda2일반적으로 사람들은 /sda1to /a/sda1, sda2to /b/c/sda2또는 동일한 디렉토리와 같이 원하는 마운트 지점에 마운트합니까?

  5. Linux(예: Fedora 22)에서 마운트 및 마운트 지점을 테스트하고 알아보기 위해 가상 또는 임시 파티션/파일 시스템을 어떻게 생성할 수 있습니까?

답변1

첫째, 파티션을 마운트하지 않았습니다. 설치되어 있는 것은파일 시스템. 파일 시스템은 파티션에 있을 수 있지만 일반적으로 파일 시스템은 존재하지 않습니다.

  • 내부 파일(예: ISO 이미지),

  • 완전히 RAM에 있습니다(예: /tmp가 때때로 이런 방식으로 생성됨).

  • 커널 내부(/sys 및 /proc는 이런 방식으로 작동함)

  • 또는 네트워크 서비스(NFS 및 Samba가 이 방식으로 작동함)로 사용됩니다.

마운트 지점 /a/b에 파티션 c를 마운트한다는 것은 /c를 /a/b 분기에 "마운트"하여 /a/b/c가 되는 것을 의미합니다.

이것은 정확하지 않습니다.

첫째, 파일 시스템을 참조하는 방법에는 여러 가지가 있습니다(예: 가장 일반적이고 대부분의 경우 가장 안전한 방법은 UUID를 사용하는 것입니다. lsblk -o +UUID,LABEL일반 사용자로 실행하여 커널이 알고 있는 ID를 확인하는 것입니다). 경로의 실제 결과에 영향을 미칩니다.

따라서 설치 시 경로를 제공해야 합니다(이 경로는 마운트 지점이라고 하며 이미 존재해야 함). 파일 시스템이 마운트된 후,그 뿌리이제 액세스할 수 있습니다.당신이 제공한 경로---하위 디렉터리가 아닙니다.

  1. 전체 파티션만 마운트할 수 있나요, 아니면 파티션의 일부만 마운트할 수 있나요? 자세히 설명해주세요.

이론적으로는 단일 파티션에 여러 파일 시스템이 있을 수 있지만 해당 파일 시스템을 찾으려면 특정 소프트웨어가 필요합니다(이 작업을 수행하려면 IIRC에서 truecrypt가 사용됨).

파일 시스템의 일부만 마운트하려는 경우 이론적으로는 가능하지만 커널에서는 이를 수행하지 않습니다. 이론적으로는 부분 마운트만 허용하는 파일 시스템을 설계한 다음 이를 위한 드라이버를 작성할 수 있지만 이는 어렵고 불가능할 것이라고 생각합니다. AFAIK, 일반적으로 사용되는 파일 시스템 중 어느 것도 이를 지원하지 않습니다.

  1. 이미 마운트된 다른 파티션에 파티션을 마운트합니까?

예, 할 수 있습니다. 동일한 경로에 원하는 수의 파일 시스템을 마운트하고 순서에 관계없이 마운트 해제할 수 있습니다. 그러나 마지막으로 마운트된 파일 시스템에만 액세스할 수 있습니다.

실제로 보안상의 이유로 일부 프로그램에서는 파일 시스템을 마운트하고 파일을 연 다음 동일한 경로에 다른 항목을 설치하는 경우가 많습니다. 이제 다른 프로세스는 첫 번째 파일에 액세스할 수 없습니다.

예를 들어 일부 d가 /mnt에 마운트되었습니다. 이제 다른 /e를 d에 마운트하여 /mnt/d/e를 생성할 수 있습니까? 아니면 /, /mnt와 같은 "고정 분기"에 마운트할 수 있습니까? 가능하다면 /d를 마운트 해제하면 어떻게 됩니까? /e도 자동으로 마운트 해제됩니까?

/mnt에 파일 시스템을 마운트하고 해당 파일 시스템에 예를 들어 다음이 포함되는 경우 'foo' 디렉토리가 있으면 이 디렉토리를 사용하여 다른 파일 시스템을 마운트할 수 있습니다. 그러나 커널에서는 사용 중인 파일 시스템을 마운트 해제할 수 없습니다. 파일 열기, 디렉터리에 대한 chdir 프로세스 및 디렉터리를 마운트 지점으로 사용하는 것은 모두 "사용 중"으로 간주됩니다.

"고정 분기"에 마운트합니다(예: /).

아, 그런데,절대이 작업을 수행. 아무것도 설치하지 마세요곧장/로 하면 시스템이 즉시 중단될 가능성이 높습니다.

  1. 다른 파일 시스템을 사용하여 마운트할 수 있습니까?

예. 사실, 일반적인 배포의 경우 로그인 화면에 도달할 때쯤에는 이미 / 아래 어딘가에 약 5개의 서로 다른 파일 시스템이 마운트되어 있을 것입니다(현재 Fedora 상자에는 16개가 있습니다).

mount현재 마운트된 파일 시스템을 확인하려면 실행하세요 .

  1. 장치 sda에 sda1과 sda2라는 2개의 파티션이 있다고 가정합니다. 일반적으로 사람들은 /sda1에서 /a/sda1로, sda2에서 /b/c/sda2로 또는 동일한 디렉토리와 같이 원하는 마운트 지점에 마운트합니까?

내가 기억하는 한 유일한 요구 사항은 마운트 지점(즉, 디렉터리)이 이미 존재해야 한다는 것입니다. 그 외에는 귀하의 필요에 맞는 것을 생각해 낼 수 있습니다. 파일 시스템이 동일한 디스크에 있다는 사실은 어떠한 제한도 구성하지 않습니다.

결국 파일 시스템을 다른 미디어로 이동하고 나중에 다시 마운트할 수도 있습니다. 예를 들어, 디스크에 오류가 발생하거나 더 많은 공간이 필요한 경우 이 작업을 수행합니다.

이름 지정과 관련하여 문제는 애초에 파일 시스템이 필요한 이유입니다. 일반적으로 사용자의 홈 디렉토리만을 위한 별도의 (대형) 파일 시스템이 있습니다. 홈 디렉토리의 원래 위치는 /home이므로 파일 시스템을 이 경로에 마운트하는 것이 요령입니다. 이런 방식으로 /var를 분리하는 것이 서버에 유리한 경우가 많습니다. 그러나 별도의 저장소만 원하는 경우 해당 경로가 고유하고 사용자에게 적합하다면 항상 사용하지 않는 경로(예: /finance)에 마운트할 수 있습니다(/sda1은 아닐 것 같지만 YMMV;). ).

  1. [...] 마운트 및 마운트 지점을 테스트하고 알아보기 위해 가상 또는 임시 파티션/파일 시스템을 어떻게 생성합니까?

Archemar의 답변을 참조하십시오. (그런데 Fedora 22뿐만 아니라 일반적인 GNU/Linux 배포판에서도 작동해야 합니다.)

답변2

이 범위는 매우 넓습니다.

  1. 로컬 파티션이 전체적으로 마운트됩니다. 부분적으로 설치할 수는 없습니다.
  2. 파티션을 다른 파티션에 마운트할 수 있습니다(일반적으로 많은 작업을 수행함). 기존 데이터가 "숨겨져 있습니다"(예: "b"를 마운트하면 해당 파일이 foo.txt숨겨짐)/mnt/a/b/foo.txt/mnt/a/b
  3. 예, 가능합니다. 로컬에서 로컬로, 원격에서 원격 또는 로컬로 마운트하는 것이 좋습니다. 하지만 로컬 ext3을 nfs로 마운트하고 ext3으로 마운트할 수 있습니다.
  4. 그것은 귀하의 필요에 따라 다릅니다.
  5. /etc/fstab에 기록되지 않으면 부팅 시 마운트 지점이 사라집니다.

다음 명령을 사용하여 임시 장치 및 마운트 지점을 만들 수 있습니다.

  • dd if=/dev/zero count=100 bs=1K of=foo,

  • 그 다음에 mkfs -t ext3 foo,

  • 그런 다음 루트로서mount foo /mnt

    완료되면 제거하고 삭제합니다 /mnt.foo

필요에 따라.

/dev/sda1 /dev/sda2가 있습니다.

ls /mnt
#empty
mount /dev/sda1 /mnt/a
error mount point doesn't exist (1)
mkdir /mnt/a 
mount /dev/sda1 /mnt/a
ls /mnt
a
ls /mnt/a
# empty
mkdir /mnt/a/b
date > /mnt/a/b/foo.txt
mount /dev/sda2 /mnt/a/b
ls /mnt/a/b
# empty
umount /mnt/a
device busy (2) 
date > /mnt/a/b/bar.txt
ls /mnt/a/b
bar.txt
umount /mnt/a/b
ls /mnt/a/b
foo.txt
  • (1) 기존 디렉터리에 설치해야 합니다.
  • (2) /mnt/a는 마운트 지점에서 사용 중이므로 마운트 해제할 수 없습니다(/mnt/a/b).

관련 정보