btrfs 스냅 샷을 삭제할 수 없습니다


8

"apt-snapshot-release-upgrade-saucy-2013-10-19_00 : 52 : 26"btrfs 스냅 샷을 삭제할 수 없습니다. 세부 사항은 다음과 같습니다.

root@cioco:~# btrfs subvolume list -s /
ID 261 gen 246 cgen 245 top level 5 otime 2013-10-19 00:52:26 path @apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26
root@cioco:~# btrfs subvolume list  /
ID 256 gen 334584 top level 5 path @
ID 258 gen 334134 top level 5 path @home
ID 261 gen 246 top level 5 path @apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26
ID 267 gen 334580 top level 256 path var/lib/lxc/mythtv/rootfs
ID 268 gen 334584 top level 256 path var/lib/lxc/jira/rootfs
ID 278 gen 279278 top level 256 path var/lib/lxc/michele/rootfs
root@cioco:~# grep btrfs /proc/self/mountinfo
20 1 0:16 /@ / rw,relatime - btrfs /dev/sda2 rw,compress=zlib,space_cache
39 20 0:16 /@home /home rw,relatime - btrfs /dev/sda2 rw,compress=zlib,space_cache

root@cioco:~# btrfs subvolume delete /@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26
ERROR: error accessing '/@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26' 

그러나 내가 만든 스냅 샷을 삭제할 수 있습니다.

root@cioco:~# btrfs subvolume snapshot / root-snap
Create a snapshot of '/' in './root-snap'
root@cioco:~# btrfs subvolume list -s /
ID 261 gen 246 cgen 245 top level 5 otime 2013-10-19 00:52:26 path @apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26
ID 309 gen 334592 cgen 334592 top level 256 otime 2014-03-31 02:19:08 path root/root-snap
root@cioco:~# btrfs subvolume delete /root/root-snap
Delete subvolume '/root/root-snap'

EDIT1 : 커널 로그에 아무것도 기록되지 않았습니다 :

root@cioco:~# dmesg -c >/dev/null
root@cioco:~# btrfs subvolume delete /@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26
ERROR: error accessing '/@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26'
root@cioco:~# dmesg
root@cioco:~#

그러나 strace는 힌트를 제공합니다.

root@cioco:~# strace btrfs subvolume delete /@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26
...
stat("/@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26", 0x7fffe88ebb60) = -1 ENOENT (No such file or directory)
write(2, "ERROR: error accessing '/@apt-sn"..., 82ERROR: error accessing '/@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26'
) = 82

편집 2 : 볼륨을 마운트했습니다 ...

root@cioco:~# mkdir /snapshot
root@cioco:~# mount /dev/sda2 /snapshot -o subvol=/@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26
root@cioco:~# grep btrfs /proc/self/mountinfo
20 1 0:16 /@ / rw,relatime - btrfs /dev/sda2 rw,compress=zlib,space_cache
39 20 0:16 /@home /home rw,relatime - btrfs /dev/sda2 rw,compress=zlib,space_cache
61 20 0:16 /@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26 /snapshot rw,relatime - btrfs /dev/sda2 rw,compress=zlib,space_cache
root@cioco:~# btrfs subvolume delete /snapshot/
Delete subvolume '//snapshot'
ERROR: cannot delete '//snapshot' - Invalid argument

root@cioco:~# strace btrfs subvolume delete /snapshot/
...
stat("/snapshot", {st_mode=S_IFDIR|0755, st_size=230, ...}) = 0
brk(0)                                  = 0x2206000
brk(0x2228000)                          = 0x2228000
lstat("/snapshot", {st_mode=S_IFDIR|0755, st_size=230, ...}) = 0
stat("/", {st_mode=S_IFDIR|0755, st_size=242, ...}) = 0
openat(AT_FDCWD, "/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 23), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd8ad2ae000
write(1, "Delete subvolume '//snapshot'\n", 30Delete subvolume '//snapshot'
) = 30
ioctl(3, BTRFS_IOC_SNAP_DESTROY, 0x7fff5f1e5878) = -1 EINVAL (Invalid argument)
close(3)                                = 0
write(2, "ERROR: cannot delete '//snapshot"..., 53ERROR: cannot delete '//snapshot' - Invalid argument
) = 53
...

root@cioco:~# dmesg
[3172764.459166] device label cioco-root devid 1 transid 336213 /dev/sda2

편집 3 : 솔루션

root@cioco:~# mount /dev/sda2 /btrfs-root/
root@cioco:~# ls -l /btrfs-root/
total 0
drwxr-xr-x 1 root root 262 Apr  1 08:31 @
drwxr-xr-x 1 root root 230 Oct 16 22:53 @apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26
drwxr-xr-x 1 root root   6 Oct 16 22:13 @home
root@cioco:~# btrfs subvolume delete /btrfs-root/@apt-snapshot-release-upgrade-saucy-2013-10-19_00\:52\:26/
Delete subvolume '/btrfs-root/@apt-snapshot-release-upgrade-saucy-2013-10-19_00:52:26'
root@cioco:~# dmesg
[41113.537617] device label cioco-root devid 1 transid 337615 /dev/sda2

도움을 주시면 감사하겠습니다.


라이브 세션에서 삭제할 수 있습니까? 아직 사용 중일 수 있습니다. grepping /proc/self/mountinfo으로 충분하지 않습니다. 예를 들어 바인드 마운트로 사용되거나 umount -l(lazy unmount)로 마운트 해제 된 경우 다른 경우가 있을지 모르겠습니다.
ignis

전혀 장착되어 있지 않습니다. 시스템은 내 홈 서버입니다. 그리고 우분투 업그레이드 후 스냅 샷이 생성되었다고 생각합니다. 나는 지금 우분투 13.10 64 비트를 실행
Mircea Vutcovici

"실시간 세션"이란 무엇입니까?
Mircea Vutcovici

나는 라이브 DVD 또는 라이브 USB를 의미합니다.
ignis

실패 dmesg | tail후의 출력을 게시하십시오 btrfs subvolume delete.
ignis

답변:


15

스냅 샷은 파일 시스템의 실제 루트에 존재하며 이는 /에 마운트 된 것이 아닙니다. / @ 하위 볼륨이 /에 마운트되어 있으므로 해당 이름의 파일이 없습니다. 실제 루트 볼륨을 어딘가에 마운트하고 해당 경로를 사용하여 스냅 샷을 참조해야합니다.

또는 apt-btrfs-snapshot delete대신 사용할 수 있습니다 .


2
과거에 마운트 및 삭제하는 데 많은 문제가 있었지만 실행에 문제가 없었습니다.apt-btrfs-snapshot delete
mchid

일반적인 btrfs 스냅 샷 관리와 달리 apt-btrfs-snapshot은 마운트 된 파티션이 아니라 실행중인 시스템에서 실행됩니다.
mchid

3
@mchid, 무엇? 일반 btrfs 스냅 샷 관리는 실행중인 시스템에서 실행됩니다 ... apt-btrfs-snapshot은 패키지를 설치 / 업그레이드 / 제거 할 때마다 일반 btrfs 스냅 샷을 자동으로 실행하는 apt 스크립트입니다.
psusi

내 문제는 스냅 샷으로 인해 디스크가 가득 찬 상황이므로 설치할 수 없다는 것 apt-btrfs-snapshot입니다.
fccoelho

공간이 부족할 때 물건을 삭제하려면 USB로 부팅해야합니다. 또한 볼륨을 / mnt에 마운트하면 실행중인 시스템에서 삭제할 수 있다고 생각합니다 .
mchid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.