Udostępnij za pośrednictwem


Konfiguracja programowej macierzy RAID w systemie Linux

Typowym scenariuszem jest użycie programowej macierzy RAID na maszynach wirtualnych z systemem Linux na platformie Azure, aby połączyć wiele dołączonych dysków danych w jedno urządzenie RAID. Zazwyczaj może to służyć do zwiększenia wydajności i umożliwienia zwiększenia przepływności w porównaniu z użyciem tylko jednego dysku.

Dołączanie dysków danych

Do skonfigurowania urządzenia RAID potrzebne są co najmniej dwa puste dyski danych. Główną przyczyną utworzenia urządzenia RAID jest zwiększenie wydajności operacji we/wy dysku. W zależności od potrzeb dotyczących we/wy, możesz dołączyć dyski przechowywane w naszym magazynie Standard Storage z maksymalnie 500 operacjami we/wy na sekundę na dysk lub w naszym magazynie Premium Storage z maksymalnie 5000 operacjami we/wy na sekundę na dysk. W tym artykule nie opisano szczegółowo sposobu aprowizowania i dołączania dysków danych do maszyny wirtualnej z systemem Linux. Aby zapoznać się ze szczegółowymi instrukcjami dotyczącymi dołączania pustego dysku danych do maszyny wirtualnej z systemem Linux na platformie Azure, przeczytaj artykuł Microsoft Azure #c0 dołączanie dysku#c1.

Ważne

Nie mieszaj dysków o różnych rozmiarach, co spowodowałoby ograniczenie wydajności zestawu raidset do najwolniejszego dysku.

Instalowanie narzędzia mdadm

  • Ubuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS i Oracle Linux

    sudo yum install mdadm
    
  • SLES i openSUSE

    zypper install mdadm
    

Tworzenie partycji dysku

W tym przykładzie utworzymy pojedynczą partycję dysku na /dev/sdc. Nowa partycja dysku będzie nazywana /dev/sdc1.

  1. Rozpocznij fdisk tworzenie partycji

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. Naciśnij "n" po wyświetleniu monitu, aby utworzyć partycję new:

    Command (m for help): n
    
  3. Następnie naciśnij "p", aby utworzyć partycjęobręczą:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Naciśnij "1", aby wybrać numer partycji 1:

    Partition number (1-4): 1
    
  5. Wybierz punkt początkowy nowej partycji lub naciśnij <enter> , aby zaakceptować wartość domyślną, aby umieścić partycję na początku wolnego miejsca na dysku:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Wybierz rozmiar partycji, na przykład wpisz "+10G", aby utworzyć partycję 10 gigabajtów. Możesz też nacisnąć pozycję <enter> Utwórz pojedynczą partycję, która obejmuje cały dysk:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Następnie zmień identyfikator i typepartycji z domyślnego identyfikatora "83" (Linux) na identyfikator "fd" (auto raid systemu Linux):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Na koniec zapisz tabelę partycji na dysku i zakończ działanie programu fdisk.

    Command (m for help): w
    The partition table has been altered!
    

Tworzenie tablicy RAID

  1. W poniższym przykładzie zrealizowane zostanie "paskowanie" (RAID poziom 0) trzech partycji znajdujących się na trzech oddzielnych dyskach danych (sdc1, sdd1, sde1). Po uruchomieniu tego polecenia zostanie utworzone nowe urządzenie RAID o nazwie /dev/md127 . Należy również pamiętać, że jeśli te dyski danych były wcześniej częścią innej nieistniejącej macierzy RAID, może być konieczne dodanie parametru --forcemdadm do polecenia:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Tworzenie systemu plików na nowym urządzeniu RAID

    CentOS, Oracle Linux, SLES 12, openSUSE i Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 — włączanie boot.md i tworzenie pliku mdadm.conf

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    Uwaga / Notatka

    Ponowne uruchomienie może być wymagane po wprowadzeniu tych zmian w systemach SUSE. Ten krok nie jest wymagany w systemie SLES 12.

Dodaj nowy system plików do /etc/fstab

Ważne

Niewłaściwa edycja pliku /etc/fstab może spowodować, że system nie będzie się uruchamiał. Jeśli nie masz pewności, jak to zrobić, sprawdź informacje na temat prawidłowego edytowania tego pliku w dokumentacji dystrybucji. Zaleca się również utworzenie kopii zapasowej pliku /etc/fstab przed edycją.

  1. Utwórz żądany punkt instalacji dla nowego systemu plików, na przykład:

    sudo mkdir /data
    
  2. Podczas edytowania /etc/fstab identyfikator UUID powinien być używany do odwołowania się do systemu plików, a nie nazwy urządzenia. blkid Użyj narzędzia , aby określić identyfikator UUID dla nowego systemu plików:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Otwórz plik /etc/fstab w edytorze tekstów i dodaj wpis dla nowego systemu plików, na przykład:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    Albo na SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    Następnie zapisz i zamknij /etc/fstab.

  4. Sprawdź, czy wpis /etc/fstab jest poprawny:

    sudo mount -a
    

    Jeśli to polecenie spowoduje wyświetlenie komunikatu o błędzie, sprawdź składnię w pliku /etc/fstab.

    Następnie uruchom polecenie mount, aby upewnić się, że system plików jest zamontowany.

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Opcjonalnie) Parametry rozruchu awaryjnego

    konfiguracja fstab

    Wiele dystrybucji zawiera parametry montowania nobootwait albo nofail, które mogą zostać dodane do pliku /etc/fstab. Te parametry umożliwiają niepowodzenia podczas montowania określonego systemu plików i pozwalają systemowi Linux kontynuować rozruch, nawet jeśli nie jest w stanie prawidłowo zamontować systemu plików RAID. Aby uzyskać więcej informacji na temat tych parametrów, zapoznaj się z dokumentacją dystrybucji.

    Przykład (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    Parametry rozruchu systemu Linux

    Oprócz powyższych parametrów parametr jądra "bootdegraded=true" może pozwolić systemowi uruchomić się, nawet jeśli macierz RAID jest postrzegana jako uszkodzona lub zdegradowana, na przykład jeśli dysk danych jest przypadkowo usunięty z maszyny wirtualnej. Domyślnie może to również spowodować system nierozruchowy.

    Zapoznaj się z dokumentacją dystrybucji dotyczącą prawidłowego edytowania parametrów jądra. Na przykład w wielu dystrybucjach (CentOS, Oracle Linux, SLES 11) te parametry można dodać ręcznie do pliku "/boot/grub/menu.lst". W systemie Ubuntu ten parametr można dodać do zmiennej GRUB_CMDLINE_LINUX_DEFAULT "/etc/default/grub".

Obsługa funkcji TRIM/UNMAP

Niektóre jądra systemu Linux obsługują operacje TRIM/UNMAP w celu odrzucenia nieużywanych bloków na dysku. Te operacje są szczególnie przydatne w magazynie standardowym, aby poinformować platformę Azure, że usunięte strony nie są już prawidłowe i można je odrzucić. Odrzucanie stron może obniżyć koszt, jeśli tworzysz duże pliki, a następnie je usuwasz.

Uwaga / Notatka

Macierz RAID nie może wydać poleceń odrzucania, jeśli rozmiar fragmentu tablicy jest ustawiony na wartość mniejszą niż domyślna (512 KB). Wynika to z faktu, że stopień szczegółowości niemapowania na hoście wynosi również 512 KB. Jeśli rozmiar fragmentu tablicy został zmodyfikowany za pomocą parametru --chunk= mdadm, żądania TRIM/unmap mogą być ignorowane przez jądro.

Istnieją dwa sposoby, aby włączyć obsługę TRIM na maszynie wirtualnej z systemem Linux. Jak zwykle, skonsultuj się ze swoją dystrybucją, aby uzyskać zalecany sposób postępowania.

  • Użyj opcji montowania discard w /etc/fstab. Na przykład:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • W niektórych przypadkach opcja discard może mieć wpływ na wydajność. Alternatywnie możesz uruchomić fstrim polecenie ręcznie z poziomu wiersza polecenia lub dodać je do narzędzia crontab w celu regularnego uruchamiania:

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data