Konfigurowanie programowej macierzy RAID w systemie Linux

Typowym scenariuszem jest użycie programowej macierzy RAID na maszynach wirtualnych z systemem Linux na platformie Azure w celu przedstawienia wielu dołączonych dysków danych jako jednego urządzenia 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łównym powodem tworzenia urządzenia RAID jest zwiększenie wydajności operacji we/wy dysku. W zależności od potrzeb we/wy możesz dołączyć dyski przechowywane w usłudze Standard Storage z maksymalnie 500 we/wy na dysk lub magazyn Premium z maksymalnie 5000 we/wy na dysk. W tym artykule nie opisano szczegółowo sposobu aprowizowania i dołączania dysków danych do maszyny wirtualnej z systemem Linux. Zobacz artykuł dotyczący dołączania dysku na platformie Microsoft Azure, aby uzyskać szczegółowe instrukcje dotyczące dołączania pustego dysku danych do maszyny wirtualnej z systemem Linux na platformie Azure.

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 & Oracle Linux

    sudo yum install mdadm
    
  • SLES i openSUSE

    zypper install mdadm
    

Tworzenie partycji dysku

W tym przykładzie utworzymy pojedynczą partycję dysku w usłudze /dev/sdc. Nowa partycja dysku będzie mieć nazwę /dev/sdc1.

  1. Rozpoczynanie fdisk tworzenia 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 klawisz "n" w monicie, aby utworzyć partycję new:

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

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

    Partition number (1-4): 1
    
  5. Wybierz punkt początkowy nowej partycji lub naciśnij klawisz <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 typ "+10G", aby utworzyć partycję o rozmiarze 10 gigabajtów. Możesz też nacisnąć przycisk <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 zamknij dysk fdisk:

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

Tworzenie tablicy RAID

  1. W poniższym przykładzie "stripe" (RAID level 0) trzy partycje znajdujące 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

    Po wprowadzeniu tych zmian w systemach SUSE może być wymagany ponowny rozruch. 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ć niebootable systemu. 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ływanie 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
    

    Lub na SLES 11:

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

    Następnie zapisz i zamknij plik /etc/fstab.

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

    sudo mount -a
    

    Jeśli to polecenie powoduje 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 zainstalowany:

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

    konfiguracja fstab

    Wiele dystrybucji obejmuje parametry nobootwait instalacji lub nofail , które mogą zostać dodane do pliku /etc/fstab. Te parametry umożliwiają błędy podczas instalowania określonego systemu plików i umożliwiają systemowi Linux kontynuowanie rozruchu, nawet jeśli nie może poprawnie zainstalować 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 umożliwić systemowi rozruch, nawet jeśli macierz RAID jest postrzegana jako uszkodzona lub obniżona, na przykład jeśli dysk danych jest przypadkowo usunięty z maszyny wirtualnej. Domyślnie może to spowodować również nie rozruchowy system.

    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 na "/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ą przede wszystkim 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ć koszty, jeśli tworzysz duże pliki, a następnie usuwasz je.

Uwaga

Macierz RAID może nie wystawiać poleceń odrzucania, jeśli rozmiar fragmentu tablicy jest ustawiony na wartość mniejszą niż domyślna (512 KB). Wynika to z tego, ż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 włączania obsługi funkcji TRIM na maszynie wirtualnej z systemem Linux. Jak zwykle zapoznaj się z rozkładem zalecanym podejściem:

  • discard Użyj opcji instalacji w /etc/fstabprogramie , na przykład:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • W niektórych przypadkach discard opcja 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