Czy RAID1 zwiększa wydajność w systemie Linux mdadm?

26

Mam tani 2-kieszeniowy NAS z dyskiem twardym 2 TB. Aby zabezpieczyć się przed awarią dysku, zastanawiam się nad kupnem drugiego dysku twardego o pojemności 2 TB i umieszczeniem go w RAID1 w systemie Linux mdadm. System plików to ext4.

Czy to zwiększy lub zmniejszy wydajność NAS? Co powiesz na wydajność odczytu lub zapisu?

Wydaje się, że w Internecie jest wiele opinii na ten temat, ale nie ma zgody.

Dzięki.

Edytować:

Mam więc już trzy różne odpowiedzi: „nieco szybciej”, „nie zauważysz” i „zmniejszy wydajność, jeśli cokolwiek”. (Interesuje mnie przede wszystkim wydajność odczytu.) Wikipedia mówi: „wydajność odczytu może wzrosnąć mniej więcej jako liniowa wielokrotność liczby kopii”. Który to?

Edycja 2:

Znalazłem dowody na poparcie zwiększania wydajności odczytu RAID1, w tym na stronie MD:

Zmiany są zapisywane na wszystkich urządzeniach równolegle. Dane są odczytywane z dowolnego urządzenia. Sterownik próbuje rozdzielić żądania odczytu na wszystkie urządzenia, aby zmaksymalizować wydajność.

Odkryłem także RAID10 MD --layout=f2, który zapewnia nadmiarowość RAID1 z wydajnością odczytu RAID0, i może być używany tylko z dwoma dyskami. Wydajność zapisu jest jednak zmniejszona, ponieważ zapis sekwencyjny wymaga, aby oba dyski przeszukiwały tam iz powrotem pomiędzy odległymi częściami napędu. man mddla szczegółów.

Jesse
źródło
2
pisze; trochę wolniej. czyta; trochę szybciej. Z tego, co rozumiem, różnica w zapisie wynosi prawie zero, a odczyt jest dość zauważalny.
Sirex,
Dokładnie to, co mówi sirex. Gołym okiem nie zauważysz różnicy w wydajności. Nie oczekuj, że podwoisz ją, a nawet połowę.
Piotr Kula
1
Tęsknię za jedną częścią: jak szybki jest dostęp do NAS. Jeśli jeden dysk już wypełnia połączenie sieciowe, większa prędkość wewnętrzna nie pomoże ci zbytnio.
Hennes,

Odpowiedzi:

39

Tak, implementacja RAID1 w systemie Linux przyspiesza operacje odczytu dysku dwukrotnie, o ile wykonywane są jednocześnie dwie oddzielne operacje odczytu dysku . Oznacza to, że odczyt jednego pliku 10 GB nie zajmie szybciej RAID1 niż na pojedynczym dysku, ale odczyt dwóch odrębnych plików 10 GB * zajmie szybciej.

Aby to zademonstrować, po prostu przeczytaj niektóre dane dd. Przed wykonaniem czegokolwiek wyczyść pamięć podręczną odczytu dysku za pomocą sync && echo 3 > /proc/sys/vm/drop_caches. W przeciwnym razie hdparmżąda super szybkich odczytów.

Pojedynczy plik:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

Dwa pliki:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

Odczyt 10 GB danych zajął 65 sekund, podczas gdy odczyt 10 GB + 10 GB = 20 GB danych zajął w sumie 68,7 sekundy, co oznacza, że wiele odczytów dysków znacznie korzysta z RAID1 w systemie Linux. skip=$COUNTczęść jest bardzo ważna. Drugi proces odczytuje 10 GB danych z przesunięcia 10 GB.

Odpowiedź Jareda i komentarze ssh dotyczące http://www.unicom.com/node/459 są błędne. Test porównawczy pokazuje, że odczyty dysku nie korzystają z RAID1. Jednak test został przeprowadzony za pomocą narzędzia do testowania bonnie ++, które nie wykonuje dwóch osobnych odczytów jednocześnie. Autor wyraźnie stwierdza, że ​​bonnie ++ nie nadaje się do testowania macierzy RAID ( patrz readme ).

Nowaker
źródło
5

Tak, zwiększysz wydajność czytania + nadmiarowość. Możesz łatwo sobie wyobrazić, ponieważ możesz czytać części plików jednocześnie z dwóch różnych dysków twardych, ponieważ pliki znajdują się na obu dyskach twardych.

Teoretycznie więc, jeśli kontroler RAID wykonuje swoje zadanie prawidłowo, można uzyskać przyspieszenie O (n).

inf
źródło
5
mdadm to programowa macierz RAID, więc tak naprawdę nie ma „kontrolera RAID”, ale zapewni dobre przyspieszenie odczytu podczas wykonywania równoległych odczytów wielu plików, nie w tym przypadku, jak sądzę, ponieważ skrzynka NAS jest rzadko dostępna jednocześnie. Zobacz tutaj szczegóły: freebsdwiki.net/index.php/...
Shadok
1
W praktyce wydajność spada podczas odczytu z nalotu Linux Software MD. Zobacz unicom.com/node/459 (W tym teście szybkość odczytu spadła z 77 MB / s do 74 MB / s).
ssh
2
@ssh unicom.com/node/459 jest całkowicie błędny. bonnie ++ nie nadaje się do testowania serwerów lustrzanych RAID, co jest wyraźnie określone w pliku readme. Zobacz moją odpowiedź, aby uzyskać więcej informacji. superuser.com/a/757264/68978
Nowaker
4
  • man 4 mdstwierdza: „… Należy zauważyć, że równoważenie odczytu wykonane przez sterownik nie powoduje, że profil wydajności RAID1 jest taki sam jak dla RAID0 ; pojedynczy strumień danych wejściowych nie będzie przyspieszany (np. pojedynczy dd), ale wiele kolejnych strumieni lub losowy obciążenie będzie korzystało z więcej niż jednego wrzeciona. Teoretycznie posiadanie N-dysku RAID1 pozwoli N na odczyt sekwencyjnych wątków ze wszystkich dysków.

  • Na dodatek - w praktyce , w oparciu o iostatdane wyjściowe obserwowane w typowej konfiguracji RAID z 2 dyskami twardymi, nie ma równowagi . W rzeczywistości wygląda na to mdadm, że opcja --write-mostlyjest zawsze włączona.

poige
źródło
3

Nie, nie będziesz otrzymywać żadnych korzyści podczas czytania z mdadm RAID1. Pytałem się o to jakiś czas temu.

dstatpokazuje użycie dysków, również bwm-ngnaprawdę pomaga, szczególnie w tym przypadku, ponieważ może pokazywać użycie odczytu / zapisu na osobnych elementach RAID mdadm. Wystarczy nacisnąć n(dalej) kilka razy, aby przełączyć ze statystyk interfejsu na statystyki dysku. Następnie przełącz na maksymalne wartości za pomocą, taby zobaczyć maksymalny odczyt / zapis z każdego dysku. Zobaczysz:

Robienie zapisu na woluminie RAID1 bwm-ng pokazuje 2 x zapisy, zapisywanie na 2 dyskach jednocześnie. Wykonanie odczytu z woluminu RAID1 bwm-ng pokazuje odczyt z pojedynczego napędu (elementu macierzy).

TooMeeK
źródło