Ho un HDD di cui non mi fido del tutto, ma voglio comunque usare (mining burstcoin, dove se ricevo un blocco danneggiato in un file, perderò solo pochi centesimi).
Come posso dire a btrfs di contrassegnare determinati blocchi come danneggiati (ad esempio da badblocks
uscita)?
Se non riesco a contrassegnare i blocchi come danneggiati, tutti i blocchi danneggiati identificati da btrfs scrub
da evitare in futuro se il file che li utilizza viene eliminato?
Risposta accettata:
Purtroppo no.
btrfs non tiene traccia dei blocchi danneggiati e btrfs scrub
non impedisce al file successivo di colpire gli stessi blocchi danneggiati.
Questo post della mailing list btrfs suggerisce di usare ext4 con mkfs.ext4 -c
(questo "crea un elenco di blocchi danneggiati e quindi
non utilizzerà quei settori" ).
Il suggerimento di utilizzare btrfs su mdadm 3.1+ con RAID0 non funzionerà.
Sembra che LVM non supporti la riallocazione di badblock.
Una soluzione alternativa consiste nel creare un dispositivo escludendo i blocchi noti per essere dannosi:btrfs su dmsetup.
La wiki di btrfs Project Ideas dice:
Non rivendicato — ancora nessuna patch — Non ancora nel kernel
Attualmente btrfs non tiene traccia dei blocchi danneggiati, blocchi del disco che molto probabilmente perdono i dati scritti su di essi. Btrfs dovrebbe accettare un elenco nel formato di output di badblocks, memorizzarlo in un nuovo btree (o forse nell'albero extent corrente, con un nuovo flag), riposizionare tutti i dati contenuti nei blocchi e riservare questi blocchi in modo che non possano essere utilizzati per future assegnazioni. Inoltre, è possibile insegnare a scrub a verificare la presenza di blocchi danneggiati quando viene rilevato un errore di checksum. Ciò renderebbe lo scrub molto più utile; gli errori di checksum sono generalmente causati dal disco, ma mentre scrub rileva i file interessati, che in uno scenario di backup offre l'opportunità di ricrearli, il file successivo per riutilizzare i blocchi danneggiati inizierà invece a ricevere errori. Questi due elementi corrisponderebbero a una funzione ext4 (usata tramite e2fsck).
Si prega di commentare se lo stato cambia e aggiornerò questa risposta.
Correlati:Debian – Come installare un singolo pacchetto da Debian testing o unstable su stable?