4 votes

Remplissez rapidement l'espace disque de Linux sans privilèges root

Mon ami et moi avons un concours. Il dit qu'il a un moyen de remplir beaucoup d'espace disque dur sur un serveur Linux sans être root. Bien sûr, si vous êtes root, vous pouvez utiliser DD pour le faire, mais notre concours est sans root. Des bons moyens de le faire ?

10voto

Hawon Nguyen Points 71

En tant qu'utilisateur normal, exécutez :

dd if=/dev/zero of=~/foo bs=1M

Cela crée un fichier vide (mais qui occupe de l'espace) à ~/foo. Sur mon ordinateur, cela a gonflé le fichier à une vitesse de 39,9 Mo/s (mon processeur est un Pentium 4 64 bits à 3,0 GHz,) bien que je suppose que vous pourriez ouvrir plusieurs terminaux et les exécuter tous en même temps...

Si c'est seulement en ligne de commande, et que vous ne pouvez avoir qu'un seul terminal ouvert à la fois, faites ceci :

dd if=/dev/zero of=~/foo0 & dd if=/dev/zero of=~/foo1 & dd if=/dev/zero of=~/foo2 & dd if=/dev/zero of=~/foo3

..cela devrait remplir ce disque dur en un éclair.

5voto

Hennes Points 63532

Vous n'avez pas besoin de droits root pour exécuter dd.

Vous pouvez le faire de plusieurs manières. Utiliser /dev/zero comme source infinie de zéros est quelque chose qui semble nous venir à l'esprit à tous, permettant des choses comme :

  • cat /dev/zero > ~/mon_fichier_de_remplissage_de_partition_géante.
  • cp /dev/zero ~/mon_fichier_de_remplissage_de_partition_géante.
  • Ou, de manière inutilement complexe en utilisant dd en tant qu'utilisateur :
    dd if=/dev/zero of=~/mon_fichier_de_remplissage_de_partition_géante bs=512K. (La partie block size est facultative, mais la fixer à une valeur supérieure à 512 octets peut accélérer les choses en réduisant les frais généraux).
  • Ou vous pouvez créer votre propre fichier. Prenez n'importe quel fichier, concaténez-le avec lui-même pour créer un deuxième fichier de taille double, puis répétez l'opération. C'est ce que fait la réponse de Terdon.
  • Ou vous pouvez écrire un programme pour écrire sans fin dans un fichier. C'est probablement inutilement complexe et les outils standard sont souvent plus rapides. De plus, ça ne semble pas très 'à la manière Unix'.

Vous pouvez également simuler un fichier énorme en créant un fichier clairsemé. dd if=/dev/zero of=~/mon_fichier_apparemment_huge sauter=99999G créera instantanément un très petit fichier, qui semblera être de 99999 Go. Si vous le souhaitez, vous pouvez en lire 99999 Go. Cependant, en pratique, il ne consomme presque pas d'espace.

Comparez-le à un livre avec des pages amovibles. Habituellement vous avez la page 1,2,3,4,5,6 .... (fin du livre). Avec l'option sauter vous avez la page 1,2,3, 99999. (les pages 4,5,6,... etc seront insérées lorsqu'elles seront écrites, mais jusque-là le livre sera très mince).

Enfin, avant d'essayer l'une de ces méthodes : Vérifiez où vous écrivez.

Si c'est dans /home (par exemple pour /home/mon_nom_d_utilisateur) et que /home est monté sur sa propre partition alors tout ce que vous pouvez faire est de remplir l'espace pour les répertoires personnels. Si quelqu'un a fait quelque chose d'absurde comme mettre /home sur le système de fichiers racine alors vous pouvez le remplir à 95%. La plupart des administrateurs n'aimeront pas ça.

(95%, ou en fait 92,2% car les paramètres par défaut sur la plupart des systèmes de fichiers semblent réserver 5% pour root. Cela signifie qu'il peut être rempli à 105%, et en tant qu'utilisateur, le remplir utiliserait (100/105)%, soit 95,2%)

3voto

Mohsin Points 11

Vous pouvez occuper tout l'espace d'un disque dur en faisant quelque chose d'aussi simple que

echo foo > f1.txt; 
while true; do 
    cat f1.txt >> f2.txt && 
    cat f2.txt >> f1.txt; 
done

Les fichiers vont croître de manière exponentielle et occuper tout l'espace disponible si vous laissez la boucle fonctionner pendant un certain temps.

La solution dd est bien sûr beaucoup plus efficace, soulignant simplement que vous n'avez certainement pas besoin d'accès root.

2voto

Vous pouvez remplir un disque avec la commande "yes" :

yes garrbage > ~/junk

Pour éviter cela, il est préférable de définir des quotas pour les utilisateurs ou d'utiliser ulimit -f pour éviter la création de gros fichiers.

Consultez la page de manuel de quota pour plus d'informations.

1voto

allo Points 830

Premièrement: Vous n'avez pas besoin d'être root pour utiliser dd ou d'autres outils pour créer des fichiers volumineux ou nombreux.

Mais deuxièmement: Vous ne pouvez pas remplir le disque si celui-ci est formaté avec les options par défaut, car les systèmes de fichiers linux les plus utilisés réservent 5% de l'espace disque pour root, afin qu'aucun utilisateur inexpérimenté ne puisse remplir le disque et crasher le système, car les processus vraiment importants ne pourraient pas écrire leurs fichiers (pensez à sshd, syslogd, etc.)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X