Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

RAID, mdadm, un aiutino

42 views
Skip to first unread message

R2-D2

unread,
Mar 31, 2022, 6:42:18 AM3/31/22
to
Ciao, su uno scaffale ho un vecchio disco le cui due partizioni facevano parte
di due rispettivi array RAID1.
Se lo collego tramite un lettore usb ottengo

~$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
[multipath]
md126 : inactive sdi2[3](S)
100000000 blocks super 1.2

md127 : inactive sdi1[0](S)
100000000 blocks

Mi interessa poter leggere /dev/sdi2, che è una partizione ext4 criptata con
LUKS, ma accade questo:

~$ cryptsetup -v --readonly luksOpen /dev/sdi2 vecchiodisco
Device /dev/sdi2 is not a valid LUKS device.
Command failed with code -1 (wrong or missing parameters).

Quando il disco era in uso, /proc/mdstat diceva "...active raid1..." e montavo
tutto l'array con
~$ cryptsetup -v luksOpen /dev/md126 ilmiobellarray
per cui immagino che sia necessario riattivare l'array md126, ma non capisco come.
Googlando non trovo nulla di specifico per un caso del genere.

Piergiorgio Sartor

unread,
Mar 31, 2022, 12:24:10 PM3/31/22
to
Uh...

(S) sarebbe "spare", cosa che capita ogni
tanto se qualcosa non funziona come dovrebbe...
Forse manca il secondo volume per ognuno dei RAID?

Cioe` sono due RAID-1 diversi?
A cui manca il partner?

mdadm --detail /dev/md26
mdadm --detail /dev/md27

Vi sono varie possibilita` per sistemare
la cosa ed anche varie possibilita` per
rovinare tutto in maniera spettacolare.

Per il recupero...

Per prima cosa, copia delle due partizioni,
per esempio con "dd" o "ddrescue" o "dd_rescue",
quello che sia meglio.

mdadm --stop /dev/md126
mdadm --stop /dev/md127

dd if=/dev/sdi1 of=sdi1.raw bs=4k
dd if=/dev/sdi2 of=sdi2.raw bs=4k

Secondo, creare un loop device con uno dei
due file ottenuti da cui sopra.

Non ricordo come si fa... :-)

Attivazione del singolo loop device
come /dev/md1

mdadm --assemble /dev/md1 /dev/loop_whatever missing

Se era un RAID-1, ma non viene dichiarato
da /prov/mdstat, il che e` sospetto.

Ad ogni modo, a questo punto, se tutto
funziona, ci si ritrova con un /dev/md1
che puo` essere aperto come LUKS device.
Se non funziona, si puo` provare con
"--force", che ignora alcuni errori.

Credo:

mdadm --assemble --force /dev/md1 /dev/loop_whatever missing

Nota che conviene sempre lavorare con la
copia di backup, per evitare di fare
danni agli originali.

Prova un po' e riporta qui i risultati.

bye,

--

piergiorgio

Giuseppe Della Bianca

unread,
Apr 2, 2022, 12:30:46 PM4/2/22
to
Il Thu, 31 Mar 2022 11:41:05 +0200, R2-D2 ha scritto:

> Ciao, su uno scaffale ho un vecchio disco le cui due partizioni facevano
> parte di due rispettivi array RAID1.
> Se lo collego tramite un lettore usb ottengo
>
]zac[

In generale, dare comandi errati ad un raid può provocare la perdita
immediata di tutti i dati, e non si può accedere ai dati del singolo disco
dell'array.


Simulo una cosa simile alla tua fermando il raid1

cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[0] sdb1[2]
1953381376 blocks super 1.2 [2/2] [UU]
bitmap: 0/15 pages [0KB], 65536KB chunk

mdadm -S /dev/md0

ls /dev/md0
ls: impossibile accedere a '/dev/md0': File o directory non esistente


poi

mdadm --examine --verbose --scan

ARRAY /dev/md/0 level=raid1 metadata=1.2 num-devices=2
UUID=f8a9bd1a:e965f370:f8a08019:4a1c9f8c name=exnetold.gdb.it:0
devices=/dev/sdc1,/dev/sdb1


mdadm -A /dev/md0 /dev/sdc1 /dev/sdb1

cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[0] sdb1[2]
1953381376 blocks super 1.2 [2/2] [UU]
bitmap: 0/15 pages [0KB], 65536KB chunk

Piergiorgio Sartor

unread,
Apr 2, 2022, 1:37:12 PM4/2/22
to
On 02/04/2022 18.30, Giuseppe Della Bianca wrote:
[...]
> In generale, dare comandi errati ad un raid può provocare la perdita
> immediata di tutti i dati, e non si può accedere ai dati del singolo disco
> dell'array.

In che senso?

Per un RAID-1, di due dischi, si puo`
far partire solo un disco ed usarlo.
Ovviamente senza sicurezza.

> Simulo una cosa simile alla tua fermando il raid1
>
> cat /proc/mdstat
> Personalities : [raid1]
> md0 : active raid1 sdc1[0] sdb1[2]
> 1953381376 blocks super 1.2 [2/2] [UU]
> bitmap: 0/15 pages [0KB], 65536KB chunk
>
> mdadm -S /dev/md0
>
> ls /dev/md0
> ls: impossibile accedere a '/dev/md0': File o directory non esistente
>
>
> poi
>
> mdadm --examine --verbose --scan
>
> ARRAY /dev/md/0 level=raid1 metadata=1.2 num-devices=2
> UUID=f8a9bd1a:e965f370:f8a08019:4a1c9f8c name=exnetold.gdb.it:0
> devices=/dev/sdc1,/dev/sdb1
>
>
> mdadm -A /dev/md0 /dev/sdc1 /dev/sdb1
>
> cat /proc/mdstat
> Personalities : [raid1]
> md0 : active raid1 sdc1[0] sdb1[2]
> 1953381376 blocks super 1.2 [2/2] [UU]
> bitmap: 0/15 pages [0KB], 65536KB chunk

Prova con:

mdadm -A /dev/md0 /dev/sdc1 missing

Forse funziona con un disco solo...

Oppure:

mdadm -A --force /dev/md0 /dev/sdc1

Potrebbe anche funzionare...

In ogni caso, e` possibile far partire un
mirror di due dischi con un disco solo.
Per ovvi motivi...

bye,

--

piergiorgio

Giuseppe Della Bianca

unread,
Apr 2, 2022, 2:08:44 PM4/2/22
to
Il Sat, 2 Apr 2022 19:35:53 +0200, Piergiorgio Sartor ha scritto:

]zac[
> In che senso?
>
> Per un RAID-1, di due dischi, si puo`
> far partire solo un disco ed usarlo.
> Ovviamente senza sicurezza.
]zac[

Dalla versione del superblock 1.1 non si può.

Forse si può provare facendo un mount di un loop device con un offset che
salti i dati di 'partizione' del raid e arrivi fino a quelli del
filesystem.

Piergiorgio Sartor

unread,
Apr 2, 2022, 2:42:25 PM4/2/22
to
On 02/04/2022 20.08, Giuseppe Della Bianca wrote:
> Il Sat, 2 Apr 2022 19:35:53 +0200, Piergiorgio Sartor ha scritto:
>
> ]zac[
>> In che senso?
>>
>> Per un RAID-1, di due dischi, si puo`
>> far partire solo un disco ed usarlo.
>> Ovviamente senza sicurezza.
> ]zac[
>
> Dalla versione del superblock 1.1 non si può.

Ma si che si puo`.
Altrimenti che senso avrebbe il RAID-1?

Ho appena provato:

mdadm -A /dev/md127 /dev/loop0 --run

Con:

mdadm -A /dev/md127 /dev/loop0

mdadm: /dev/md127 assembled from 1 drive - need all 2 to start it (use
--run to insist).

Dove /dev/loop[01] erano due device di
un RAID-1 precedentemente creato.

Ovviamente deve essere possibile.

Pensa solo ad avere il sistema su un RAID-1.
Come faresti a fare il boot senza un disco?
Sarebbe impossibile.

> Forse si può provare facendo un mount di un loop device con un offset che
> salti i dati di 'partizione' del raid e arrivi fino a quelli del
> filesystem.

Questo e` un altro discorso.

bye,

--

piergiorgio

Giuseppe Della Bianca

unread,
Apr 2, 2022, 3:25:28 PM4/2/22
to
Il Sat, 2 Apr 2022 20:37:26 +0200, Piergiorgio Sartor ha scritto:

]zac[
> Questo e` un altro discorso.
>
> bye,

No, il tuo è un altro discorso.

Sia il mio e sia un tentativo di chi fatto la richiesta, è sempre stato
quello.

.

Piergiorgio Sartor

unread,
Apr 2, 2022, 5:12:54 PM4/2/22
to
On 02/04/2022 21.25, Giuseppe Della Bianca wrote:
[...]
> No, il tuo è un altro discorso.

No, il mio discorso e` la risposta alla
domanda dell'OP.

L'OP vuole recuperare i dati del RAID.
Come questo debba avvenire e` la risposta
che ho dato (nell'altro reply, anche se
era "--run" invece di "missing").

> Sia il mio e sia un tentativo di chi fatto la richiesta, è sempre stato
> quello.

Ed e` sbagliato.
Non ha senso tentare di usare il device.
Si deve attivare il RAID-1 in degraded mode.

bye,

--

piergiorgio
0 new messages