Tests de performance sur Proxmox Backup Serveur

L’objectif de ce document est de présenter les résultats d’une série de tests que notre société a pu conduire sur la performance de Proxmox Backup Serveur (PBS) afin d’assurer une sauvegarde de fichiers sur une infrastructure CephFS sous Proxmox. L’infra cible comportera plusieurs TB de données stockée en mode fichier sur CephFS.

Nous avons donc souhaiter connaitre les performances réelles du PBS dans ce contexte.

Tests de perfomance

Nous avons lancé une série de tests destinés à valider les performances globales du serveur Proxmox Backup Serveur.

Afin de nous rapprocher d’un contexte d’utilisation standard, nous avons créé un script qui génère un nombre paramétrable de fichiers de taille aléatoire. Le script est présenté à cette page.

Différents contextes ont été testés et nous ont permis de produire la grille d’analyse suivante :

Nous sommes partis avec un point de montage qui comportait 70.000 fichiers et avons ajoutés 50.000 fichiers supplémentaires. Les fichiers sont des fichiers textes qui incluent des caractères aléatoires.

Résultat du premier backup (de 70.000 à 120.000 fichiers)

Paramètres initiaux :

  • 50.000 fichiers créées
    • 65% de fichiers entre 30 et 60Ko
    • 35% entre 1 et 40Mo
  • Total de la volumétrie avant la création des fichiers : 357Go
  • Lancement du script de création des 50.000 nouveaux fichiers
  • Total de la volumétrie après la création des fichiers : 761Go
root@dc1-pbs01:~# proxmox-backup-client backup CephFS.pxar:/mnt/mycephfs/test/gen_files --repository backup@pbs@localhost:BckpCephFSPool
Password for "backup@pbs": ************************
Starting backup: host/dc1-pbs01/2021-06-10T12:21:55Z
Client name: dc1-pbs01
Starting backup protocol: Thu Jun 10 14:22:16 2021
Downloading previous manifest (Wed Jun  9 19:26:36 2021)
Upload directory '/mnt/mycephfs/test/gen_files' to 'backup@pbs@localhost:8007:BckpCephFSPool' as CephFS.pxar.didx
CephFS.pxar: had to backup 404.78 GiB of 760.36 GiB (compressed 305.22 GiB) in 2476.23s
CephFS.pxar: average backup speed: 167.39 MiB/s
CephFS.pxar: backup was done incrementally, reused 355.58 GiB (46.8%)
Uploaded backup catalog (5.31 MiB)
Duration: 2476.65s
End Time: Thu Jun 10 15:03:33 2021

Soit une durée totale de 41'26" pour une sauvegarde de 404Go.

Résultats du second backup (de 120.000 à 170.000 fichiers)

Paramètres initiaux :

  • 50.000 fichiers créées
    • 65% de fichiers entre 30 et 60Ko
    • 35% entre 1 et 40Mo
  • Total de la volumétrie avant la création des fichiers : 761Go
  • Lancement du script de création des 50.000 nouveaux fichiers
  • Total de la volumétrie après la création des fichiers : 1,1To

Sur ce backup, nous avons en plus migrer.

root@dc1-pbs01:/mnt/mycephfs/test/gen_files# proxmox-backup-client backup CephFS.pxar:/mnt/mycephfs/test/gen_files --repository backup@pbs@localhost:BckpCephFSPool
Starting backup: host/dc1-pbs01/2021-06-10T14:08:19Z
Client name: dc1-pbs01
Starting backup protocol: Thu Jun 10 16:08:19 2021
Downloading previous manifest (Thu Jun 10 14:21:55 2021)
Upload directory '/mnt/mycephfs/test/gen_files' to 'backup@pbs@localhost:8007:BckpCephFSPool' as CephFS.pxar.didx

CephFS.pxar: had to backup 433.02 GiB of 1.03 TiB (compressed 326.53 GiB) in 3398.73s
CephFS.pxar: average backup speed: 130.46 MiB/s
CephFS.pxar: backup was done incrementally, reused 624.33 GiB (59.0%)
Uploaded backup catalog (7.52 MiB)
Duration: 3399.37s
End Time: Thu Jun 10 17:04:58 2021

Soit une durée totale de 57'05" pour une sauvegarde de 433Go.

Résultats du troisième backup (de 170.000 à 220.000 fichiers)

Paramètres initiaux :

  • 50.000 fichiers créées
    • 65% de fichiers entre 30 et 60Ko
    • 35% entre 1 et 40Mo
  • Total de la volumétrie avant la création des fichiers : 1,1To
  • Lancement du script de création des 50.000 nouveaux fichiers
  • Total de la volumétrie après la création des fichiers : 1,4To
root@dc1-pbs01:/mnt/mycephfs/test/gen_files# proxmox-backup-client backup CephFS.pxar:/mnt/mycephfs/test/gen_files --repository backup@pbs@localhost:BckpCephFSPool
Starting backup: host/dc1-pbs01/2021-06-10T16:01:00Z
Client name: dc1-pbs01
Starting backup protocol: Thu Jun 10 18:01:00 2021
Downloading previous manifest (Thu Jun 10 16:08:19 2021)
Upload directory '/mnt/mycephfs/test/gen_files' to 'backup@pbs@localhost:8007:BckpCephFSPool' as CephFS.pxar.didx
CephFS.pxar: had to backup 451.90 GiB of 1.32 TiB (compressed 340.76 GiB) in 3641.32s
CephFS.pxar: average backup speed: 127.08 MiB/s
CephFS.pxar: backup was done incrementally, reused 900.08 GiB (66.6%)
Uploaded backup catalog (9.73 MiB)
Duration: 3642.14s
End Time: Thu Jun 10 19:01:42 2021
root@dc1-pbs01:/mnt/mycephfs/test/gen_files#

Soit une durée totale de 61'10" pour une sauvegarde de 452 Go

Résultats du quatrième backup (de 220.000 à 270.000 fichiers)

Paramètres initiaux :

  • 50.000 fichiers créées
    • 65% de fichiers entre 30 et 60Ko
    • 35% entre 1 et 40Mo
  • Total de la volumétrie avant la création des fichiers : 1,4To
  • Lancement du script de création des 50.000 nouveaux fichiers
  • Total de la volumétrie après la création des fichiers : 1,7To
root@dc1-pbs01:~# proxmox-backup-client backup CephFS.pxar:/mnt/mycephfs/test/gen_files --repository backup@pbs@localhost:BckpCephFSPool
Password for "backup@pbs": ************************
Starting backup: host/dc1-pbs01/2021-06-11T10:24:06Z
Client name: dc1-pbs01
Starting backup protocol: Fri Jun 11 12:24:27 2021
Downloading previous manifest (Thu Jun 10 18:01:00 2021)
Upload directory '/mnt/mycephfs/test/gen_files' to 'backup@pbs@localhost:8007:BckpCephFSPool' as CephFS.pxar.didx
CephFS.pxar: had to backup 468.82 GiB of 1.61 TiB (compressed 353.53 GiB) in 4430.96s
CephFS.pxar: average backup speed: 108.34 MiB/s
CephFS.pxar: backup was done incrementally, reused 1.15 TiB (71.6%)
Uploaded backup catalog (11.94 MiB)
Duration: 4431.80s
End Time: Fri Jun 11 13:38:19 2021
root@dc1-pbs01:~#

Soit une durée totale de 1h14'25" pour une sauvegarde de 469 Go

Tests complémentaires : migration d’une VM en cours de génération des fichiers

Contexte du test Nous avons lancé le script de création des fichiers depuis une VM. La VM créée les fichiers sur le montage CephFS qui est partagé entre les VMs. Nous lançons la migration de la VM d’un nœud du cluster à un autre.

2021-06-10 15:42:11 starting migration of VM 102 to node 'dc1-pve01' (192.168.140.101)
2021-06-10 15:42:11 starting VM 102 on remote node 'dc1-pve01'
2021-06-10 15:42:14 start remote tunnel
2021-06-10 15:42:14 ssh tunnel ver 1
2021-06-10 15:42:14 starting online/live migration on unix:/run/qemu-server/102.migrate
2021-06-10 15:42:14 set migration capabilities
2021-06-10 15:42:14 migration downtime limit: 100 ms
2021-06-10 15:42:14 migration cachesize: 256.0 MiB
2021-06-10 15:42:14 set migration parameters
2021-06-10 15:42:14 start migrate command to unix:/run/qemu-server/102.migrate
2021-06-10 15:42:15 migration active, transferred 113.5 MiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:16 migration active, transferred 225.8 MiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:17 migration active, transferred 337.6 MiB of 2.0 GiB VM-state, 110.6 MiB/s
2021-06-10 15:42:18 migration active, transferred 449.9 MiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:19 migration active, transferred 562.2 MiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:20 migration active, transferred 673.9 MiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:21 migration active, transferred 786.2 MiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:22 migration active, transferred 898.3 MiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:23 migration active, transferred 1010.4 MiB of 2.0 GiB VM-state, 110.6 MiB/s
2021-06-10 15:42:24 migration active, transferred 1.1 GiB of 2.0 GiB VM-state, 112.8 MiB/s
2021-06-10 15:42:25 migration active, transferred 1.2 GiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:26 migration active, transferred 1.3 GiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:27 migration active, transferred 1.4 GiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:28 migration active, transferred 1.5 GiB of 2.0 GiB VM-state, 110.1 MiB/s
2021-06-10 15:42:29 migration active, transferred 1.6 GiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:30 migration active, transferred 1.8 GiB of 2.0 GiB VM-state, 111.7 MiB/s
2021-06-10 15:42:31 migration active, transferred 1.9 GiB of 2.0 GiB VM-state, 121.4 MiB/s
2021-06-10 15:42:32 migration active, transferred 2.0 GiB of 2.0 GiB VM-state, 110.6 MiB/s
2021-06-10 15:42:33 migration active, transferred 2.1 GiB of 2.0 GiB VM-state, 110.8 MiB/s
[…]
2021-06-10 15:42:50 xbzrle: send updates to 21647 pages in 83.7 MiB encoded memory, cache-miss 100.00%, overflow 21094
2021-06-10 15:42:51 migration active, transferred 4.0 GiB of 2.0 GiB VM-state, 222.7 MiB/s
2021-06-10 15:42:51 xbzrle: send updates to 50959 pages in 198.1 MiB encoded memory, cache-miss 100.00%, overflow 50332
2021-06-10 15:42:52 migration active, transferred 4.1 GiB of 2.0 GiB VM-state, 112.9 MiB/s
2021-06-10 15:42:52 xbzrle: send updates to 64185 pages in 249.8 MiB encoded memory, cache-miss 100.00%, overflow 63554
2021-06-10 15:42:53 migration active, transferred 4.2 GiB of 2.0 GiB VM-state, 121.4 MiB/s
2021-06-10 15:42:53 xbzrle: send updates to 64656 pages in 251.6 MiB encoded memory, cache-miss 100.00%, overflow 64025
2021-06-10 15:42:54 migration active, transferred 4.3 GiB of 2.0 GiB VM-state, 111.3 MiB/s
2021-06-10 15:42:54 xbzrle: send updates to 64822 pages in 252.3 MiB encoded memory, cache-miss 100.00%, overflow 64191
2021-06-10 15:42:55 migration active, transferred 4.5 GiB of 2.0 GiB VM-state, 111.3 MiB/s
2021-06-10 15:42:55 xbzrle: send updates to 64823 pages in 252.3 MiB encoded memory, cache-miss 100.00%, overflow 64192
2021-06-10 15:42:56 migration active, transferred 4.6 GiB of 2.0 GiB VM-state, 111.4 MiB/s
2021-06-10 15:42:56 xbzrle: send updates to 64824 pages in 252.3 MiB encoded memory, cache-miss 100.00%, overflow 64193
2021-06-10 15:42:57 migration active, transferred 4.7 GiB of 2.0 GiB VM-state, 111.3 MiB/s
2021-06-10 15:42:57 xbzrle: send updates to 64824 pages in 252.3 MiB encoded memory, cache-miss 100.00%, overflow 64193
2021-06-10 15:42:58 migration active, transferred 4.8 GiB of 2.0 GiB VM-state, 111.3 MiB/s
2021-06-10 15:42:58 xbzrle: send updates to 64824 pages in 252.3 MiB encoded memory, cache-miss 100.00%, overflow 64193
2021-06-10 15:42:59 migration active, transferred 4.9 GiB of 2.0 GiB VM-state, 112.0 MiB/s
2021-06-10 15:42:59 xbzrle: send updates to 64824 pages in 252.3 MiB encoded memory, cache-miss 100.00%, overflow 64193
2021-06-10 15:43:00 migration active, transferred 5.0 GiB of 2.0 GiB VM-state, 111.2 MiB/s
2021-06-10 15:43:00 xbzrle: send updates to 64824 pages in 252.3 MiB encoded memory, cache-miss 100.00%, overflow 64193
2021-06-10 15:43:01 migration active, transferred 5.1 GiB of 2.0 GiB VM-state, 111.3 MiB/s
2021-06-10 15:43:01 xbzrle: send updates to 64824 pages in 252.3 MiB encoded memory, cache-miss 100.00%, overflow 64193
2021-06-10 15:43:02 migration active, transferred 5.2 GiB of 2.0 GiB VM-state, 217.3 MiB/s
2021-06-10 15:43:02 xbzrle: send updates to 68271 pages in 265.0 MiB encoded memory, cache-miss 82.42%, overflow 67435
2021-06-10 15:43:03 migration active, transferred 5.4 GiB of 2.0 GiB VM-state, 239.8 MiB/s
2021-06-10 15:43:03 xbzrle: send updates to 99979 pages in 379.0 MiB encoded memory, cache-miss 82.42%, overflow 96604
2021-06-10 15:43:04 migration active, transferred 5.5 GiB of 2.0 GiB VM-state, 113.6 MiB/s
[…]
2021-06-10 15:43:44 auto-increased downtime to continue migration: 400 ms
2021-06-10 15:43:44 average migration speed: 22.9 MiB/s - downtime 291 ms
2021-06-10 15:43:44 migration status: completed
2021-06-10 15:43:47 migration finished successfully (duration 00:01:37)
TASK OK

Pendant la migration nous avions deux shells qui tournaient, l’un assurant l’exécution du script de création des fichiers et le second comme simple vérification. Aucun arrêt de la copie, aucune interruption de la création des fichiers n’a été à déplorer.

Conclusion

Ce que laisse apparaître ces tests c’est qu’à ce stade (Proxmox Backup Serveur 1.12), le backup de fichiers à plat réponds à une fonction linéaire simple ou la durée augmente en fonction de la taille des fichiers.
Aucun optimisation n’est réalisée et plus il y a de fichiers à sauvegarder, plus cela prendra de temps.

A chaque itération de la sauvegarde l’intégralité du backup est re-calculé !
PBS peut donc convenir pour une sauvegarde de quelques Go de données sur un volume, mais certainement pas sur des gros volumes (Tb, Pb) ou le ∆ entre les backups est important.

PBS est donc réservé à ce stade pour la sauvegarde de données stockées sur RBD (donc des volumes sources des VMs stockés sur Ceph).

Cela est certainement amené à évoluer dans le temps, la date de publication de l’article est donc importante.

Déploiement de DynFi Manager sur Docker
 
Notre générateur de fichiers aléatoire en shell
Besoin d’experts pour votre cybersécurité réseau ?

Découvrez nos services infogérés

Articles reliés