Jak i dlaczego opcja noatime zwiększa wydajność systemów Linux

Aktualizacja atime wpływa na wydajność systemu. Co się dzieje i co z tym zrobić – przeczytaj w artykule.

Jak i dlaczego opcja noatime zwiększa wydajność systemów Linux
Za każdym razem, gdy aktualizuję Linux na swoim domowym komputerze, muszę rozwiązywać pewne zadania. Z biegiem lat stało się to nawykiem: wykonuję kopie zapasowe swoich plików, usuwam system, instaluję wszystko od nowa, przywracam swoje pliki, a następnie ponownie instaluję ulubione aplikacje. Dostosowuję również ustawienia systemu do swoich potrzeb. Czasami zajmuje to zbyt dużo czasu. Ostatnio zastanawiałem się, czy potrzebuję tego bólu głowy.

atime jest jedną z trzech znaczników czasowych dla plików w Linuxie (więcej o tym później). Zastanawiałem się, czy nadal warto wyłączać atime w nowszych systemach Linux. Ponieważ atime aktualizuje się za każdym razem, gdy uzyskuje się dostęp do pliku, zrozumiałem, że ma on znaczący wpływ na wydajność systemu.
Niedawno zaktualizowałem się do Fedora 32 i z automatu zacząłem od wyłączenia atime. Zastanawiałem się: czy potrzebuję go w ogóle? Postanowiłem zgłębić ten temat i oto, co odkryłem.

Trochę o znacznikach czasowych plików

Aby zrozumieć, trzeba cofnąć się i przypomnieć sobie kilka rzeczy o systemach plików Linux i tym, jak jądro przypisuje znaczniki czasowe do plików i katalogów. Możesz zobaczyć datę ostatniej modyfikacji plików i katalogów, uruchamiając polecenie ls -l (long) lub po prostu patrząc na informacje o tym w menedżerze plików. Ale za kulisami jądro Linuxa śledzi kilka znaczników czasowych dla plików i katalogów:

  1. Ostatnia modyfikacja pliku (mtime)
  2. Ostatnia zmiana właściwości i metadanych pliku (ctime)
  3. Ostatni dostęp do pliku (atime)
  4. Możesz użyć polecenia stat, aby zobaczyć dane o pliku lub katalogu. Oto plik /etc/fstab z jednego z moich serwerów testowych:

$ stat fstab
  Plik: fstab
  Rozmiar: 261             Bloki: 8          IO Blok: 4096   plik regularny
Urządzenie: b303h/45827d    Inode: 2097285     Linki: 1
Dostęp: (0664/-rw-rw-r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontekst: system_u:object_r:etc_t:s0
Ostatni dostęp: 2019-04-25 21:10:18.083325111 -0500
Modyfikacja: 2019-05-16 10:46:47.427686706 -0500
Zmiana: 2019-05-16 10:46:47.434686674 -0500
 Urodziny: 2019-04-25 21:03:11.840496275 -0500

Widać tutaj, że plik został utworzony 25 kwietnia 2019 roku, kiedy zainstalowałem system. Mój plik /etc/fstab był ostatnio modyfikowany 16 maja 2019 roku, a wszystkie inne atrybuty zmieniły się mniej więcej w tym samym czasie.

Jeśli kopiuję /etc/fstab do nowego pliku, daty się zmieniają, wskazując, że jest to nowy plik:

$ sudo cp fstab fstab.bak
$ stat fstab.bak
  Plik: fstab.bak
  Rozmiar: 261             Bloki: 8          Blok IO: 4096   plik regularny
Urządzenie: b303h/45827d    Inode: 2105664     Linki: 1
Dostęp: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontekst: unconfined_u:object_r:etc_t:s0
Dostęp: 2020-05-12 17:53:58.442659986 -0500
Modyfikacja: 2020-05-12 17:53:58.443659981 -0500
Zmiana: 2020-05-12 17:53:58.443659981 -0500
 Czas utworzenia: 2020-05-12 17:53:58.442659986 -0500

Ale jeśli po prostu zmienię nazwę pliku, nie zmieniając jego zawartości, Linux zaktualizuje tylko czas zmiany pliku:

$ sudo mv fstab.bak fstab.tmp
$ stat fstab.tmp
  Plik: fstab.tmp
  Rozmiar: 261             Bloki: 8          Blok IO: 4096   plik regularny
Urządzenie: b303h/45827d    Inode: 2105664     Linki: 1
Dostęp: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Kontekst: unconfined_u:object_r:etc_t:s0
Dostęp: 2020-05-12 17:53:58.442659986 -0500
Modyfikacja: 2020-05-12 17:53:58.443659981 -0500
Zmiana: 2020-05-12 17:54:24.576508232 -0500
 Czas utworzenia: 2020-05-12 17:53:58.442659986 -0500

Te znaczniki czasowe są bardzo przydatne dla określonych programów Unix. Na przykład, biff to program, który powiadamia cię o pojawieniu się nowego wiadomości e-mail. Dziś mało kto go używa, biff, ale w czasach, kiedy skrzynki pocztowe były lokalne dla systemu, biff był dość powszechny.

Jak program wie, czy masz nową pocztę w skrzynce odbiorczej? biff porównuje czas ostatniej zmiany (kiedy plik przychodzącej poczty został zaktualizowany nowym wiadomościami e-mail) i czas ostatniego dostępu (ostatni raz, kiedy czytałeś swoją pocztę e-mail). Jeśli zmiana miała miejsce później niż dostęp, biff zrozumie, że nadeszła nowa wiadomość i poinformuje cię o tym. Klient pocztowy Mutt działa w podobny sposób.

Znacznik czasu ostatniego dostępu jest również przydatny, jeśli musisz zbierać statystyki dotyczące użycia systemu plików i dostosować wydajność. Administratorzy systemów muszą wiedzieć, do jakich obiektów uzyskuje się dostęp, aby odpowiednio dostosować system plików.

Jednak większość nowoczesnych programów nie potrzebuje już tego znacznika, dlatego zaproponowano, aby go nie używać. W 2007 roku Linus Torvalds i kilku innych programistów jądra omawiało atime w kontekście problemu z wydajnością. Programista jądra Linux Ingo Molnar zaznaczył następującą uwagę na temat atime i systemu plików ext3:

Dość dziwne, że każde stanowisko robocze i serwer Linux cierpi na zauważalne obniżenie wydajności wejścia-wyjścia z powodu ciągłych aktualizacji atime, chociaż rzeczywistych użytkowników jest tylko dwóch: tmpwatch [którego można skonfigurować do użycia ctime, więc nie stanowi to dużego problemu] i niektóre narzędzia do tworzenia kopii zapasowych.

Ludzie jednak wciąż korzystają z niektórych programów wymagających tej etykiety. Zatem usunięcie atime zakłóci ich działanie. Programiści jądra Linux nie powinni ograniczać wolności użytkowników.

Rozwiązanie Salomonowe

W dystrybucjach Linuxa zapisano wiele aplikacji, a ponadto użytkownicy mogą pobierać i instalować inne programy zgodnie ze swoimi potrzebami. To kluczowa zaleta systemów operacyjnych z otwartym kodem źródłowym. Jednak komplikacja ta utrudnia optymalizację wydajności systemu plików. Usunięcie zasobochłonnych komponentów może zakłócić działanie systemu.

Jako kompromis, programiści jądra Linux wprowadzili nową opcję relaytime, która ma zapewnić równowagę między wydajnością a kompatybilnością:

atime jest aktualizowane tylko wtedy, gdy wcześniejszy czas dostępu jest mniejszy od bieżącego czasu modyfikacji lub zmiany statusu… Od wersji Linux 2.6.30, jądro domyślnie korzysta z tej opcji (jeśli nie podano noatime)… Ponadto, od wersji Linux 2.6.30, czas ostatniego dostępu do pliku jest zawsze aktualizowany, jeśli jest starszy niż 1 dzień.

Nowoczesne systemy Linux (począwszy od Linux 2.6.30, wydanego w 2009 roku) już korzystają z relaytime, co powinno przynieść rzeczywisty wzrost wydajności. Oznacza to, że nie musisz konfigurować pliku /etc/fstab, a z relaytime możesz polegać na wartości domyślnej.

Zwiększenie wydajności systemu za pomocą noatime

Jednak jeśli chcesz skonfigurować swój system, aby uzyskać maksymalną wydajność, wyłączenie atime wciąż jest możliwe.

Zmiana wydajności może nie być zbyt zauważalna na bardzo szybkich nowoczesnych dyskach (takich jak NVME lub szybkie SSD), ale daje pewien wzrost.

Jeśli wiesz, że nie używasz oprogramowania, które wymaga atime, możesz nieznacznie zwiększyć wydajność, włączając opcję noatime w pliku /etc /fstabPo tym system operacyjny nie będzie ciągle aktualizować atime. Użyj opcji noatime podczas montowania systemu plików:

/dev/mapper/fedora_localhost--live-root /          ext4   defaults,noatime,x-systemd.device-timeout=0 1 1
UUID=be37c451-915e-4355-95c4-654729cf662a /boot    ext4   defaults,noatime        1 2
UUID=C594-12B1                          /boot/efi  vfat   umask=0077,shortname=winnt 0 2
/dev/mapper/fedora_localhost--live-home /home      ext4   defaults,noatime,x-systemd.device-timeout=0 1 2
/dev/mapper/fedora_localhost--live-swap none       swap   defaults,x-systemd.device-timeout=0 0 0

Zmiany wejdą w życie przy następnym uruchomieniu.

Reklama

Szukasz serwera do hostowania strony? Nasza firma oferuje solidne serwery z codzienną lub jednorazową płatnością, każdy serwer jest połączony z kanałem internetowym o prędkości 500 megabitów i jest bezpłatnie chroniony przed atakami DDoS!

Jak i dlaczego opcja noatime zwiększa wydajność systemów Linux

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster