그래서 btrfs 루트 파일 시스템이 약간 손상되었습니다. 이제 부팅하면 루트 읽기/쓰기 마운트가 실패하고 파일 시스템이 읽기 전용으로 마운트됩니다. 내가 읽으려고 하는 모든 파일은 제대로 작동하는 것 같으므로 피해가 상당히 제한적이라고 가정합니다.
현지 스냅샷이 많이 있습니다. 손상으로 인해 모든 파일이 영향을 받지 않기를 바랍니다. 문제를 해결하기 위해 보다 과감한 조치를 취하기 전에 가능한 한 많은 파일을 외부 백업 디스크에 복사하고 싶습니다. 그러나 btrfs send
그것은 실패했다 -30 (Read-only file system)
.
btrfs send
만약에보내다파일 시스템이 읽기 전용으로 마운트되어 있습니까? 거기에 아무것도 쓸 필요가 없는 것 같기 때문에 이것은 나를 놀라게 할 것입니다.- 그렇다면
btrfs send
전송 파일 시스템이 실제로 기록되고 있기 때문입니까, 아니면 이 확인을 수행하는 다른 이유가 있습니까? - 해결책이 있나요? 현재는 스냅샷을 다시 동기화할 계획이지만 당연히 속도가 훨씬 느려집니다.
(다른 사항을 다루는 것이 너무 어렵다면 위의 사항 중 하나만 다루는 답변에 투표하겠습니다.)
답변1
방금 내 VM에서 이것을 테스트했습니다 ztest
(zfs, btrfs, mdadm, lvm 및 유사한 항목을 테스트/연습하는 데 사용합니다). VM에는 /dev/vda에서 /dev/vdo까지 15 x 100MB 가상 드라이브가 연결되어 있습니다. 내가 실행 중인 테스트 유형에 비해 규모가 클 필요는 없습니다).
어쨌든 읽기 전용 btrfs 마운트의 하위 볼륨을 다른 fs(/tank1, ZFS)의 파일로 보낼 수 있었습니다. 예를 들어
# df -Th /b1
Filesystem Type Size Used Avail Use% Mounted on
/dev/vdb1 btrfs 190M 7.3M 148M 5% /b1
# btrfs filesystem show /b1
Label: none uuid: a5217930-73a9-4481-a14a-2c1974b3f2db
Total devices 2 FS bytes used 4.00MiB
devid 1 size 190.00MiB used 104.00MiB path /dev/vdb1
devid 2 size 190.00MiB used 104.00MiB path /dev/vdc1
# mount -o ro,remount /b1
# mount | grep /b1
/dev/vdb1 on /b1 type btrfs (ro,relatime,space_cache,subvolid=5,subvol=/)
# btrfs send /b1/sv1_20160506 -f /tank1/b1.send
At subvol /b1/sv1_20160506
# ls -l /tank1/b1.send
-rw-rw-r-- 1 root root 2177404 Jun 7 01:24 /tank1/b1.send
이것이 귀하의 시스템에서 작동하지 않는 이유에 대해 두 가지 가능성을 생각할 수 있습니다(그러나 다른 경우도 있을 수 있으며 이들 중 어느 것도 반드시 정확하지는 않습니다).
btrfs를 작성해야 할 수도
/tmp
있고/tmp
하위 디렉토리일 수도 있습니다/
. 그럴 가능성은 낮지만 ramdisk에 tmpfs를 마운트하는 것은 가치가 있을 수 있습니다/tmp
.btrfs fs 가 손상되었기 때문에 btrfs가
/
제대로 작동하지 않습니다.
두 경우 모두 가능한 해결 방법은 복구 CD/DVD/USB 등에서 부팅하는 것입니다.btrfs 지원 있음(갈라진그리고크론질라좋은 옵션입니다) btrfs send
거기서 스냅샷을 찍어보세요(외부 백업 디스크를 RW로 수동으로 마운트한 후).