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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.