Newsgroup: it.comp.hardware.storage
Titolo: Compact Flash

Ciao a tutti,
domanda un po "scema".
Le CF, specialmente le industrial, hanno un ciclo di
scritture pari a 2,000,000 volte (su per giï¿œ).
Ma che significa? Che posso scrivere *ciascun blocco* 2 milioni
di volte prima che esso vada a donne facili?
Se cosï¿œ fosse, una CF da 4GB mi permetterebbe di scrivere
2 milioni di volte 4GB.
Arrivo al punto.
Ho dei log, i log 'accodano' non riscrivono sugli stessi blocchi
per cui al "primo giro" io creo un file da 4GB utilizzando tutti
i blocchi presenti nella card. Ed avrï¿œ scritto solo 1 volta su
ciascun blocco della CF.
Poi cancello, e riparto a scrivere altri 4GB.
Avrï¿œ scritto 2 volte (anzi, 3 considerando la cancellazione) su ciascun
blocco.
In parole povere, la durata di queste CF ï¿œ pari al tempo che io
impiego per scrivere 4GB (ovvero tutti i blocchi di tutta la card)
moltiplicato per 2 milioni (grosso modo) ovvero il numero medio di
scritture di ciascun blocco.
Questo perchï¿œ ciascun blocco 'regge' 2 milioni di scritture, considerato
che io non cancello, i blocchi non saranno mai riutilizzati finchï¿œ non
avrï¿œ terminato lo spazio.
Quindi se io per scrivere 4 giga impiegassi 1 giorno, la CF mi durerebbe
2 milioni di giorni. (o meglio, 1 milione di giorni, perchï¿œ poi ogni
giorno devo cancellare tutto, per cui ogni blocco sarebbe scritto con
degli zeri)
E' corretto? Se si, sarebbero pressochï¿œ indistruttibili in ambito
appliance/embedded.
Oppure (spero di no) questi 2 milioni di scritture si riferiscono a
tutta la CF, ovvero 2 milioni di "operazioni", indipendentemente dal
blocco?

 di volte prima che esso vada a donne facili?
In teoria si...sempre che il controller abbia un sistema di allocazione 
dei dati efficiente e che quindi smisti le scritture uniformemente tra 
le diverse celle componenti la matrice di memoria.

 le diverse celle componenti la matrice di memoria.
Be, ma efficiente oppure no, come fa il controller a non distribuire
le scritture?
Se io scrivo 4GB, ovvero la totale capacitï¿œ della card, il controller
di certo non puï¿œ riutilizzare lo stesso blocco piï¿œ di una volta
altrimenti perderei dei dati.
Diciamo che il progetto sarebbe quello di loggare, splittando per
giorni, l'access log di squid.
Ogni settimana bzippo tutti i file della settimana precedente.
Al raggiungimento di 4GB, rimuovo le settimane piï¿œ vecchie in
modo da liberare spazio.
Cosï¿œ facendo, un singolo blocco sarebbe scritto pochissime volte,
giusto in fase di creazione log ed in fase di compressione (in
cui il dato viene compresso e poi eliminato). La durata della
card, in queste condizioni, dovrebbe essere virtualmente infinita,
dovrei scrivere 2milioni di volte 4 gb, ovvero 8 milioni di giga
prima di iniziare a trovarmi con i blocchi difettosi.
In maniera analoga, si puï¿œ dire che maggiore ï¿œ la capacitï¿œ della card,
maggiore ï¿œ la sua durata. Se avessi una carda da 16GB, prima di
riutilizzare lo stesso blocco dovrei riempire 16 gb, per cui la
card durerebbe (a paritï¿œ di scritture massime per blocco) 4 volte di
piï¿œ rispetto ad una card da 4gb.
E' corretto come ragionamento? Cosa bisogna tenere in considerazione?
Ovviamente questo discorso ha senso solo per i log, ovvero dati
sequenziali che si accodano sempre, per un uso tradizionale come disco
o come swap area, in cui i file sono scritti, cancellati, modificati
e ricreati in continuazione, tutto ciï¿œ non ï¿œ piï¿œ valido in quanto lo
stesso blocco potrebbe, virtualmente, essere scritto piï¿œ e piï¿œ volte
a meno che non sia presente un buon sistema di wear levelling.
Giusto?
(banalmente, ad uso log, basterebbero anche le CF tradizionali e non
le industrial, in quanto il wear-leveling sarebbe sostituito da delle
scritture sequenziali il piï¿œ possibile. Prima della rottura della card
si finirebbe lo spazio a disposizione, in teoria)

 altrimenti perderei dei dati.
In questo caso se prevedi giï¿œ di occupare sistematicamente tutto lo 
spazio di memoria allora non ci saranno problemi in questo senso 
nemmeno se dovessi utilizzare prodotti di vecchia generazione.

 se dovessi utilizzare prodotti di vecchia generazione.
Sono log di un firewall/proxy, che di conseguenza non cancello se non
quando termino lo spazio.
Devo solo studiare un sistemino che mi consenta di ridurre al minimo
le compressioni (e conseguentemente le scritture sui blocchi).
Pensavo o di loggare con rsyslog un file per ogni giorno e comprimere
1 volta al mese o una volta alla settimana in bzip2 oppure salvare
ugualmente un log per giorno e comprimere solo al raggiungimento
del 80% di spazio occupato.