Czy mogę utworzyć oprogramowanie RAID 1 za pomocą jednego urządzenia


20

Mam pojedynczy dysk, z którego chcę utworzyć kopię lustrzaną; nazwijmy ten dysk sda. Właśnie kupiłem kolejny dysk identycznej wielkości, który możemy nazwać sdb. sdai sdbma jedna partycja nazywa sda1i sdb1odpowiednio.

Podczas tworzenia nalotu nie chcę czyścić mojego komputera sdai zaczynać od nowa, chcę tylko, aby zaczął się tworzenie kopii lustrzanej sdb. Mój tok myślenia polegał na:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1

... aby utworzyć tablicę bez sdbdysku, a następnie uruchomić coś w stylu (myślę następujące polecenie na głos, ponieważ nie jestem pewien, jak osiągnąć ten krok)

mdadm /dev/md0 --add /dev/sdb1

sdb1Zakłada się, że notatka jest sformatowana podobnie jaksda1

czy to możliwe?


Tak, możesz. To nie jest tak proste, jak --addi, musisz być ostrożny, ale nie jest to bardzo skomplikowane. Zobacz Jak skonfigurować dublowanie dysku w Ubuntu? (Nie mogę zaproponować tego pytania jako duplikatu z powodu nowych zasad).
Gilles „SO- przestań być zły”

Odpowiedzi:


28

Prosta odpowiedź na pytanie w tytule brzmi „Tak”. Ale to, co naprawdę chcesz zrobić, to kolejny krok, którym jest dublowanie istniejących danych.

Można przekonwertować istniejący dysk, ale jak wspomniano, jest to ryzykowne ze względu na lokalizację metadanych. Znacznie lepiej jest utworzyć puste (uszkodzone) lustro z nowym dyskiem i skopiować na niego istniejące dane. Następnie, jeśli to nie zadziała, po prostu uruchom z powrotem do lustrzanego oryginału.

Najpierw zainicjuj /dev/sdb1jako nowy /dev/md0brakujący dysk i zainicjuj system plików (zakładam, że ext3, ale wybór należy do ciebie)

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 missing
mkfs -text3 /dev/md0

Teraz /dev/sda1najprawdopodobniej jest to główny system plików ( /), więc dla bezpieczeństwa powinieneś zrobić następny krok z płyty CD na żywo, dysku ratunkowego lub innego systemu rozruchowego, do którego można uzyskać dostęp zarówno /dev/sda1i /dev/md0chociaż udało mi się to, przechodząc do trybu pojedynczego użytkownika.

Skopiuj całą zawartość plików na /dev/sda1celu /dev/md0. Na przykład:

mount /dev/sda1 /mnt/a       # only do this if /dev/sda1 isn't mounted as root
mount /dev/md0 /mnt/b
cd /mnt/a                    # or "cd /" if it's the root filesystem
cp -dpRxv . /mnt/b

Edytuj /etc/fstablub w inny sposób upewnij się, że przy następnym uruchomieniu /dev/md0zostanie zamontowany zamiast /dev/sda1. Twój system prawdopodobnie jest ustawiony na rozruch, /dev/sda1a parametry rozruchu prawdopodobnie określają to jako urządzenie root, więc podczas ponownego uruchamiania powinieneś ręcznie zmienić to, aby root był /dev/md0(zakładając, że /dev/sda1root). Po ponownym uruchomieniu sprawdź, czy /dev/md0jest teraz zamontowany ( df) i czy działa jako zdegradowane odbicie lustrzane ( cat /proc/mdstat). Dodaj /dev/sda1do tablicy:

mdadm /dev/md0 --add /dev/sda1

Ponieważ przebudowa zostanie zastąpiona /dev/sda1, używana wersja metadanych nie ma znaczenia. Jak zawsze podczas wprowadzania poważnych zmian, wykonaj pełną kopię zapasową (jeśli to możliwe) lub przynajmniej upewnij się, że wszystko, czego nie można odtworzyć, jest bezpieczne.

Będziesz musiał zregenerować konfigurację rozruchową, aby użyć jej /dev/md0jako root (jeśli /dev/sda1był rootem) i prawdopodobnie będziesz musiał zregenerować, mdadm.confaby mieć pewność, że /dev/md0zawsze jest uruchamiany.


Idealnie dokładnie to, czego potrzebuję: D
whoami

2
Nie używaj cpdo kopiowania systemów plików, przegapisz niektóre rzeczy, takie jak twarde linki, rozszerzone atrybuty ... Użyj tarlub rsyncz odpowiednimi opcjami. Podczas uruchamiania Live CD uważaj, że mapowanie użytkownika UID jest inne (zobacz opcje --numeric-owner programu tar / rsync). Zobacz także clone2fs do klonowania systemów plików extx.
Stéphane Chazelas,

1
Opcje cpobsługi zachowania linków (-d), trybu, własności i znaczników czasu (-p), robienia tego rekurencyjnie (-R) i pozostawania w jednym systemie plików (-x), ale myślę, że masz rację co do twardych linków i rozszerzonych atrybuty
StarNamer,

rsync -aH --delete /mnt/olddisk/ /mnt/newarray/to dobra opcja. Dodaj, -vih --progressjeśli chcesz naprawdę zobaczyć, co robi.
rudolfbyker

4

Jasne, możesz go utworzyć, określając, że drugi dysk jest obecnie missing:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 missing /dev/sda1

Słodkie dzięki, prawdopodobnie jestem tutaj OCD, ale czy istnieje powód, dla którego dodałeś brakujące przed / dev / sda1, czy kolejność jest ważna?
whoami,

Myślę, że kolejność nie ma znaczenia.
eppesuig

3
Ostrożnie z tym! z --metadata = 1.2 (nowe ustawienie domyślne), metadane RAID (1 MB) zostaną wstawione na początku (przesłaniając tam zawartość). A początek tablicy md rozpocznie 1 MB w / dev / sda1 (/ dev / md0 będzie o 1 MB krótszy niż / dev / sda1). Przy metadanych = 0,9 (stare domyślne), metadane (64kB) zostaną wstawione na końcu, zastępując to, co tam jest. Więc użyj --metadata = 0.9 i najpierw zmień rozmiar FS. Cokolwiek zrobisz, zrób wcześniej kopię zapasową.
Stéphane Chazelas,

3

Możesz to zrobić. Musisz być nieco ostrożny, ale nie jest to niebezpieczne¹, jeśli bardzo uważasz, aby niczego nie pomylić i nie pozostawia żadnych problemów w konfiguracji.

Zdecydowanie polecam nie wykonywać żadnych manipulacji w systemie na żywo. W niektórych przypadkach jest to możliwe, ale wymaga dodatkowej opieki. Uruchamianie z liveCD / liveUSB, takiego jak Parted lub SystemRescueCD .

Najpierw musisz nieco zmniejszyć głośność, aby zrobić miejsce na metadane mdraid (superblok). Istnieje kilka formatów metadanych , musisz użyć takiego, który umieszcza metadane na końcu dysku. (W niektórych konfiguracjach możesz mieć wystarczająco dużo miejsca, aby umieścić superblok na początku, ale jest to bardziej skomplikowane i narażone na ryzyko, więc wchodzę w to.)

Musisz upewnić się, że ostatnie 128 kB z urządzenia blokowego nie jest używane, aby zrobić miejsce dla superbloku. Musisz więc zmniejszyć system plików /dev/sda1. Jeśli jest to system plików ext2 / ext3 / ext4, uzyskaj bieżący rozmiar systemu plików za pomocą tune2fs /dev/sda1, a następnie uruchom resize2fs /dev/sda1 NNNtam, gdzie NNN ma rozmiar minus 128kB. Możesz to zrobić za pomocą Parted . Jeśli musisz zmniejszyć system plików extN, najpierw musisz go odmontować; System plików btrfs można skurczyć na żywo.

Po upewnieniu się, że ostatnie 128 kB urządzenia blokowego jest wolne, zadzwoń, mdadm --createaby utworzyć wolumin RAID-1. To nie dotyka żadnej części głośności oprócz superbloku. Początkowo wolumin będzie miał jeden komponent: wszystkie pozostałe zostaną ustawione jako nieudane. Musisz przekazać --level=1(lub równoważnie -n 1) (ta metoda działa tylko w przypadku RAID-1) i --metadata=0.9lub --metadata=1.0(domyślny format superbloku 1.2 umieszcza superblok na początku urządzenia, co może zastąpić dane). Argumentem --raid-devices( -n) jest liczba komponentów (w tym brakujących) w woluminie RAID.

mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 /dev/sda1 missing

Możesz teraz aktywować tablicę i dodać inne komponenty.

mdadm --add /dev/md0 /dev/sdb1

Uwaga na temat programów ładujących: Grub2 rozumie RAID-1 Linuksa i może z niego uruchamiać. Programy ładujące, takie jak Grub1, które nie rozumieją RAID w sposób przezroczysty z woluminów lustrzanych, ale system nie uruchomi się, jeśli dysk, z którego odczytuje bootloader, ulegnie awarii. Jeśli wolumin RAID znajduje się na partycji, zainstaluj sektor rozruchowy Gruba na obu dyskach.

¹ Pamiętaj, aby mieć kopie zapasowe. „Nie niebezpieczne” oznacza „prawdopodobnie nie będziesz ich potrzebować”, a nie „ryzykujesz swoimi danymi”.

Przesłane i nieco dostosowane od Jak skonfigurować dublowanie dysku (RAID-1)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.