Comment créer correctement un système de fichiers virtuel?

10

Une tâche de mon devoir me demande de créer un système de fichiers virtuel, de le monter et d'effectuer certaines opérations dessus.

Je suis censé créer un fichier de 10 Mo dont les bits sont tous définis 0, le formater en ext3 et le monter. Voici comment je l'ai fait:

dd if=/dev/zero of=~/filesyst bs=10485760 count=1
sudo mkfs.ext3 ~/filesyst
sudo mount –o loop ~/filesyst /media/fuse

Même si je l'ai utilisé /dev/zero, le fichier est toujours plein de charabia (principalement des signes at). Les autorisations sur /media/fusesont drw-rw-rw-(qui sont bien), mais les autorisations sur les fichiers à l'intérieur sont quelque chose comme ceci:

d????????? ? ? ? ?          ? lost+found
-????????? ? ? ? ?          ? secret_bin

Où ai-je mal tourné?

Paul
la source
Je pense que le problème est lié à votre commande mkfs.ext3. IIRC, Il existe différents arguments que vous devez utiliser lorsque vous effectuez cette opération sur un fichier au lieu d'un périphérique.
user606723
1
Peut-être que je me trompe, par adamsinfo.com/… , vous le faites correctement. Pouvez-vous essayer de suivre les commandes exactes sur cette URL et voir si vous avez toujours des problèmes?
user606723
Aussi, essayezmkfs.ext3 -F ~/filesyst
user606723
@ user606723 Merci, je l'ai résolu. Le problème était les arguments bset count. Si j'écris bs=1MiB count=10, comme dans le lien que vous avez publié, cela fonctionne.
Paul
1
Soit dit en passant, vous n'avez pas réellement besoin de remplir le fichier avec des zéros. Vous pouvez simplement créer un fichier vide de taille arbitraire avec truncate -s 400m filesyst. La différence est que jusqu'à ce que vous écriviez réellement des données dans le fichier, il n'utilise aucun espace sur le disque, vous pouvez donc créer un système de fichiers virtuel qui est plus grand que votre lecteur de disque entier, tant que vous n'essayez pas de le remplir réellement . Vous pouvez voir combien d'espace le fichier utilise réellement du -h filesyst.
psusi

Réponses:

6

Hmmm ... la bonne façon de procéder est:

dd if=/dev/zero of=./filesyst bs=10485760 count=1
sudo losetup /dev/loop0 ./filesyst
sudo mkfs.ext3 /dev/loop0
sudo mount /dev/loop0 /tmp/lalla

et il fonctionne:

(0)romano-asus:~/tmp% ls -l /tmp/lalla
total 12
drwx------ 2 root root 12288 2011-12-20 22:21 lost+found
(0)romano-asus:~/tmp% df /tmp/lalla
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/loop0                9911      1121      8278  12% /tmp/lalla

Vous devez vérifier le premier périphérique de boucle gratuitement avec losetup -f.

Rmano
la source