Skip to main content
Loading...
Szukaj
Logowanie
Dane logowania.
Nie masz konta? Załóż je tutaj.
Zarejestruj się
Zarejestruj się
Masz konto? Zaloguj się tutaj.

Dlaczego dane ciągłe czytają się wolniej od pofragmentowanych?

Dlaczego dane ciągłe czytają się wolniej od pofragmentowanych?

Przywykliśmy, że dane zapisane w sekwencji kolejnych sektorów powinny czytać się szybciej od pofragmentowanych. Szczególnie jest to widoczne w dyskach twardych, gdzie jeżeli dane są pofragmentowane, głowica traci czas na odnajdywanie kolejnych fragmentów pliku. Stąd w ich przypadku defragmentacja danych jest często zalecaną czynnością optymalizującą pracę komputera. Ale nie zawsze tak jest. Dlaczego niekiedy dane pofragmentowane czytają się szybciej od zapisanych liniowo?

Adresacja logiczna a fizyczna

Kiedy obserwujemy rozmieszczenie plików i oceniamy ich fragmentację, posługujemy się adresacją LBA (Logical Block Addressing). Choć ten poziom adresacji jest często postrzegany jako sektory fizyczne, w rzeczywistości jest to adresacja logiczna pozwalająca na zachowanie kompatybilności pomiędzy nośnikami danych, protokołami komunikacyjnymi i systemami plików. W tej adresacji posługujemy się 512-bajtowymi sektorami, którym nadajemy kolejno numery od 0 aż do ostatniego.

Wprawdzie sektory LBA mogą nam się kojarzyć z sektorami dysków twardych, ale obecnie jest to już tylko zaszłość historyczna. Współczesne dyski twarde posługują się sektorami liczącymi 4 kB, które odpowiadają 8 sektorom logicznym. Jeszcze bardziej złożona jest sytuacja w przypadku nośników NAND-owych. Układy NAND nie rozumieją sektorów, a adresują dane w blokach (minimalna jednostka kasowania) i stronach (minimalna jednostka programowania i odczytu). Dodatkowo algorytmy rozpraszania danych powodują, że kolejne sektory logiczne mogą trafiać do różnych fizycznych jednostek alokacji. Za przeliczanie adresów LBA na adresację fizyczną odpowiada część oprogramowania układowego nośnika – podsystem translacji. Podsystem translacji jest bardzo wrażliwy na błędy i jego problemy są częstą przyczyną awarii zarówno dysków twardych, jak i nośników półprzewodnikowych. Więcej możesz o tym przeczytać w Security Magazine nr 9(18)/2023 i 11(20)/2023.

Rozmieszczenie sektorów LBA w dyskach twardych

Do połowy lat ‘80 sektory w dyskach twardych były adresowane bezpośrednio w adresacji fizycznej CHS (C — cylinder, czyli grupa ścieżek o tym samym promieniu, H – head, głowica jednoznacznie identyfikująca powierzchnię talerza i S – sector, sektor będący fragmentem wybranej ścieżki).

Rosnąca w tamtym czasie liczba producentów oraz modeli dysków o zróżnicowanych parametrach przy jednoczesnym upowszechnianiu techniki komputerowej, która zaczęła masowo trafiać w ręce nietechnicznych użytkowników wymusiły standaryzację urządzeń. I to mające na celu zapewnienie kompatybilności dysków twardych oraz uproszczenie ich obsługi standardy ATA oraz SCSI wprowadziły adresację LBA.

Ale od samego wprowadzenia nowej adresacji stara przecież nie zniknęła. Dyski wewnątrz nadal adresują konkretne fizyczne sektory na konkretnych ścieżkach i konkretnych powierzchniach talerzy. Muszą też odpowiednio zarządzać uszkodzonymi sektorami, aby nie były one zagrożeniem dla bezpieczeństwa danych. Do tego przy przypisywaniu fizy-cznym sektorom adresów logicznych producenci kierują się chęcią uzyskania nośników o jak najlepszych parametrach wydajnościowych i gęstości zapisu.

Logicznym jest, by kolejne numery adresów nadawać kolejnym sektorom na ścieżce, a następnie przechodzić na sąsiednią ścieżkę. Ponieważ nawet przepozycjonowanie głowicy na sąsiednią ścieżkę wymaga czasu, numery sektorów nadaje się z odpowiednim przesunięciem tak, by kolejny sektor nie uciekł w tym czasie spod głowicy, ale podjechał pod nią we właściwym momencie. Ale z której strony zacząć? Od środka, czy od zewnętrznej krawędzi?

Z pomocą w podjęciu decyzji przychodzi nam wzór na długość okręgu = 2πr. Łatwo wtedy zauważymy, że wraz z promieniem rośnie także długość okręgu, a więc zewnętrzne ścieżki są znacznie dłuższe od wewnętrznych. A ponieważ adresacja LBA pozwoliła producentom ukryć wewnętrzną adresację fizyczną przez światem zewnętrznym, zyskali oni swobodę zróżnicowania liczby sektorów na ścieżkę. Dzięki temu na zewnętrznych ścieżkach mogą oni umieścić więcej sektorów niż na wewnętrznych, co pozwala nie tylko uzyskać większą gęstość zapisu, ale też wyższą wydajność. I takich stref o różnej liczbie sektorów na ścieżkę na powierzchni talerza może być nawet kilkadziesiąt.

Jeśli na zewnętrznych ścieżkach umieścimy więcej sektorów, będziemy mogli w czasie jednego obrotu talerza przeczytać więcej danych. Dlatego pierwsze numery LBA przypisywane są sektorom na zewnętrznych ścieżkach. Od czasu do czasu numeracja przechodzi na kolejne powierzchnię talerzy, by stopniowo w miarę równomiernie zbliżać się do środka. Możemy to zaobserwować na wykresie skanu powierzchni talerza, gdzie bez trudu zauważymy, że początkowe sektory odczytywane są nawet trzy razy szybciej od końcowych. Dlatego pofragmentowane dane położone w początkowych sektorach LBA mogą się czytać szybciej od danych ciągłych zapisanych pod koniec dysku.

Zarządzanie defektami

Na potrzeby tego artykułu możemy defekty na dysku podzielić na dwie kategorie. Fabryczne – ujawnione na etapie testów fabrycznych oraz eksploatacyjne – powstałe lub ujawnione w trakcie eksploatacji dysku. I odpowiednio mamy dwie listy defektów. Listę podstawową (lista P) dla defektów fabrycznych oraz przyrostową (lista G) dla defektów eksploatacyjnych. Rzeczywiste rozwiązania zarządzania defektami bywają dużo bardziej skomplikowane, ale na nasze potrzeby to uproszczenie nam wystarczy.

Nadając sektorom numery LBA możemy wykorzystać listę P i po prostu omijać uszkodzone sektory. Dlatego jeśli na ścieżce trafi się defekt fabryczny, głowica musi jedynie zaczekać na kolejny cały czas pozostając nad ścieżką. Natomiast w przypadku uszkodzeń eksploatacyjnych takie podejście jest niepraktyczne, gdyż wymagałoby przenumerowania wszystkich kolejnych sektorów, a ze względu na spójność adresowania logicznego, także przenoszenia ich zawartości.

Dlatego w przypadku defektów eksploatacyjnych stosuje się inne podejście. Część ścieżek pozostawia się bez nadanych numerów LBA jako rezerwę i jeśli zostanie ujawniony uszkodzony sektor, jest on wpisywany na listę G, a jego numer LBA jest mu odpierany i przypisywany któremuś z sektorów rezerwowych. Operację tę nazywa się remapowaniem lub realokacją. Dla ograniczenia negatywnych skutków dla wydajności dysku, grupy ścieżek rezerwowych tworzy się przy każdej strefie ścieżek. Tym niemniej w przypadku realokacji sektorów zrywana jest fizyczna ciągłość zapisu i głowice muszą w czasie odczytu poszukać takiego remapowanego sektora, a następnie wrócić nad pierwotną ścieżkę. To też wpły-wa na na czas odczytu danych.

Sektory niestabilne

Przy współcześnie uzyskiwanej gęstości zapisu nie-możliwym jest uzyskanie bezbłędnych zapisów i odczytów. Warunki masowej produkcji talerzy nie pozwalają na pełną powtarzalność ich wykonania i nawet na powierzchni jednego talerza mogą występować różnice w jakości warstwy magnetycznej. Dlatego stosowane są złożone algorytmy kodowania i dekodowania danych pozwalające na korekcję błędów bitowych.

Jednak nawet przy wykorzystaniu tych rozwiązań liczba błędów bitowych może przekroczyć ich możliwości. Gdyby w takiej sytuacji za każdym razem sektor był uznawany za uszkodzony i podlegał remapowaniu, szybko wyczerpaliśmy pulę sektorów rezerwowych. Z tego powodu dysk podejmuje kolejne próby odczytu takiego sektora. Zazwyczaj takich prób jest kilkanaście, do ok. 20 i dopiero jeśli nie przyniosą one rezultatu, dysk wystawia komunikat o błędzie. Każda kolejna próba, to czas, w którym musimy zaczekać na kolejny obrót talerza.

Buforowanie

W niektórych przypadkach dane są buforowane i kiedy je odczytujemy, nie musimy ich wyszukiwać na dysku, tylko możemy je odczytać szybciej z bufora. Zwykle buforowanie sprzyja szybszemu odczytywania danych ciągłych. Tak jest np. w przypadku odczytu wyprzedzającego. Polega on na tym, że jeśli żądamy od dysku odczytana sekwencji adresów LBA, dysk może na wszelki wypadek odczytać i umieścić w buforze kolejne sektory nie czekając na polecenie ich odczytania. Jeśli będziemy chcieli odczytać właśnie te sektory, będą już czekać przygotowane w buforze. Jeżeli będziemy chcieli przeczytać inne, opróżnienie bufora jest znacznie szybsze od odnalezienia i fizycznego odczytania tych danych z talerza.

Ale producenci, szukając możliwości poprawy wydajności, stosują też inne sposoby buforowania. Takim rozwiązaniem były np. dyski SSHD wyposażone w bufor NAND, w którym umieszczano najczęściej odczytywane sektory. Również bufor Media Cache w przypadku dysków niewykorzystujących technologii SMR jest wykorzystywany do przyśpieszenia odczytu najczęściej odczytywanych sektorów. Oprócz tego mogą być też wykorzystywane bufory zewnętrzne, jak np. zmiennofazowy (zajrzyj do nr 3(12)/2023 Security Magazine) bufor Optane. W tych przypadkach na czas odczytu pliku większy wpływ może mieć umieszczenie go w buforze, niż to, czy jest on pofragmentowany, czy nie.

SMR

Artykuł o dyskach SMR został opublikowany w nr 6(15)/2023 Security Magazine. W tych dyskach z uwagi na dwupoziomowy podsystem translacji adresów logicznych na fizyczne dochodzi do zerwania wcześ-niej względnie stałego przywiązania adresów LBA do sektorów fizycznych. Szczegóły rozwiązań pozwalających poradzić sobie z utratą swobodnego dostępu do sektora fizycznego podczas zapisu są różne dla dysków różnych producentów, jednak w każdym z tych przypadków nie możemy już oczekiwać, że kolejne sektory w adresacji LBA będą fizycznie umieszczone w bliskim sąsiedztwie.

Podobnej sytuacji możemy spodziewać się w dyskach z zapisem przeplotowym (IMR – Interlaced Magnetic Recording), których jeszcze wprawdzie nie ma na rynku, ale zapewne niebawem się pojawią. Będą to dyski wykorzystujące technikę częściowego nadpisywania ścieżek podobną do znanej z dysków SMR w połączeniu z techniką zapisu wspomaganego energetycznie. W założeniu rozwiązanie to ma poprawić możliwą do uzyskania gęstość zapisu oraz uprościć podsystem translacji adresów logicznych na fizyczne, jednak jeśli nawet w końcowym efekcie zapis przelotowy będzie prostszy od gontowego, to i tak będzie bardziej skomplikowany od zapisu konwencjonalnego.

Podane wyżej przykłady pokazują, że o ile faktycznie w większości przypadków odczyt plików ciągłych jest szybszy od odczytu danych pofragmentowanych, to w pewnych konkretnych sytuacjach właśnie dane pofragmentowane mogą być odczytane szybciej. Wpływ na to ma szereg czynników związanych z fizycz-nym rozmieszczeniem danych na powierzchni dysku lub w buforze. Prędkość odczytu danych zależy także od stanu technicznego nośnika i jakości jego namagnesowania, a także od rozwiązań oprogramowania układowego.

Oceń artykuł

Jak możesz czytać Security Magazine?

  1. Kliknij w POBIERZ - rozpocznie się pobieranie PDF-a na Twoje urządzenie.
  2. Śledź nasze kanały na Facebooku, LinkedIn i TikTok - tam również udostępniamy informacje na temat wydania
  3. W przystępny sposób korzystaj z lektury za pomocą ISSUU — poniżej.

Sprawdź się!

Powiązane materiały

Zapisz się do newslettera

Bądź na bieżąco z najnowszymi informacjami na temat
cyberbezpieczeństwa