|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
dd, non capisco
stavo cercando una maniera veloce per generare dei file di grossa dimensione e un amico mi ha suggerito un:
dd of=miofile bs=1M seek=1024 count=0 che a occhio mi sembrava una maniera argutissima di fare quello che volevo, ovvero creare un file di un giga disinteressandomi che venisse riempito con qualcosa di utile (come ad esempio copiando da /dev/zero). Il problema è che il comando sopra ritorna subito, troppo in fretta per essersi andato a cercare tutto quello spazio su disco. eppure se faccio un ls mi trovo effettivamente un file creato da un giga , ma con un df vedo in realtà che lo spazio libero è esattamente uguale a quello prima della creazione. c'e' qualcosa che mi sfugge? ![]() perchè ls mi mostra un file della dimensione corretta? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2001
Città: Foggia
Messaggi: 2519
|
forse per df tutti i blocchi zero equivalgono a spazio libero, fidati che con dd funge...
ma hai messo if=/dev/zero ? p.s. in caso non ti fidi indirizza l'output di /dev/random così stai tranquillo
__________________
mi sembra di essere tornato adolescente ai bei tempi.. che figata essere di nuovo su questo forum ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2004
Città: Gatteo
Messaggi: 2955
|
Se non ricordo male (ma non vorrei dire una cazzata
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1209
|
purtroppo il mio inglese nn mi aiuta a capire il man del dd..
cmq quando creo file uso ddd cosi' dd if=/dev/zero of=/file count=100000 con df vedo effettivamente che li ha usati i 100mega
__________________
...Ordunque... |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
fermi, lo so che se uso come source /dev/random o /dev/zero si comporta come ci si aspetta.
il fatto è che ho usato quella sintassi per cercare di ottenere che lo spazio sia allocato su disco da un file il cui contenuto NON viene scritto dal comando dd ma viene lasciato "così com'e'". |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Re: dd, non capisco
Quote:
Quote:
Mai sentito parlare delle "pagine COW" o simili diavolerie? (non sto parlando di mucche ![]()
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
||
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1209
|
ok ho capito.. benomale e' la stessa domanda che avevo fatto tempo fa su amule
che praticamente mi creava dei file temporanei es. 700mb ma poi effettivamente con df lo vedeva sempre come spazio libero.. Mi sembra che cmq non mi avevano dato una risposta... Quindi non so che dire... Vabbe' io non e' che sono molto bravo in linux.. ![]()
__________________
...Ordunque... |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1209
|
ma una volta che crei quel file.. se lo stai vedendo significa cheeli inode punta a quei blocchi no?
Forse dovrei andare a ristudiarmi il filesystem perche' mi sfuggono parecchie cose..
__________________
...Ordunque... |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
![]() Solo quando proverai a _scriverli_, verranno allocati fisicamente. Finché ti limiterai a _leggerli_, vedrai solo una sfilza di zeri.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jun 2004
Città: Besana Briansssa
Messaggi: 521
|
Questo post mi sembra interessante.
http://groups.google.it/groups?hl=it...ws.prodigy.com |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Feb 2004
Messaggi: 1209
|
ho capito..
__________________
...Ordunque... |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jun 2004
Città: Besana Briansssa
Messaggi: 521
|
Bah mentre che cercavo avete scritto 5 altri post con le risposte
![]() La prossima volta cercherò di esser più celere ![]() |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Re: Re: dd, non capisco
Quote:
no, vado a documentarmi ![]() quindi la dimensione che mostra 'ls' non e' un n°blocchi x dimensione blocco. |
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Re: Re: Re: dd, non capisco
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Nov 2002
Città: Morbegno (SO)
Messaggi: 1410
|
pensavo che la cow fosse solo per le aree dati (stack+heap) dei processi.
qui la cow non riescoa vederla, gli faccio scrivere un file, lui mappa il file di destinazione con quello a sorgente fino alla prima modifica del primo, poi esegue la cow? e cmq un file da 1 gb, se non lo scrive, lo tiene in memoria nei buffer fino ad 1 gb? lo comprime?
__________________
e' difficile cio' che non si conosce Tic Tac Andrew Morton, 15/02/2008 LKML:"`tmp' is an awful identifier, and renaming it to `temp' hardly improves it." |
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
- Il caso osservato da kingv: è analogo all'allocazione di memoria tramite mmap anonimo (le pagine di memoria vengono allocate fisicamente solo quando il programma tenta di scriverci, nella gestione del page fault) - Il COW su copia: nella copia di un file, non viene allocato lo spazio per il file di copia; mano mano che viene modificato, vengono allocati i nuovi blocchi (quelli rimanenti rimangono in comune, finchè uno dei due file non li modifica). E' utilizzato come dicevo per lo UML, per evitare di sprecare troppo spazio nella creazione di diverse immagini di file system quasi identiche. E' analogo alla gestione delle pagine di memoria dopo una fork.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Uff, basta parlare di mucche
![]() dd if=/dev/zero of=file.out bs=1024 count=<dimensione del file in KB> Ciao ![]()
__________________
GPU Compiler Engineer |
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
![]() troppo facile, rileggi tutto ![]() |
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Qualcosa non mi quadra
Leggendo il thread mi sembra che il prob sia che voi create il file , ma poi DF non rilevi lo spazio occupato perchè i blocchi in realtà non vengono scritti (almeno leggendo Psycotic) . Beh : DF prima di DD : /dev/hda2 23284168 18548764 3552620 84% /balthasar melchior@melchior:~$ dd if=/dev/zero of=/balthasar/file.p bs=1024 count=102400 entrati 102400+0 record usciti 102400+0 record 104857600 bytes transferred in 12,561449 seconds (8347572 bytes/sec) (scrive 100MB di zeri) DF dopo DD : /dev/hda2 23284168 18656180 3445204 85% /balthasar Sinceramente non vedo il problema .... Ciao
__________________
GPU Compiler Engineer |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Con DU :
melchior@melchior:~$ du -b /balthasar/file.p 104857600 /balthasar/file.p melchior@melchior:~$ Ciao
__________________
GPU Compiler Engineer |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:38.