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.
Rozpoczynanie
fdisk
tworzenia partycjisudo 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').
Naciśnij klawisz "n" w monicie, aby utworzyć partycję new:
Command (m for help): n
Następnie naciśnij klawisz "p", aby utworzyć partycjęobręczą p:
Command action e extended p primary partition (1-4)
Naciśnij klawisz "1", aby wybrać numer partycji 1:
Partition number (1-4): 1
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
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
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
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
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
--force
mdadm
do polecenia:sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \ /dev/sdc1 /dev/sdd1 /dev/sde1
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ą.
Utwórz żądany punkt instalacji dla nowego systemu plików, na przykład:
sudo mkdir /data
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"
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.
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)
(Opcjonalnie) Parametry rozruchu awaryjnego
konfiguracja fstab
Wiele dystrybucji obejmuje parametry
nobootwait
instalacji lubnofail
, 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 zmiennejGRUB_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/fstab
programie , 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