J'ai un serveur de sauvegarde Ubuntu 16.04 avec un disque dur 8x10TB via un fond de panier SATA 3.0. Les 8 hard-disques sont assemblés à un RAID6, un système de fichiers EXT4 est utilisé. Ce système de fichiers stocke une énorme quantité de petits fichiers avec de très nombreuses opérations de recherche mais faible IO _ débit. En fait, il existe de nombreux petits fichiers de différents serveurs qui obtiennent des snappshottées via rsnapshot tous les jours (multiples inodes directs aux mêmes fichiers. J'ai une très mauvaise performance depuis le système de fichiers (60TB Net) dépassant une utilisation de 50%. Pour le moment, la L'utilisation est à 75% et a
du -sch /backup-root/
prend plusieurs jours (!). La machine a 8 cœurs et 16 g de RAM. Le RAM est totalement utilisé par le cache de système de fichiers OS, 7 de 8 noyaux toujours inactifs à cause de l'iowait.
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: 5af205b0-d622-41dd-990e-b4d660c12bd9
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 912203776
Block count: 14595257856
Reserved block count: 0
Free blocks: 4916228709
Free inodes: 793935052
First block: 0
Block size: 4096
Fragment size: 4096
Group descriptor size: 64
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 2048
Inode blocks per group: 128
RAID stride: 128
RAID stripe width: 768
Flex block group size: 16
Filesystem created: Wed May 31 21:47:22 2017
Last mount time: Sat Apr 14 18:48:25 2018
Last write time: Sat Apr 14 18:48:18 2018
Mount count: 9
Maximum mount count: -1
Last checked: Wed May 31 21:47:22 2017
Check interval: 0 (<none>)
Lifetime writes: 152 TB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
First Orphan inode: 513933330
Default directory hash: half_md4
Directory Hash Seed: 5e822939-cb86-40b2-85bf-bf5844f82922
Journal backup: inode blocks
Journal features: journal_incompat_revoke journal_64bit
Journal size: 128M
Journal length: 32768
Journal sequence: 0x00c0b9d5
Journal start: 30179
Je manque d'expérience avec ce type d'utilisation du système de fichiers. Quelles options dois-je accorder cela? Quel système de fichiers fonctionnerait mieux avec ce scénario? Existe-t-il des options pour impliquer RAM pour d'autres options de mise en cache que la construction d'OS-Build-in?
Comment gérez-vous de très grandes quantités de petits fichiers sur de grandes assemblées RAID?
Merci, Sebastian
Merci à tous ceux qui ont donné une réponse à ma question.
Tout d'abord, j'ai ajouté la quantité maximale de RAM au tableau. Malheureusement, la Commission ne prend en charge que 64 Go de RAM. J'ai observé le comportement après l'expansion, et c'était décevant. Toutes les disponibilités disponibles RAM ont été utilisées pour IO cache, la performance de la sauvegarde RSNApshot n'a pas amélioré de manière mesurable.
Je devais donc tirer la grande masse. J'ai ajouté deux disques NVME de 1 To et les assemblés à un RAID 1. Le RAID 6 composé de 8 heures de disque dur de 10 To est démonté sur un RAID 1 (composé de disque dur 2x 10TB, EXT4) et un RAID 5 (composé de 6x10TB HDD). Le RAID 1 contient maintenant le système d'exploitation et la copie de travail des serveurs (qui obtiennent rsynd 4 fois par jour à ce lecteur).
Le RAID5 est maintenant un dispositif de sauvegarde BCache, soutenu par le NVME-RAID 1 et formaté avec EXT4. Ce lecteur contient les copies rsnapshot. Chaque nuit, les fichiers sont rsyncés du RAID1 au RAID5, qui met en évidence l'Io-débit du RAID5 par rapport à l'ancien RAID6, qui contenait les copies de travail et les instantanés de sauvegarde. Grâce au BCACHACH, pas littéralement chaque fichier est écrit aux disques, mais tous les changements sur un bloc sont écrits une fois, même s'il contient plusieurs changements de fichier Singlederths. Cela a encore diminué IOPS sur le disque dur.
Enfin, j'ai changé ma configuration rsnapshot. Autrefois, il y avait 31 instantanés quotidiens et 18 instantanés mensuels, ce qui a entraîné 49 générations de sauvegarde. Maintenant, j'ai la conception classique de 7D/4W/12m/1Y, qui réduit la quantité de générations de sauvegarde jusqu'à 24.
Après ces modifications (et avec le 64GB RAM mentionné ci-dessus), la durée d'un instantané est descendue de ~ 20 heures à 1,5 heure. Les appareils BCACHE ont un taux de hauteur de cache de 82% ( après 6 semaines d'exploitation régulière).
Mission accomplie. Merci à vous tous pour vos pensées et vos commentaires.
J'ai une configuration similaire (bien que petite), avec des disques 12x 2TB dans un tableau RAID6, utilisé à la même manière (rsnapshot
Sauvegarde Server).
Tout d'abord, il est parfaitement normal pour du -hs
Pour prendre autant de temps sur un système de fichiers aussi vaste et utilisé. De plus, du
comptes pour les hardlinks, qui causent une charge de processeur considérable et enthousiaste en plus de l'évidence IO Charge.
Votre lenteur est due aux métadonnées du système de fichiers situées dans des blocs très lointains (en termes de LBA), causant de nombreuses recherches. En tant que disque RPM de 7,2k normal fournit environ 100 iops, vous pouvez voir comment des heures, sinon jours, sont nécessaires pour charger toutes les métadonnées.
Quelque chose que vous pouvez essayer de (non-destructivement) améliorent la situation:
mlocate/slocate
indexer votre /backup-root/
(vous pouvez utiliser l'installation Facilitive Prunefs pour éviter que cela) ou une corbeille de cache de métadonnées altérera sévèrement votre temps de sauvegarde;du
sur /backup-root/
. Si nécessaire, courez du
uniquement sur le sous-dossier spécifique intéressé;vfs_cache_pressure
de la valeur par défaut (100) à un (10 ou 20) plus conservateur (10 ou 20). Cela indiquera au noyau de préférer la mise en cache des métadonnées, plutôt que la mise en cache de données; Cela devrait à son tour accélérer le rsnapshot/rsync
phase de découverte;D'autres choses que vous pouvez essayer - mais ce sont des opérations destructrices:
Ce système de fichiers stocke une énorme quantité de petits fichiers avec de très nombreuses opérations de recherche mais faible IO Début.
????
C'est une chose qui attrape beaucoup de gens de nos jours. Hélas, les FSE conventionnels n'échelent pas bien ici. Je peux vous donner probablement quelques conseils en matière de configuration que vous avez déjà: EXT4 sur RAID-6 sur HDDS:
vm.vfs_cache_pressure
Down, disons à 1. Il s'agirait Changer de biais de cache vers la préservation de plus de métadonnées (Inode, DENTAY) au lieu de données elles-mêmes et il devrait avoir un effet positif dans la réduction du nombre de recherches.data=journal
upd. : puisqu'il est passé à être Linux logiciel RAID (LSR) RAID-6, voici un élément supplémentaire:
echo 32768 | Sudo tee /sys/devices/virtual/block/md*/md/stripe_cache_size
- Mais faites-le avec précaution (utilisez une valeur moindre si nécessaire) car la taille est multiple de la taille de la morceau et en fonction de la taille du morceau que vous avez choisi, cela prendrait une quantité différente de RAM- C'est probablement la majeure partie de ce qui peut être amélioré avec la ré-conception de zéro.
J'ai une très mauvaise performance depuis que le système de fichiers (60TB Net) a dépassé une utilisation de 50%. Pour le moment, l'utilisation est à 75%
C'est un problème très grave parce que le niveau d'occupation de l'espace disque élevé ne s'aggrave que la fragmentation. Et plus de fragmentation signifie plus cherche. L'émerveillement n'est plus pourquoi il a donné des performances plus ou moins acceptables avant d'atteindre 50%. Beaucoup de manuels ont des recommandations claires pour ne pas permettre que les BAS se développent derrière 75-80%.
RAID6 ne vous aide pas beaucoup dans ce cas, comme ZFS pourrait permettre d'activer beaucoup plus de métadonnées et d'accès aux annuaires plus rapides tout en maintenant les vitesses de la même manière.
RAID-6 Stripes Drive, donc tous IO va à tous les lecteurs. C'est assez inefficace avec de nombreux petits fichiers. Cependant ce n'est probablement pas votre problème principal qui est probablement ...
EXT4 n'est pas bien adapté aux gros systèmes de fichiers avec des millions de fichiers. Utilisez [~ # ~] XFS [~ # ~ ~]. J'ai des systèmes de fichiers XFS fonctionnant aussi gros que 1,2 pb et avec jusqu'à 1 milliard de fichiers, aucun problème. tilisez simplement XFS.