Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Software RAID1

7 réponses
Avatar
Manu
Bonjour,

Je suis sur le point de "convertir" un système mono-disque en RAID1
logiciel (sous Linux noyau 2.6). Le truc est que le disque de départ est
trop gros pour être sauvegardé et la manip doit se faire de façon
incrémentale.
J'ai fait un test en jouant avec des pseudos disques en loopback et ça
semble bien fonctionner.
Donc:
Dans mon raidtab je configure un système RAID1 (/dev/md0) mais avec 1
seul disque. Je créé le disque RAID avec mkraid, puis le formate. Je
copie les données du disque actuel sur le RAID (toujours mono disque).
Une fois la copie effectuée je modifie le /etc/raidtab pour y ajouter
l'ancien disque, puis lance un coup de 'mkraid -f /dev/md0'. Un coup de
/proc/mdstat semble me confirmé que la synchro entre les deux disques
est en cours. Le montage de la partition s'effectuant bien, je suppose
que tout est OK.

Est-ce que vous avez déjà effectué quelquechose de similaire ? Et si oui
comment ?

Merci.

7 réponses

Avatar
Pascal Bourguignon
Manu writes:

Manu wrote:
J'ai fait un test en jouant avec des pseudos disques en loopback et ça
semble bien fonctionner.


Bon je retire ce que j'ai dit, il semblerait que ça ne marche pas bien :(


En effet. Le mieux c'est de déplacer les données sur un autre disque
ou une autre partition avant d'initialiser un RAID. (gnu: cp -a /old /temp)

--
__Pascal Bourguignon__ http://www.informatimago.com/

There is no worse tyranny than to force a man to pay for what he does not
want merely because you think it would be good for him. -- Robert Heinlein


Avatar
Manu
Manu wrote:
J'ai fait un test en jouant avec des pseudos disques en loopback et ça
semble bien fonctionner.


Bon je retire ce que j'ai dit, il semblerait que ça ne marche pas bien :(

Avatar
Manu
Pascal Bourguignon wrote:

En effet. Le mieux c'est de déplacer les données sur un autre disque
ou une autre partition avant d'initialiser un RAID. (gnu: cp -a /old /temp)



Justement ce que je disais c'est que je n'avais pas les moyens pour ça.
Je comptais sur les capacités du RAID1 pour ça.

J'ai aussi essayé raidreconf, mais il sort en erreur tout de suite, car
il n'arrive pas à derminer la taille d'un des deux disques (mais cela
est peut-être à cause du système de loopback).

Avatar
Manu
Manu wrote:

Justement ce que je disais c'est que je n'avais pas les moyens pour ça.
Je comptais sur les capacités du RAID1 pour ça.

J'ai aussi essayé raidreconf, mais il sort en erreur tout de suite, car
il n'arrive pas à derminer la taille d'un des deux disques (mais cela
est peut-être à cause du système de loopback).


RTFM :)
OK je crois avoir trouvé. Il y a une option que l'on peut poser sur un
disque en le déclarant comme 'failed'.
Détail de la manip (qui cette fois marche):


joybook local # dd if=/dev/zero of=test_raid.0 bs=1M countP
joybook local # dd if=/dev/zero of=test_raid.1 bs=1M countP
joybook local # losetup /dev/loop0 test_raid.0
joybook local # losetup /dev/loop1 test_raid.1

joybook local # cat /etc/raidtab
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
chunk-size 8
persistent-superblock 1
nr-spare-disks 0
device /dev/loop0
raid-disk 0
device /dev/loop1
failed-disk 1

joybook local # cat /proc/mdstat
Personalities : [raid1]
unused devices: <none>

joybook local # mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/loop0, 51200kB, raid superblock at 51136kB
disk 1: /dev/loop1, failed

joybook local # mkfs.ext3 /dev/md0
joybook local # mount /dev/md0 /mnt/extra/ -t ext3
joybook local # cp -a /etc/ /mnt/extra/
joybook local # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 loop0[0]
51136 blocks [2/1] [U_]

unused devices: <none>
joybook local # vi /etc/raidtab
joybook local # cat /etc/raidtab
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
chunk-size 8
persistent-superblock 1
nr-spare-disks 0
device /dev/loop0
raid-disk 0
device /dev/loop1
raid-disk 1

joybook local # raidhotadd /dev/md0 /dev/loop1
joybook local # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 loop1[2] loop0[0]
51136 blocks [2/1] [U_]
[>....................] recovery = 4.0% (2048/51136)
finish=0.3min speed 48K/sec
unused devices: <none>

Et voilà :)

Avatar
Manu
Manu wrote:
joybook local # raidhotadd /dev/md0 /dev/loop1
joybook local # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 loop1[2] loop0[0]
51136 blocks [2/1] [U_]
[>....................] recovery = 4.0% (2048/51136)
finish=0.3min speed 48K/sec
unused devices: <none>


J'oubliais:

joybook local # cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 loop1[1] loop0[0]
51136 blocks [2/2] [UU]

unused devices: <none>
joybook local # umount /mnt/extra/
joybook local # fsck.ext3 -f /dev/md0
e2fsck 1.37 (21-Mar-2005)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/md0: 2933/12824 files (1.6% non-contiguous), 42956/51136 blocks
joybook local #
joybook local # cat /etc/raidtab
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
chunk-size 8
persistent-superblock 1
nr-spare-disks 0
device /dev/loop0
raid-disk 0
device /dev/loop1
raid-disk 1
joybook local #

Avatar
Manu
Thierry Herbelot wrote:

la sur-couche GEOM dans FreeBSD sait faire :
explication détaillée sur http://people.freebsd.org/~rse/mirror/

(l'idée est de créer un raid-1 "incomplet" sur le seul deuxième disque, de
copier les données du premier disque vers le deuxième, puis d'attacher le
premier disque sur le RAID-1, sachant que la couche GEOM recopiera les
données automatiquement)


Linux n'a pas besoin de couche pour faire tout ça il est très propre :)

Avatar
andrea ferraris
Manu wrote:

[...]

Merci ça me sera très util.
Mais avant, il faut faire une saveguarde car la connnerie t'attend (pas
seulement toi, mais tout le monde) derrière le coin. :-)

Andrea