Sur un Linux VM je voudrais TESTER la surveillance NAGIOS plus profondément que simplement éteindre le VM ou déconnecter le NIC virtuel; je voudrais tester ou "appliquer une alarme d'espace disque" en occupant plusieurs% d'espace libre pendant une courte période.
Je sais que je pourrais simplement utiliser un
dd if=/dev/zero of=/tmp/hd-fillup.zeros bs=1G count=50
ou quelque chose comme ça ... mais cela prend du temps et charge le système et nécessite encore du temps lors de la suppression des fichiers de test avec rm.
Existe-t-il un moyen rapide (presque instantané) de remplir une partition qui ne charge pas le système et prend beaucoup de temps? je pense à quelque chose qui alloue de l'espace, mais ne le "remplit" pas.
La façon la plus rapide de créer un fichier dans un système Linux est d'utiliser fallocate
:
fallocate -l 50G file
De l'homme:
fallocate est utilisé pour manipuler l'espace disque alloué pour un fichier, soit pour le désallouer, soit pour le préallouer.
Pour les systèmes de fichiers qui prennent en charge l'appel système fallocate, la préallocation se fait rapidement en allouant des blocs et en les marquant comme non initialisés, ne nécessitant pas de IO pour les blocs de données. C'est beaucoup plus rapide que de créer un fichier en le remplissant de zéros.
Pris en charge pour XFS (depuis Linux 2.6.38), ext4 (depuis Linux 3.0), Btrfs (depuis Linux 3.7) et tmpfs (depuis Linux 3.5).
D'autres alternatives incluent:
La possibilité de tester des éléments tels que l'exécution du pourcentage réservé racine, le cas échéant, peut également être utile.
fallocate -l 50G big_file
truncate -s 50G big_file
dd of=bigfile bs=1 seek=50G count=0
Comme ces trois façons peuvent toutes remplir rapidement une partition.
Si vous aimez utiliser dd, vous pouvez généralement l'essayer avec chercher. Réglez simplement seek=file_size_what_you_need
Et mettre count=0
. Cela indiquera au système qu'il existe un fichier , et sa taille est ce que vous définissez, mais le système ne le créera pas réellement. Et utilisé de cette façon, vous pouvez créer un fichier qui est plus grand que la taille de la partition.
Exemple, sur une partition ext4 avec moins de 3G disponible. Utilisez dd pour créer un fichier 5T qui existe en tant que métadonnées - ne nécessitant pratiquement aucun espace de bloc.
df -h . ; dd of=biggerfile bs=1 seek=5000G count=0 ; ls -log biggerfile ; df -h .
Production:
Filesystem Size Used Avail Use% Mounted on
/dev/sda9 42G 37G 2.8G 94% /home
0+0 records in
0+0 records out
0 bytes copied, 4.9296e-05 s, 0.0 kB/s
-rw-rw-r-- 1 5368709120000 Jun 29 13:13 biggerfile
Filesystem Size Used Avail Use% Mounted on
/dev/sda9 42G 37G 2.8G 94% /home
Vous pouvez également profiter de l'outil de gestion du stress qui est pris en charge sur un grand nombre de systèmes Linux:
stress-ng --fallocate 4 --fallocate-bytes 70% --timeout 1m --metrics --verify --times