Impossible de supprimer un instantané btrfs

8

Je ne peux pas supprimer le snapshot "apt-snapshot-release-upgrade-saucy-2013-10-19_00: 52: 26". Voici les détails:

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' 

Cependant, je peux supprimer un instantané créé par moi:

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: Il n'y a rien enregistré dans le journal du noyau:

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:~#

Mais Strace donne un indice:

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

Edit2: j'ai monté le volume ...

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

Edit3: Solution

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

Toute aide serait appréciée.

Mircea Vutcovici
la source
Pouvez-vous le supprimer d'une session Live? Peut-être qu'il est toujours utilisé. grepping /proc/self/mountinfone suffit pas, par exemple, il peut être utilisé comme montage de liaison ou s'il a été démonté avec umount -l(démontage paresseux) et je ne sais pas s'il peut y avoir d'autres cas.
ignis
Il n'est pas du tout monté. Le système est mon serveur domestique. Et je pense que l'instantané a été pris après la mise à niveau d'Ubuntu. Je cours maintenant Ubuntu 13.10 64bit
Mircea Vutcovici
Qu'entendez-vous par «session en direct»?
Mircea Vutcovici
Je veux dire Live DVD ou Live USB.
ignis
Veuillez publier la sortie de dmesg | tailaprès l' btrfs subvolume deleteéchec.
ignis

Réponses:

15

L'instantané existe à la racine réelle du système de fichiers, ce qui n'est pas ce que vous avez monté dans /. Vous avez le sous-volume / @ monté dans /, donc il n'y a pas un tel fichier avec ce nom. Vous devez monter le vrai volume racine quelque part et utiliser ce chemin pour référencer l'instantané.

Ou vous pouvez utiliser à la apt-btrfs-snapshot deleteplace.

psusi
la source
2
J'ai eu tellement de problèmes de montage et de suppression dans le passé, mais je n'ai jamais eu de problème de fonctionnementapt-btrfs-snapshot delete
mchid
Contrairement à la gestion normale des instantanés btrfs, apt-btrfs-snapshot doit être exécuté à partir d'un système en cours d'exécution et non d'une partition montée.
mchid
3
@mchid, quoi? La gestion normale des instantanés btrfs est exécutée à partir d'un système en cours d'exécution ... apt-btrfs-snapshot est juste un script apt qui exécute automatiquement l'instantané btrfs normal chaque fois que vous avez installé / mis à niveau / supprimez des paquets apt.
psusi
Mon problème est que je suis dans une situation de disque plein à cause des instantanés, donc je ne peux pas installer apt-btrfs-snapshot.
fccoelho
Vous devez démarrer à partir d'une clé USB pour supprimer des éléments lorsque vous manquez d'espace. En outre, je suppose que vous pouvez supprimer d'un système en cours d'exécution si vous montez le volume sur / mnt .
mchid