btrfs(SLES15)가 포함된 비어 있지 않은 마운트 지점: 필요합니까?

btrfs(SLES15)가 포함된 비어 있지 않은 마운트 지점: 필요합니까?

나는 수년간의 UNIX 경험을 가지고 있지만 치명적인 실수를 저질렀다고 생각합니다.

부팅하는 동안 비어 있지 않은 마운트 지점에 대한 메시지를 보고 시스템을 새 환경으로 마이그레이션하는 동안 이를 정리할 기회를 가졌습니다. SLES Rescue System을 부팅하고 루트 파일 시스템과 기본 시스템 구조(proc, sys, dev)를 에 마운트한 /mnt다음 chroot /mnt및 를 수행했습니다 mount -va.

그래서 모든 것이 괜찮아 보였고 일부 구성 설정을 조정했으며 마운트를 해제하는 동안 마운트 지점을 확인했습니다. 예: /var/cache마운트되었고 umount성공했지만 ll /var/cache파일 시스템이 마운트되지 않은 것으로 표시되는 동안 여전히 비어 있지 않은 마운트 지점이 표시되었습니다. 그래서 내용을 없앴습니다.

기본적으로 마운트된 모든 파일 시스템에 대해 단계를 반복한 다음 chroot환경을 떠나 나머지를 마운트 해제하고 재부팅했습니다.

불행하게도 GRUB이 찾을 수 없다고 불평하여 시스템이 부팅되지 않습니다 normal.mod.

이것이 btrfs 하위 볼륨의 기능입니까? 무슨 일이 일어났는지 누가 설명할 수 있나요?

/etc/fstab

내가 요청한 대로 /etc/fstab일반적인 시스템의 내용은 다음과 같습니다.

/dev/sys/root                              /            btrfs  defaults              0  0
/dev/sys/root                              /var         btrfs  subvol=/@/var         0  0
/dev/sys/root                              /usr/local   btrfs  subvol=/@/usr/local   0  0
/dev/sys/root                              /tmp         btrfs  subvol=/@/tmp         0  0
/dev/sys/root                              /srv         btrfs  subvol=/@/srv         0  0
/dev/sys/root                              /root        btrfs  subvol=/@/root        0  0
/dev/sys/root                              /opt         btrfs  subvol=/@/opt         0  0
UUID=9fd27493-d194-48ba-a4bc-3551123e0d3b  /home        xfs    defaults              0  0
/dev/sys/boot                              /boot        btrfs  defaults              0  0
UUID=0092-D1D5                             /boot/efi    vfat   utf8                  0  2
/dev/sys/root                              /.snapshots  btrfs  subvol=/@/.snapshots  0  0

답변1

작동 방식

/dev/sys/rootBtrfs 파일 시스템을 포함합니다. 마운트 의 여러 항목이 fstab다른 하위 볼륨을 다른 마운트 지점에 마운트합니다.

가설: Btrfs 파일 시스템의 기본 하위 볼륨은 /dev/sys/root이고 /@에 마운트되면 /다른 많은 하위 볼륨이 마운트됩니다.특정 마운트 지점에서올바른(대개 비어 있지 않은) 디렉토리가 이미 예상한 위치에 있기 때문에 거의 또는 전혀 의미가 없습니다.

(기본 하위 볼륨을 보려면 을 실행하십시오 sudo btrfs subvolume get-default /.)

읽어주세요이건 내 또 다른 대답이야장치의 Btrfs 디렉터리(및 하위 볼륨) 트리와 OS의 디렉터리 구조 간의 개념적 차이를 이해합니다. 이 지식이 없으면 현재 답변의 나머지 부분이 매우 혼란스러울 수 있습니다.

기본 하위 볼륨이 다음과 같은 경우/@, /@Btrfs 트리에서 /OS 트리 처럼 나타납니다.아래의 모든 것과 함께. 이 장착홀로예를 들어 OS 트리에서처럼 /@/varBtrfs 트리에서 디렉토리를 보는 것으로 충분합니다 . /var내 말은, 네가 접근하려고 하면/var ~ 전에 /var그러면 마운트됩니다

  • OS는 /var(OS의) 마운트 지점인지 확인합니다. 그렇지 않습니다.
  • 따라서 OS는 /(OS의) 마운트 지점인지 확인합니다. 그것은 /@Btrfs와 연관되어 있습니다.
  • 따라서 OS는 OS의 /@/varBtrfs를 표시합니다 ./var

/@/varBtrfs는 하위 볼륨입니다 .추가적으로subvol=/@/var(OS의) 에 마운트하면 (OS의) /var와 동일한 디렉터리가 표시됩니다 . /var특히, 지금 액세스 /var하면

  • OS는 /var(OS의) 마운트 지점인지 확인합니다. 그것은 /@/varBtrfs와 연관되어 있습니다.
  • /@/var그래서 OS는 Btrfs를 보여줄 것입니다 .

그리고 /var(OS의) 마운트를 해제하면 첫 번째 경우로 돌아갑니다.

따라서 (OS의) 마운트 여부는 중요하지 않습니다 /var(사실상 중요하지 않으며 미묘함이 있을 수 있음). 어떤 식으로든 OS에서 /@/var와 마찬가지로 Btrfs를 볼 수 있습니다./var

fstab다른 하위 볼륨 마운트 의 다른 여러 항목어쨌든 어디서 볼 수 있겠어?. 나는 이 항목의 요점을 실제로 알지 못합니다(현재 확인할 수 없는 일부 미묘함이 요점일 수 있습니다. 또는 이 항목은 실제로 전혀 의미가 없습니다).

비교를 위해: /var(OS의) 마운트가 Btrfs 아래에 있지 않기 subvol=/var때문에 마운트하는 것이 합리적 이므로 Btrfs를 OS로 마운트하는 것만으로는 도달할 수 없습니다 ./var/@/@/


어떻게 깨뜨렸어?

... 마운트되어 umount성공했지만 ll …파일 시스템이 마운트되지 않은 것으로 표시되는 동안 여전히 비어 있지 않은 마운트 지점이 표시되었습니다. 그래서 내용을 없앴습니다.

내가 말했듯이, fstab마운트의 여러 항목은 어쨌든 볼 수 있는 다른 하위 볼륨을 마운트합니다. 이러한 경우에는 umount이전에 본 내용을 제거한 후 내용을 제거하면 됩니다 umount. 숨겨져 있고 관련 없는 내용을 제거했다고 생각했지만 실제로는 실제 중요한 내용을 제거했습니다.

그런데 맞지 않는 것이 두 가지 있습니다.

  1. 귀하의 마운트 지점 예는 입니다 /var/cache. 마운트 해제한 것으로 추정됩니다. 하지만 당신이 게시한 /var/cache내용에는 없습니다 fstab.
  2. fstab귀하 가 게시한 내용 에 따르면 /(OS의)는 에서 /dev/sys/root, /boot(OS의)는 에서 옵니다 /dev/sys/boot. 설명된 물건 깨기 메커니즘은 적용할 수 없습니다. 그러나 당신은 "GRUB이 찾을 수 없다고 불평했습니다 normal.mod"라고 주장하고 이것으로부터 나는 당신이 어떤 식으로든 일을 망쳤다고 추론합니다 /boot.

그러므로 나는 출판된 것 fstab(당신이 이것을 "전형적인 시스템이 가지고 있는 것"이라고 묘사했습니다)이정확한 fstab영향을 받는 OS의 /boot와 동일한 파일 시스템을 사용하고 /불필요하게 마운트되어 설명된 문제가 발생하는 시나리오가 발생하기 쉬운 것 같습니다 .

관련 정보