RAID detail/examine furcsaságok

Sziasztok,

Két raid-et pakoltunk össze, a gépben elérhető véges mennyiségű kábel miatt mindkettőt első körben egy lemezes RAID1-ként, amit mihelyt rajta volt minden aminek lenni kell, kibővítettünk két-két diszkre. Újraindítás után minden működik, viszont feltűnt hogy az mdadm infó fura dolgokat ír - a detail és az examine kimenete nem egészen egyezik, viszont a két raid-tömb neve valamiért megegyezik:

# mdadm --detail --scan
ARRAY /dev/md/1 metadata=1.2 name=hostname:2 UUID=5ff16efb:5cd38c1b:8d9e76f1:e6b0e0c6
ARRAY /dev/md/2 metadata=1.2 spares=1 name=hostname:2 UUID=cae71073:523ffed2:c7c18ea2:3aab6909
# mdadm --examine --scan
ARRAY /dev/md/2  metadata=1.2 UUID=cae71073:523ffed2:c7c18ea2:3aab6909 name=hostname:2
ARRAY /dev/md/2  metadata=1.2 UUID=5ff16efb:5cd38c1b:8d9e76f1:e6b0e0c6 name=hostname:2

Az /etc/mdadm/mdadm.conf így néz ki:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0  metadata=1.0 UUID=794d60c2:69b0a0cf:f1bb71a6:5f09afb3 name=debian:0
ARRAY /dev/md/1 UUID=5ff16efb:5cd38c1b:8d9e76f1:e6b0e0c6

Minden rendben látszik működni, és reboot után se volt probléma, de azért egyrészt zavarja az ember OCD-jét, másrészt félő hogy egy esetleges bővítésnél lesz valami gond... Szerintetek mi lehet ez?

Hozzászólások

proc/mdstat mit mond?

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Vidak kollega helyett es/vagy neveben irom -- konkretan most epp ezt mondja a /proc/mdstat a kerdeses gepukon:

apal@vas:~$ cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid10] 
md2 : active raid5 sdd1[0] sdc1[1]
      7813894144 blocks super 1.2 level 5, 64k chunk, algorithm 2 [2/1] [U_]
      [=============>.......]  recovery = 67.7% (5292732312/7813894144) finish=306.7min speed=136972K/sec
      bitmap: 1/59 pages [4KB], 65536KB chunk

md1 : active raid1 sda2[0] sdb2[1]
      488152064 blocks super 1.2 [2/2] [UU]
      bitmap: 2/4 pages [8KB], 65536KB chunk

unused devices: <none>

 

Ööö, most RAID5 terén vagy tudsz valamit, amit én nem, vagy én tudok valamit, amit meg te nem... Nézzük. Nekem még mindig az van meg, hogy RAID5 az minimum 3 diszk és nagyon nem tükrözéssel oldja meg a redundanciát, mint a RAID1. Tehát a két lemezzel kb ez egy féllábas RAID5. Nem is értem, hogy sikerült ennyiből összeraknotok. Bár, mondjuk sosem próbálkoztam ilyesmivel :)

De lehet, hogy annyit változott már a tudomány, hogy a mai állása szerint a két diszkes RAID5 = RAID1 állítás teljesen rendben van. (De szerintem meg nem.)

Igazából ti dolgotok, mit csináltok, csak nehogy meglepetés legyen a végén belőle. :)

Persze hogy lehet:

  501  dd if=/dev/zero of=/data/root/loop0 bs=1M count=128
  502  dd if=/dev/zero of=/data/root/loop1 bs=1M count=128
  503  dd if=/dev/zero of=/data/root/loop2 bs=1M count=128
  504  losetup /dev/loop0 /data/root/loop0 
  505  losetup /dev/loop1 /data/root/loop1
  506  losetup /dev/loop2 /data/root/loop2
  507  cat /proc/mdstat 
  508  mdadm --create /dev/md42 -l 5 -n 2 /dev/loop[01]
  509  cat /proc/mdstat 
  510  cat /proc/mdstat 
  511  cat /proc/mdstat 
  512  cat /proc/mdstat 
  513  mdadm --add /dev/md42 /dev/loop2
  514  mdadm --grow /dev/md42 -l 5 -n 3
  515  cat /proc/mdstat 
  516  cat /proc/mdstat 
  517  cat /proc/mdstat 
  518  cat /proc/mdstat 

Bár ugye aki raid5-öt használ, annak kell, hogy legyen visszatölthető mentése :-)

valoban :) 

OK, most már értem, hogy sikerült összerakni.

De én még mindig le vagyok ott ragadva, hogy ha jól okoskodom akkor ez:

  • 1 diszknyi tárhely 2 diszken
  • hibatűrése 0 (sőt, duplázva van az esélye a sérülésre)
  • a többihez viszonyítva rossz performancia
  • a helyzet "normalizálódása" bizonytalan (ha lesz rá pénzmag)

Ennél az én meglátásom szerint a RAID0 is jobb lenne (2 diszknyi hely, jobb performancia), de egy RAID1 tuti.

(De kérem javítsatok ki, ha bármiben is tévedek.)

Szamold ki a matekjat (paritasok, vandermonde-matrix helyett diagonalis + egysegsor az [n+1]x[n]-es matrixban, stb), es kijon hogy egy ketdiszkes raid5 meg egy ketdiszkes raid1 egzaktul ugyanaz. Marmint nemcsak redundancia szempontjabol hanem fizikailag is ugyanugy fog kinezni az adat.

(( Sot, egy 3 diszkes raid6 is ugyanaz lesz mint egy 3 diszkes raid1 ha jol szamolom es ha galois-testek feletti hatvanyozassal epitik fel a [n+2]x[n]-es matrix utolso oszlopat. [...] szerk: mondjuk ettol fuggetlenul maga az mdadm nem engedi letrehozni... de a matekja ugyanaz. ))

Es ott a peldaszkript, a hibatureset is tudod tesztelni (egy loop-ot kirugni nem olyan nehez :)). Jo ez. 

Amit (meg) nem tud az mdadm/md-layer az a raid1 -> raid5 reshaping. Ugyhogy marcsak emiattis igy erdemes ezt csinalni. 

Tehát: 2 diszk RAID5, abból RAID1, abból újra RAID5, ahhoz +1 diszk és azt már nem tudom megoldani, hogy abból -1 diszk és újra RAID1 legyen. Egész az utolsó pontig sikerült a fájlokat élve tartanom. A 3 lemezes RAID5-ből nem tudok 2 lemezest varázsolni újra.

Még egy kicsit agyalok rajta, mert viccesen hangzana, ha meg lehetne csinálni, de aztán ráhagyom.

(Viszont így a doksikat nézve újra elborzadtam rajta, hogy az írási tempója milyen gyalázatos.)

hibatűrése 0 (sőt, duplázva van az esélye a sérülésre)

Ennél az én meglátásom szerint a RAID0 is jobb lenne (2 diszknyi hely, jobb performancia), de egy RAID1 tuti.

A fenti szkript kiegeszitese:

# cat /proc/mdstat 
Personalities : [raid1] [raid0] [linear] [multipath] [raid6] [raid5] [raid4] [raid10] 
md42 : active raid5 loop1[2] loop0[0]
      130048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/2] [UU]

# dd if=/dev/urandom bs=1M count=64 of=test.bin

# md5sum test.bin
46a763ef483d1ad52038125919fe5078  test.bin
 

# dd if=test.bin of=/dev/md42

# sync

# mdadm --stop /dev/md42

# dd if=/dev/loop1 bs=1M skip=1 count=64 2>/dev/null | md5sum
46a763ef483d1ad52038125919fe5078  -

# dd if=/dev/loop0 bs=1M skip=1 count=64 2>/dev/null | md5sum
46a763ef483d1ad52038125919fe5078  -
 

Hm, thx! Megnézem majd, eljátszom vele ha lesz egy kis időm. Hátha okosabb leszek. (Az néha nem árt.)

Bevallom töredelmesen, sosem szimpatizáltam az 5-el, szoftveresen egy helyen használom: otthon a gyerekek meséi vannak rajta. 4 diszk, ha elszáll, i.j. (Azért, fejfájást kerülendő van a fiókban pár cold-spare) De ez is olyan döntés volt, amit napokig forgattam magamban, hogy jó lesz-e nekem. Hát, helyem rengeteg lett, a többit meg majd meglátjuk. Idővel kiderül.

hat ez alapjan az mdadm.conf szar. generalj ujat /usr/share/mdadm/mkconf, ha jonak tunik minden akkor az outputot ird bele az mdadm.conf-ba. utana kell update initramfs.

ha a mount uuiddel megy, akkor at is nevezheted md0,md1-re oket.
mondjuk az a ket lemezes raid5 eleg erdekes....

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Eztet generalta le:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/2  metadata=1.2 UUID=cae71073:523ffed2:c7c18ea2:3aab6909 name=vas:2
ARRAY /dev/md/2  metadata=1.2 UUID=5ff16efb:5cd38c1b:8d9e76f1:e6b0e0c6 name=vas:2

# This configuration was auto-generated on Fri, 22 Nov 2019 22:00:27 +0100 by mkconf

Azaz ez sem jo, duplazza az md2-t. Pont ugyanugy mint az `mdadm --examine --scan`. Mondjuk a forraskodjat elnezve pontosan ez is ezt csinalja :) 

Ami meg feltunt, hogy az `mdadm --detail /dev/sd*` ill az `mdadm --detail /dev/md*` is azt mondja, hogy:

 

# mdadm --detail /dev/md1

[...]

           Name : vas:2  (local to host vas)

Azaz mar mintha a diszken levo metaadat lenne rossz. Lehet hogy azt kene inkabb fixalni...? 

Egy kis update: 

Közben rájöttem hogy az /etc/fstab-ban nem volt benne a /boot, így az update-initramfs eleve hibát dobott. Az mdadm.conf-ban még egy régi kötet szerepelt - ezeket javítottam, az mdadm.conf-ot átírtam arra ami a helyes lenne, reboot, de a helyzet ugyanaz:

root@hostname:~# mdadm --detail --scan
ARRAY /dev/md/1 metadata=1.2 name=hostname:2 UUID=5ff16efb:5cd38c1b:8d9e76f1:e6b0e0c6
ARRAY /dev/md/2 metadata=1.2 name=hostname:2 UUID=cae71073:523ffed2:c7c18ea2:3aab6909


root@hostname:~# mdadm --examine --scan
ARRAY /dev/md/2  metadata=1.2 UUID=5ff16efb:5cd38c1b:8d9e76f1:e6b0e0c6 name=hostname:2
ARRAY /dev/md/2  metadata=1.2 UUID=cae71073:523ffed2:c7c18ea2:3aab6909 name=hostname:2


root@hostname:~# cat /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/1  metadata=1.2 UUID=5ff16efb:5cd38c1b:8d9e76f1:e6b0e0c6 name=hostname:1
ARRAY /dev/md/2  metadata=1.2 UUID=cae71073:523ffed2:c7c18ea2:3aab6909 name=hostname:2

# This configuration was auto-generated on Mon, 25 Nov 2019 12:20:28 +0100 by mkconf

Így nem tudom, érdemes erőltetni az update-initramfs-t? Amit apal kolléga javasolt - a metaadat javítása - meg lehet oldani valahogy úgy hogy a RAID-eken levő adatok rendben megmaradjanak?