Una piccola quantità di retroscena:
Ho un piccolo filesystem multimediale, su cui immagazzino vari film e programmi TV che vengono utilizzati per la mia configurazione HTPC. Questo è stato originariamente impostato, utilizzando btrfs
, su un'unità esterna WD da 1 TB.
Successivamente, ho deciso di acquistare un'altra unità, per dare a questo filesystem le capacità di mirroring RAID1. Questa unità è una Seagate Barracuda (2TB, BARRACUDA 7200.14 FAMILY). Sfortunatamente, questa non è stata una buona scelta di guida. L'unità ha iniziato a sviluppare grandi quantità di errori di lettura a breve, sebbene BTRFS sia stato in grado di correggerli.
Recentemente, la quantità di errori di lettura da questa unità è aumentata, con le sue condizioni in costante peggioramento. BTRFS ora sta iniziando a bloccarsi:
kernel: RSP: 0018:ffff88005f0e7cc0 EFLAGS: 00010282
kernel: RIP: 0010:[<ffffffffa0081736>] [<ffffffffa0081736>] btrfs_check_repairable+0xf6/0x100 [btrfs]
kernel: task: ffff88001b5c4740 ti: ffff88005f0e4000 task.ti: ffff88005f0e4000
kernel: Workqueue: btrfs-endio btrfs_endio_helper [btrfs]
kernel: CPU: 1 PID: 3136 Comm: kworker/u8:3 Tainted: G O 4.5.3-1-ARCH #1
kernel: invalid opcode: 0000 [#1] PREEMPT SMP
kernel: kernel BUG at fs/btrfs/extent_io.c:2309!
kernel: ------------[ cut here ]------------
kernel: BTRFS info (device sdc1): csum failed ino 73072 extent 1531717287936 csum 3335082470 wanted 3200325796 mirror 0
kernel: ata3: EH complete
kernel: BTRFS error (device sdc1): bdev /dev/sda3 errs: wr 0, rd 18, flush 0, corrupt 0, gen 0
kernel: blk_update_request: I/O error, dev sda, sector 2991635296
Vorrei rimuovere l'unità guasta dall'array RAID1, senza ridondanza su una singola unità. Sfortunatamente, sembra che manchi la documentazione su come farlo.
Sono consapevole che si può eseguire quanto segue:
sudo btrfs balance start -dconvert=single /media
per convertire il profilo dati in single
modalità, ma non sono sicuro su DOVE verranno posizionati i dati. Poiché una delle unità non funziona, mi piacerebbe essere in grado di garantire che BTRFS non cancelli debitamente tutti i dati sull'unità valida e inserisca una singola copia sull'unità danneggiata, invece, vorrei semplicemente agire come se l'altra unità non fosse mai esistita (come in, riconvertire alla mia vecchia configurazione)
Questo non funziona:
$ sudo btrfs device delete /dev/sda3 /media
ERROR: error removing device '/dev/sda3': unable to go below two devices on raid1
Cosa devo fare? L'aiuto sarebbe molto apprezzato.
TL; DR: iniziato con 1 unità in BTRFS single
, aggiunta un'altra unità, ce l'ha fatta RAID1
, l'altra unità ora si sta guastando, come posso tornare a una sola unità (SPECIFICAMENTE quella conosciuta) con single
?
dconvert=single
per un pezzo fa solo quello che temevo ed elimina la buona copia conosciuta. :(