마운트 해제된 파일 시스템을 마운트하려고 할 때 "파일 존재" 오류가 발생하는 이유는 무엇입니까?

마운트 해제된 파일 시스템을 마운트하려고 할 때 "파일 존재" 오류가 발생하는 이유는 무엇입니까?

도움을 주셔서 감사합니다.

핫스왑 가능한 USB C 3.1 5베이 저장 장치가 있습니다(https://www.amazon.com/dp/B07VMK6ND7/ref=cm_sw_r_cp_taa_BETlFb399BQF4) 데비안 상자에 연결합니다.

두 번째 베이는 중복성을 위한 4TB RAID 1 미러링 btrfs이고, 세 번째 장치는 제가 교체하는 luks/DM-crypt 백업 드라이브이고, 네 번째 장치는 오프사이트 백업용입니다.

이 호스트 컨트롤러에서는 진정한 핫 플러깅을 사용할 수 없습니다. 내가 해야 할 일은 제거를 통해 2개의 활성 마운트 지점을 닫는 것뿐입니다(게으름이나 강제가 아닌 일반적인 작업). 잘 작동합니다. 나는 hdparm을 사용하여 드라이브를 낮추고, 주차하고, 잠자기한 다음 더 나은 커널에서 장치를 제거했습니다(이 단계를 건너뛰어도 같은 일이 발생합니다). 전원 버튼을 사용하여 장치를 끕니다. 그런 다음 드라이브를 꺼냈습니다.

다음날 다른 드라이브를 다시 가져와서 드라이브에 전원을 켜고 기본 2개의 RAID btrf가 새 장치 블록(sda에서 sdc 등)으로 재할당되었습니다. 그런 다음 RAID를 마운트하려고 시도했는데 파일 시스템이 여전히 어딘가에 마운트되어 있는 것처럼 "파일 존재" 오류가 발생했지만 그렇지 않았습니다. 나는 smartd에 SIGHUP을 보내고 커널에서 장치를 제거한 다음 다시 스캔했지만 아무 소용이 없었습니다.

물론 재부팅하면 모든 문제가 해결되지만 Linux가 이러한 문제를 처리하는 방식은 아닙니다. 이는 커널 업그레이드와 다릅니다. USB 플래시 드라이브를 교체하는 것보다 조금 더 발전된 것입니다.

귀하의 의견에 진심으로 감사드립니다. 아래의 Bash 코드.

# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:32   0  3.7T  0 disk /srv/dev-disk-by-id-usb-External_USB3.0_DISK01_20170331000C3-0-1/
sdb           8:48   0  3.7T  0 disk
sdc           8:64   0  3.7T  0 disk
mmcblk0     179:0    0 29.7G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0 29.5G  0 part /

# umount /dev/sda
# lsblk
lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:32   0  3.7T  0 disk
sdb           8:48   0  3.7T  0 disk
sdc           8:64   0  3.7T  0 disk
mmcblk0     179:0    0 29.7G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0 29.5G  0 part /

# hdparm -y /dev/sd*
... (completes without error)
# echo 1 > /sys/block/sd*/device/delete
... (completes without error)

여기서는 장치의 전원을 끄고 백업 드라이브를 교체한 다음 재부팅합니다.

# pkill -SIGHUP smartd
... (completes without error)

# lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdc           8:32   0  3.7T  0 disk
sdd           8:48   0  3.7T  0 disk
sde           8:64   0  3.7T  0 disk
mmcblk0     179:0    0 29.7G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0 29.5G  0 part /

# mount | grep sd # no /dev/sd* mounted anywhere
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)

# mount /dev/sdc /mnt/backup
mount: /mnt/backup: mount(2) system call failed: File exists
# 
# hdparm -y /dev/sd*
... (completes without error)
# echo 1 > /sys/block/sd*/device/delete
... (completes without error)
# pkill -SIGHUP smartd
# lsblk               
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 29.7G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0 29.5G  0 part /
# echo "- - -" > /sys/class/scsi_host/host1/scan
# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdc           8:32   0  3.7T  0 disk
sdd           8:48   0  3.7T  0 disk
sde           8:64   0  3.7T  0 disk
mmcblk0     179:0    0 29.7G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0 29.5G  0 part /
# mount /dev/sdc /mnt/backup
mount: /mnt/backup: mount(2) system call failed: File exists
# dmesg -T | tail -n40
[Fri Aug  7 23:39:08 2020] sd 1:0:0:2: [sde] Attached SCSI disk
[Fri Aug  7 23:39:08 2020] BTRFS warning (device sda): duplicate device fsid:devid for f4cbf27f-8fb6-48be-87a3-d42023ab2eb7:2 old:/dev/sdb new:/dev/sdd
[Fri Aug  7 23:39:08 2020] BTRFS warning (device sda): duplicate device fsid:devid for f4cbf27f-8fb6-48be-87a3-d42023ab2eb7:2 old:/dev/sdb new:/dev/sdd
[Fri Aug  7 23:39:08 2020] BTRFS warning (device sda): duplicate device fsid:devid for f4cbf27f-8fb6-48be-87a3-d42023ab2eb7:1 old:/dev/sda new:/dev/sdc
[Sat Aug  8 11:28:05 2020] BTRFS warning (device sda): duplicate device fsid:devid for f4cbf27f-8fb6-48be-87a3-d42023ab2eb7:1 old:/dev/sda new:/dev/sdc
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sdb errs: wr 1, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sda errs: wr 1, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sdb errs: wr 2, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sda errs: wr 2, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sdb errs: wr 3, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sda errs: wr 3, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sdb errs: wr 4, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sda errs: wr 4, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sdb errs: wr 5, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS error (device sda): bdev /dev/sda errs: wr 5, rd 0, flush 0, corrupt 0, gen 0
[Sat Aug  8 18:59:57 2020] BTRFS: error (device sda) in btrfs_commit_transaction:2268: errno=-5 IO failure (Error while writing out transaction)
[Sat Aug  8 18:59:57 2020] BTRFS info (device sda): forced readonly
[Sat Aug  8 18:59:57 2020] BTRFS warning (device sda): Skipping commit of aborted transaction.
[Sat Aug  8 18:59:57 2020] BTRFS: error (device sda) in cleanup_transaction:1860: errno=-5 IO failure
[Sat Aug  8 18:59:57 2020] BTRFS info (device sda): delayed_refs has NO entry
[Sun Aug  9 18:10:24 2020] usb 2-1: new SuperSpeed Gen 1 USB device number 4 using xhci_hcd
[Sun Aug  9 18:10:24 2020] usb 2-1: New USB device found, idVendor=174c, idProduct=55aa, bcdDevice= 1.00
[Sun Aug  9 18:10:24 2020] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[Sun Aug  9 18:10:24 2020] usb 2-1: Product: Ugreen Storage Device
[Sun Aug  9 18:10:24 2020] usb 2-1: Manufacturer: Ugreen
[Sun Aug  9 18:10:24 2020] usb 2-1: SerialNumber: 093458F298A9
[Sun Aug  9 18:10:24 2020] scsi host2: uas
[Sun Aug  9 18:10:24 2020] scsi 2:0:0:0: Direct-Access     KINGSTON  SA400M8120G     0    PQ: 0 ANSI: 6
[Sun Aug  9 18:10:24 2020] sd 2:0:0:0: [sdf] 234441648 512-byte logical blocks: (120 GB/112 GiB)
[Sun Aug  9 18:10:24 2020] sd 2:0:0:0: [sdf] Write Protect is off
[Sun Aug  9 18:10:24 2020] sd 2:0:0:0: [sdf] Mode Sense: 43 00 00 00
[Sun Aug  9 18:10:24 2020] sd 2:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[Sun Aug  9 18:10:24 2020] sd 2:0:0:0: Attached scsi generic sg3 type 0
[Sun Aug  9 18:10:24 2020] sd 2:0:0:0: [sdf] Optimal transfer size 33553920 bytes
[Sun Aug  9 18:10:24 2020]  sdf: sdf1
[Sun Aug  9 18:10:24 2020] sd 2:0:0:0: [sdf] Attached SCSI disk
[Sun Aug  9 18:20:06 2020] BTRFS warning (device sda): duplicate device fsid:devid for f4cbf27f-8fb6-48be-87a3-d42023ab2eb7:1 old:/dev/sda new:/dev/sdc
[Sun Aug  9 18:22:34 2020] BTRFS warning (device sda): duplicate device fsid:devid for f4cbf27f-8fb6-48be-87a3-d42023ab2eb7:1 old:/dev/sda new:/dev/sdc
[Sun Aug  9 18:22:55 2020] BTRFS warning (device sda): duplicate device fsid:devid for f4cbf27f-8fb6-48be-87a3-d42023ab2eb7:1 old:/dev/sda new:/dev/sdc
[Sun Aug  9 18:23:25 2020] BTRFS warning (device sda): duplicate device fsid:devid for f4cbf27f-8fb6-48be-87a3-d42023ab2eb7:1 old:/dev/sda new:/dev/sdc

추적에 대해서는 다음을 참조하세요.https://pastebin.com/UBhccxxY

답변1

이는 BTRFS가 장치 파일 시스템(특히 UUID)에 대한 일부 정보를 캐시하기 때문입니다. BTRFS 장치가 다른 장치 노드에 나타나면 UUID가 더 이상 있어야 할 아이디어에 맞지 않기 때문에 커널 모듈이 혼란스러워집니다. 마운트를 시도하기 전에 이 명령을 실행 하면 btrfs device scan --forget커널이 모든 오래된 파일 시스템에 대한 정보를 삭제하게 됩니다. 바라보다btrfs 장치 매뉴얼 페이지"스캔" 하위 명령 아래.

관련 정보