Como criar corretamente um sistema de arquivos virtual?

10

Uma tarefa em minha tarefa de lição de casa pede que eu crie um sistema de arquivos virtual, monte-o e execute algumas operações nele.

Eu devo criar um arquivo de 10 MB cujos bits estejam todos definidos 0, formatá-lo como ext3 e montá-lo. Foi assim que eu fiz isso:

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

Mesmo que eu tenha usado /dev/zero, o arquivo ainda está cheio de caracteres sem sentido (principalmente arroba). As permissões em /media/fusesão drw-rw-rw-(que estão bem), mas as permissões nos arquivos contidos nele são algo como isto:

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

Onde eu errei?

Paulo
fonte
Acho que o problema está relacionado ao seu comando mkfs.ext3. IIRC, Existem diferentes argumentos que você precisa usar ao fazer isso em um arquivo em vez de em um dispositivo.
user606723
1
Talvez eu esteja errado, por adamsinfo.com/… , você está fazendo isso corretamente. Você pode tentar seguir os comandos exatos neste URL e ver se você ainda tem problemas?
user606723
Além disso, tentemkfs.ext3 -F ~/filesyst
user606723
@ user606723 Obrigado, eu resolvi. O problema foram os argumentos bse count. Se eu escrever bs=1MiB count=10, como no link que você postou, funciona.
Paul
1
A propósito, você não precisa realmente preencher o arquivo com zeros. Você pode apenas criar um arquivo vazio de tamanho arbitrário com truncate -s 400m filesyst. A diferença é que, até que você grave os dados no arquivo, ele não ocupa espaço no disco, para que você possa criar um sistema de arquivos virtual maior que toda a unidade de disco, desde que não tente preenchê-los . Você pode ver com quanto espaço o arquivo está realmente usando du -h filesyst.
Psd #

Respostas:

6

Hmmm ... a maneira correta de fazer isso é:

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

e funciona:

(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

Você deve verificar o primeiro dispositivo de loop gratuitamente com losetup -f.

Rmano
fonte