@Oli - ciao, sono Jim Salter, il ragazzo che ha effettivamente scritto quell'articolo. Stavo lavorando con una macchina virtuale, il che ha reso le cose più semplici. Quello che ho fatto è iniziato con un file JPEG e l'ho aperto in un editor esadecimale. Quello particolare che ho usato era Bless, che puoi installare in Ubuntu con un semplice apt-get install bless .
Dopo aver aperto il file JPEG in Bless, ho premuto alcune volte la pagina per approfondire la "carne" del file JPEG, quindi ho semplicemente evidenziato i dati per una cinquantina di byte e li ho copiati e incollati in un editor di testo (nel mio case, gEdit). Questo mi ha dato qualcosa da cercare.
Ora ho salvato il JPEG in ciascun array sulla VM. La memoria dietro gli array era una serie di file .qcow2. Una volta salvato il JPEG negli array, ho potuto caricare i file .qcow2 associati a ciascun array in Bless e cercarli - non erano molto grandi, essendo nient'altro che il JPEG e alcuni metadati - per quel modello di cinquanta byte Avevo evidenziato e copiato dal JPEG. Voila, ho avuto il blocco da corrompere! A questo punto, potrei semplicemente modificare manualmente i singoli byte del JPEG come memorizzati sul disco virtuale della VM usando Bless - e, cosa più importante, farlo esattamente allo stesso modo su ciascun array.
L'unica ruga è che nel caso dell'array RAID5 testato nell'articolo, ho dovuto assicurarmi di aver modificato la copia effettiva dei dati nella striscia e non la parità per la striscia stessa: era una piccola immagine su un altrimenti array vuoto, quindi non c'erano dati nel blocco FOLLOWING nella striscia, rendendo il blocco di parità contenente i dati inalterati dal blocco di dati. Se avessi modificato accidentalmente il blocco di parità anziché il blocco di dati, l'immagine sarebbe stata visualizzata come invariata.
Un'ultima nota - non hai BISOGNO di macchine virtuali per farlo - potresti fare le stesse cose allo stesso modo con il bare metal; sarebbe solo più una seccatura nel culo perché avresti bisogno di lavorare con intere unità raw anziché con piccoli file .qcow2 piccoli e dovresti o estrarre le unità e metterle in una macchina diversa, oppure avviare in un ambiente live (o semplicemente alternativo) per scherzare con loro. (Ho testato la guarigione dei dati di ZFS esattamente in questo modo, ma su macchine bare metal reali, 7 anni fa, quando mi sono interessato per la prima volta ai filesystem di nuova generazione.)
Spero che sia di aiuto!