Suivre

Dans le gestionnaire de fichier (Caja), copier-coller d'un dossier de 1,4 Go sous btrfs: INSTANTANÉ 😍

Et ne consomme pas d'espace disque supplémentaire : 😍

C'est trop cool.

@gordon @sebsauvage *après un "AAA :(" de plusieurs secondes*
Ah oui SmartOS je connais. (c'est basé ZFS mais bon btrfs en est un clone)

@lanodan
😅 ouais il était temps que j'évolue.

Quand je pense au temps que j'ai passé sur de "vieux" fs.

@sebsauvage j'ai remarqué le truc j'ai fait: "Déjà !?"

J'ai regardé la copie histoire de voir si je rêvais ou pas 😅

@sebsauvage hmm, l'est vraiment optimisé ton gestionnaire de fichier… il utilise sendfile??

@mmu_man

Ben justement: pour que ça fasse ça, vu que btrfs ne fait pas de déduplication en temps réel, ça veut dire que Caja (ou la lib qu'il utilise pour manipuler les fichiers) a connaissance de btrfs.

Comme s'il utilisait par défaut l'option --reflink=always de la commande cp.

@sebsauvage @mmu_man Je pense que c’est plutôt un équivalent de reflink=auto (qui est préférable, si tu veux pas que ça échoue bêtement :-p)

@sebsauvage

Un mv est instantané en shell en même temps, si c'est sur la même partition, est-ce que le copier-coller ne serait pas sur la même partition ? Sinon, il est possible, pour un cp, qu'à la façon des snapshot qui conservent les pointeurs vers les fichiers et ne les suppriment pas du disque, lors d'un rm post-snapshot, BTRFS se contente de copier les pointeurs vers les fichiers ?

@mmu_man :
ça retourne l'erreur
We couldn’t find any code matching 'sendfile' in mate-desktop/caja

@popolon @sebsauvage la copie de fichier sur Unix se fait normalement par un read + write en boucle…
Il n'y a pas d'appel system pour faire une copie.
Sauf link() qui en fait crée un hardlink, mais ça n'est pas une copie, juste une nouvelle entrée dans le fs pour le même fichier.

@popolon @mmu_man

Non là c'est un cp, pas un mv.
Mais oui, c'est dû à au fonctionnement de la copie avec --reflink qui permet de ne copier que la référence aux blocs de données.

On arrive à la même chose en utilisant cp --reflink=auto (tant que, bien sûr, c'est sur le même système de fichiers)

@sebsauvage @mmu_man
Intéressant, je ne connaissait pas cette fonctionnalité.

D'après le man de cp, comme il n'y a pas plus de précision, je me demande si ça se limite aux FS avancés, type ZFS/BTRFS :

When --reflink[=always] is specified, perform a lightweight copy, where the data blocks are copied only when modified. If this is not possible the copy fails, or if --reflink=auto is specified, fall back to a standard copy. Use --reflink=never to ensure a standard copy is performed.

@popolon @mmu_man

Je pense que si le fs supporte la fonctionnalité, c'est utilisé, mais dans le cas d'ext4, je pense que ça fait purement une copie de données (et non de référence des blocs).

@sebsauvage @mmu_man

Bon, je viens de faire un test et je confirme, sur BTRFS un fichier de 117 Mo,
time :
real 0m0,013s
user 0m0,000s
sys 0m0,002s

sur du ext4, gros fichier aussi, ça commençait à prendre plusieurs seconds, j'ai fait un CTRL-C

@sebsauvage le système de fichier #btrfs fonctionne en « copie à l’écriture ».

Du coup, tout est prêt pour optimiser la copie de fichier.

Par contre la perception de vitesse lors de l’exécution de la commande « cp » peut entraîner une incompréhension de lenteur plus tard si le fichier est modifié

unix.stackexchange.com/a/15263

(cc @popolon @mmu_man)

@DaD
Disons qu'il ne faut pas passer à btrfs sans connaître ses particularités 😊
@popolon @mmu_man

@DaD @sebsauvage @mmu_man
Merci pour la remarque, mais c'est souvent négligeable.

En dehors de l'aspect vitesse, cela fait en tout cas gagner énormément de place sur disque dans pas mal de cas par rapport à un snapshot. ou par rapport à une copie complète de fichier.

C'est également très intéressant lorsqu'on veut dupliquer une vm par exemple, pour des tests ou depuis un master. Enfin, j'entrevoie des gains de place/temps dans des tas de cas. D'autant plus que ça marche également sur ZFS.

@popolon Oui cela permet de gagner de la place.

Nous testons pour notre prochaine infrastructure #OpenNebula le comportement de #Lizardfs avec les pilotes qui vont bien afin de profiter de la commande « lizardfs makesnapshot ».

Bon, ce n’est pas un format sur disque comme btrfs mais c’est le même principe.

github.com/cloudweavers/lizard

(cc @sebsauvage @mmu_man)

@DaD @sebsauvage @mmu_man
Après d'avantage de tests, il semble que la vitesse du cp --reflink=auto du système que j'ai utilisé pour les tests ZFS sont probablement dus au cache. Je ne sais pas trop comment vérifier si cela utilise bien cette fonctionnalité du coup.

@DaD @sebsauvage @mmu_man

Il y a bien eu des échanges à propos de son implémentation sur ZFS/Linux aux environs de 2013~2014.

@popolon @sebsauvage je suis curieux de savoir comment c'est implémenté…

Je découvre l'appel system copy_file_range:
man7.org/linux/man-pages/man2/

@popolon @sebsauvage

« copy_file_range() gives filesystems an opportunity to implement "copy acceleration" techniques, such as the use of reflinks (i.e., two or more inodes that share pointers to the same copy-on-write disk blocks) or server-side-copy (in the case of NFS). »

Ça doit être ça alors.

@mmu_man @sebsauvage

Le code source de cp pour info :

git.savannah.gnu.org/cgit/core

Elle prépare différentes options en fonction des paramètres et appelle la fonction copy (qui elle même appelle copy_internal) de copy.c

git.savannah.gnu.org/cgit/core

J'ai la flemme de continuer à chercher...

@popolon @sebsauvage ça j'avais déjà fouillé pour chercher où ajouter la copie des xattrs dans Haiku (tj pas fait)…

@mmu_man @sebsauvage
Petite question, est-ce que Haiku est compatible avec BeOS au niveau de l'API ? Si c'est le cas, faudrait que je branche le HDD de ma BeBox sur un PC pour tenter de recompiler mes devs de l'époque. La dernière version de l'OS que j'avais c'était la R5 (PowerPC, BeBox oblige) de mémoire. Je sais plus si il y avait une version x86 sur le dernier CD que m'avait filé Be.

@popolon oué R5 tournait sur les 2.

J'ai une BeBox aussi, j'arriverai ptet un jour à finir le portage PPC…
(mais on accepte les patches)

@mmu_man

Top, pour l'ABI. La mienne ne boot plus j'ai que le logo animé de BeOS, je sais pas trop pourquoi, jamais pris le temps de vérifier si le HDD est mort finalement, ou problème de bootblock, ou autre problème matériel.

@popolon hmm, la barre d'espace devrait donner un menu.

Mais par défaut c'est pas trop verbeux la bebox oué.

github.com/HaikuArchives/ récupère les codes sources orphelins sinon 🙂

@mmu_man
Si ça se trouve il y a de la console pour le debuggage possible sur un des ports RS232 série/joystick ?

@popolon normalement oui y a les messages de debug dessus.

@mmu_man
Par curiosité, tu allais dans les GeekTea, chez Be à la Défense ? Si ça se trouve on s'est déjà rencontré là bas à l'époque ?

@mmu_man
On doit pouvoir faire tourner du BeOS de BeBox sur du Qemu PPC j'imagine, comme ça tournait sur des clones de macintosh PPC (pendant la très courte période d'ouverture d'Apple sans Jobs) ???

@popolon y a eu des tentatives mais le support est pas fini.
MAME émule un peu aussi.

Déplier

@mmu_man @sebsauvage
Cette fonctionnalité marche aussi sur #ZFS (testé), implémenté vers 2014 et #XFS.visiblement.

ça va faire gagner des heures dans les copies et des Go sur disque ça. Un peu d'économie pour la #planète au passage :).

Inscrivez-vous pour prendre part à la conversation
Framapiaf

Le réseau social de l'avenir : Pas d'annonces, pas de surveillance institutionnelle, conception éthique et décentralisation ! Possédez vos données avec Mastodon !