ext4 na mdadm przywraca dane

5

Mam problem z konfiguracją serwera macierzystego. Problem polega na tym, że czasami, ale bardzo rzadko, powraca (z braku lepszego terminu) wszystkie moje dane z powrotem do wcześniejszego stanu (gdzieś między miesiącami a tygodniami wcześniej).

Konfiguracja to 4 TB ext4 na oprogramowaniu RAID 5 z 3 dyskami działającymi na Ubuntu 12.04 (Linux 3.2). Samba obsługuje pliki tej partycji.

/proc/mdstat mówi mi, że tablica jest zdrowa smartclt -H /dev/sdX mówi PASSED dla wszystkich urządzeń. Próbowałem znaleźć coś w dziennikach, ale nie mogłem znaleźć niczego podejrzanego.

Ostatnim razem, gdy wystąpił błąd, ponownie uruchomiłem serwer podczas korzystania z plików na ścinaniu fsck nie znalazłem żadnych błędów.

Natura błędu zdumiewa mnie. Ponieważ ext nie jest kopią zapisanego systemu plików, założyłbym, że coś takiego jest niemożliwe. Jeśli możesz pomyśleć o jakiejkolwiek diagnostyce, którą mogę uruchomić, nie wahaj się.

Chyba pytanie brzmi: co stało się z moimi danymi i jak mogę powstrzymać je przed ponownym działaniem?

-- edytować --

OK znalazłem błąd: Problem nie miał nic wspólnego z ext4. Problemem był sposób, w jaki zamontowałem urządzenie.

Mam raid 5 dla moich danych i raid 0 z kopią zapasową. Ale sposób, w jaki zamontowałem to na starcie, nie był w 100% stabilny; czasami kopia zapasowa była montowana jako główna.

Z /etc/fstab:

# main RAID array
/dev/md126p1 /media/Main        ext4    defaults        0       0

Z /etc/mdadm/mdadm.conf:

# definitions of existing MD arrays
ARRAY /dev/md/Main metadata=1.2 UUID=c2ccbd00:ce414404:0ee05911:eebe2832
ARRAY /dev/md/Backup metadata=1.2 UUID=b4973c41:e735e1c0:29e8be4b:4fe7c007 name=:Backup

Ktokolwiek może mi odpowiedzieć na to małe pytanie, dostaje nagrodę: Jaki jest najlepszy sposób na zainstalowanie kopii zapasowej i głównej w gwarantowany stabilny sposób.

--edytować--

/ dev / md / Backup:

    Version : 1.2
Creation Time : Sun Jun 19 15:45:35 2011
 Raid Level : raid0
 Array Size : 3907021824 (3726.03 GiB 4000.79 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Sun Jun 19 15:45:35 2011
      State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

 Chunk Size : 512K

       Name : :Backup
       UUID : b4973c41:e735e1c0:29e8be4b:4fe7c007
     Events : 0

 Number   Major   Minor   RaidDevice State
   0       8       33        0      active sync   /dev/sdc1
   1       8       81        1      active sync   /dev/sdf1

/ dev / md / Main:

    Version : 1.2
Creation Time : Sun Jun 12 02:13:25 2011
 Raid Level : raid5
 Array Size : 3907021568 (3726.03 GiB 4000.79 GB)
Used Dev Size : 1953510784 (1863.01 GiB 2000.40 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Mon Jan 28 19:00:45 2013
      State : active
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0

     Layout : left-symmetric
 Chunk Size : 128K

       Name : :Neue RAID-Anordnung
       UUID : c2ccbd00:ce414404:0ee05911:eebe2832
     Events : 17846

 Number   Major   Minor   RaidDevice State
   0       8       49        0      active sync   /dev/sdd1
   1       8        1        1      active sync   /dev/sda1
   3       8       65        2      active sync   /dev/sde1
JustMaximumPower
źródło
Czy możesz używać migawek lub narzędzia do tworzenia kopii zapasowych, które przywraca dane?
Martin Schröder
@ MartinSchröder Dziękujemy za powtórkę. Nie ma uruchomionego narzędzia do tworzenia kopii zapasowych (robię teraz kopie zapasowe ręcznie). AFAIK ext4 nie obsługuje migawek (nie używam lvm).
JustMaximumPower
Czy możesz podać swój mdadm --detail dla powyższych RAID? Dlaczego po prostu nie montujesz w / etc / fstab / dev / md / Main i amp; / dev / md / Backup?
slm
nieużywany /dev/md/* był dokładnie błędem. Wierzę, że /dev/md* etykiety są nadawane pierwszemu superblokowi. Więc zgadzasz się, że używasz /dev/md/* etykiety działają zgodnie z oczekiwaniami?
JustMaximumPower
Zawsze korzystałem z etykiet / dev / md * podczas montażu RAID. Jedyną inną różnicą, jaką widzę, jest to, że używam LVM na górze mojego / dev / md *. Ale to nie jest obowiązkowe.
slm

Odpowiedzi:

3

Najlepszym sposobem jest zamontowanie za pomocą identyfikatorów UUID w swoim fstab:

UUID=c2ccbd00:ce414404:0ee05911:eebe2832 /media/Main ext4 defaults 0 0
UUID=b4973c41:e735e1c0:29e8be4b:4fe7c007 /media/Backup ext4 defaults 0 0

Jak wskazuje @Floyd, używanie etykiet jest również miłe, ponieważ możesz utworzyć nowe urządzenie z tymi samymi danymi i tą samą etykietą, jeśli chcesz coś zmienić. Więc możesz to zrobić

tune2fs -L RAIDMain /dev/disk/by-uuid/c2ccbd00:ce414404:0ee05911:eebe2832
tune2fs -L RAIDBackup /dev/disk/by-uuid/b4973c41:e735e1c0:29e8be4b:4fe7c007

a potem w twoim fstab:

LABEL=RAIDMain /media/Main ext4 defaults 0 0
LABEL=RAIDBackup /media/Backup ext4 defaults 0 0
Stefan Seidel
źródło
1
UUID jest zdecydowanie najlepszym rozwiązaniem, chyba że chcesz podać nazwy partycji.
Floyd
Musiałem użyć identyfikatora UUID systemu plików, a nie tablicy. Ale poza tym nie żyje. użyłem sudo blkid aby znaleźć UUID partycji.
JustMaximumPower
1

Jak powiedziałem w moim komentarzu do OP, wszystko, co musisz zrobić, to po prostu użyć ścieżek zadeklarowanych w /etc/mdadm.conf plik. Możesz użyć UUID lub ETYKIETA , tak jak @ Stefan Seidel wspomniane, ale tak naprawdę nie są konieczne.

Przykład /etc/mdadm.conf

ARRAY   /dev/md0  level=raid1  num-devices=2  UUID=37d3cabc:42393031:23c133e6:3b879f08
ARRAY   /dev/md1  level=raid5  num-devices=3  UUID=47d4cabd:42393031:23c133e6:3b879f99
MAILADDR root@krycek,root@byers,root@frohike

Przykład / etc / fstab

/dev/md0      /export/raid1           ext3    defaults        1 2
/dev/md1      /export/raid2           ext4    defaults        1 2
slm
źródło