Je veux créer un gros fichier ~ 10G rempli de zéros et de valeurs aléatoires. J'ai essayé d'utiliser:
dd if=/dev/urandom of=10Gfile bs=5G count=10
Il crée un fichier d'environ 2 Go et se termine avec un état de sortie «0». Je n'arrive pas à comprendre pourquoi?
J'ai également essayé de créer un fichier en utilisant:
head -c 10G </dev/urandom >myfile
Il faut environ 28-30 minutes pour le créer. Mais je veux qu'il soit créé plus rapidement. Quelqu'un a une solution?
Je souhaite également créer plusieurs fichiers avec le même motif (pseudo) aléatoire pour comparaison. Quelqu'un sait-il comment faire cela?
dd
raison de la taille du bloc. Vous voudrez peut-être regarder ce post stackoverflow.com/questions/6161823/… il a de bonnes réponses sur la façon de calculer la meilleure taille de bloc, ainsi que certains scripts / programmes utilisateur et d'autres suggestions à l'aidedd
.Réponses:
Que diriez-vous d'utiliser fallocate, cet outil nous permet de préallouer de l'espace pour un fichier (si le système de fichiers prend en charge cette fonctionnalité). Par exemple, en allouant 5 Go de données à un fichier appelé «exemple», on peut faire:
Ceci est beaucoup plus rapide que dd et allouera l'espace très rapidement.
la source
/dev/zero
alors?truncate
dans le passé et j'ai découvert qu'il n'allouait pas physiquement le fichier sur l'appareil et créait juste un fichier arbitraire de grande taille jusqu'à ce qu'il soit accédé, quel que soit l'espace disponible. Êtes-vous sûr que ce n'est pas le casfallocate
? Je le vérifierais mais je suis sur un mobile ...Vous pouvez utiliser
dd
pour créer un fichier composé uniquement de zéros. Exemple:C'est très rapide car un seul octet est réellement écrit sur le disque physique. Cependant, certains systèmes de fichiers ne le prennent pas en charge.
Si vous souhaitez créer un fichier contenant un contenu pseudo-aléatoire, exécutez:
Je vous suggère d'utiliser 10M comme taille de tampon (
bs
). C'est parce que 10M n'est pas trop grand, mais il vous donne toujours une bonne taille de tampon. Cela devrait être assez rapide, mais cela dépend toujours de la vitesse de votre disque et de la puissance de traitement.la source
En utilisant dd, cela devrait créer un fichier de 10 Go rempli de données aléatoires:
count
est en mégaoctets.Source: stackoverflow - Comment créer un fichier avec une taille donnée sous Linux?
la source
dd if=/dev/urandom of=10Gfile bs=500M count=20
, ce qui m'a donné 10237226010 octets en un peu moins de 20 minutes.Répondre à la première partie de votre question:
Essayer d'écrire un tampon de 5 Go à la fois n'est pas une bonne idée car votre noyau ne le supporte probablement pas. Cela ne vous procurera aucun avantage en termes de performances. Écrire 1M à la fois est un bon maximum.
la source
Cette question a été ouverte il y a 5 ans. Je suis juste tombé sur cela et je voulais ajouter mes conclusions.
Si vous utilisez simplement
cela fonctionnera beaucoup plus rapidement comme expliqué par xiaodongjie. Mais, vous pouvez le rendre encore plus rapide en utilisant
eatmydata
commeQu'est
eatmydata
- ce que c'est, il désactive fsync pour accélérer l'écriture du disque.Vous pouvez en savoir plus à ce sujet sur https://flamingspork.com/projects/libeatmydata/ .
la source
dd
est assez rapide pour commencer, et cela s'appelle libEAT-MY-DATA pour une raison.