Jak sformatować dysk twardy 4k sektorowy?

12

Kupiłem dysk twardy Seagate ST3000DM001 3 TB. Został sprzedany w obudowie. Sformatowałem do ext4, skopiowałem do niego niektóre dane, a następnie wyjąłem je z obudowy i podłączyłem bezpośrednio do płyty głównej. Moje dane nie były widoczne dla systemu operacyjnego (widziałem jedną nieznaną partycję ~ 300GiB, a resztę jako wolne miejsce), więc zacząłem czytać o zaawansowanym formacie i dyskach> 2 TB.

Ponownie podłączyłem dysk za pomocą USB, skopiowałem wszystkie dane i ponownie podłączyłem do sata. Użyłem gparted, aby utworzyć tablicę partycji GPT (narzędzie dyskowe Ubuntu nie pozwoliło mi na to Error synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0), utworzyłem jedną dużą partycję 3 TB Ext4, pozostawiłem Align towartość domyślną MiBi sformatowałem.

Dysk jest rozpoznawany poprawnie i prawidłowo się montuje. Pliki można pomyślnie kopiować zi na dysk.

Jednak:

Gparted pokazuje dysk mający 512k sektorów, co według mnie nie jest prawdą 1

zrzut ekranu

podczas gdy cat /sys/block/sdb/queue/physical_block_sizeraporty4096

Znalazłem kilka raportów, które libpartedmają problem z sektorami nie 512k 2 i innymi 3, które mówią, że wystarczy dostosowanie do MiB.

Parted zgłasza, że ​​dysk jest wyrównany, gdy wybiorę minimalną:

(parted) align-check 
alignment type(min/opt)  [optimal]/minimal? min                           
Partition number? 1                                                       
1 aligned
(parted)    

Czy moja konfiguracja jest prawidłowa? Czy mam obniżenie wydajności, ponieważ dysk jest sformatowany z 512k sektorami, gParted zgłasza fałszywe wartości lub źle zrozumiałem?

  1. http://www.storagereview.com/seagate_barracuda_3tb_review_1tb_platters_st3000dm001
  2. http://ubuntuforums.org/showthread.php?t=1536933&p=9754234#post9754234
  3. http://wdc.custhelp.com/app/answers/detail/a_id/5655
qwazix
źródło
Mam kilka takich dysków Seagte, a także dyski WD i Fujitsu / HGST 3TB i wszystkie one działają bez problemów. Być może masz rację co do GParted, ponieważ mój Seagate, który jest obecnie podłączony przez USB, pokazuje rozmiar sektora 4096 w GParted. Moja wersja GParted to 0.12.1, domyślnie z wersji kwantowej.
LiveWireBT
Wierzę, że pokaże tutaj również 4096, jeśli podłączę go przez USB. W kontrolerze USB-SATA jest trochę magii.
qwazix
Odpowiednia
kontrola

Odpowiedzi:

5

Zgłasza 512 bajtów, ponieważ jest to logiczny rozmiar sektora dla wstecznej zgodności ze starszymi systemami operacyjnymi (Windows). (g) parted wyrównuje partycje do 1 MiB, co jest więcej niż wystarczające do prawidłowej pracy z dyskami wykorzystującymi 4k fizycznych sektorów, więc jest dobrze, tak jak jest.

psusi
źródło
11

Po pierwsze, większość dysków w zaawansowanym formacie ma logiczny rozmiar sektora wynoszący 512 bajtów, mimo że fizyczny rozmiar sektora wynosi 4096 bajtów (4KiB). Odbywa się to poprzez żonglowanie danymi w oprogramowaniu wewnętrznym napędu, a niepoprawne wyrównanie partycji może powodować problemy z wydajnością . Możliwe, że nie jest to przyczyną twojego problemu, a twoje skupienie na wyrównaniu partycji jest niewłaściwe. (Dla pewności wyrównanie partycji jest ważne; po prostu nie jest źródłem problemu).

Moje przeczucie (i tak jestwystarczy przeczucie), że problem wynika z przełączania między obudową USB a bezpośrednim podłączeniem dysku. Niektóre obudowy przekształcają 512-bajtowe sektory logiczne na dysk na 4096-bajtowe sektory logiczne prezentowane komputerowi - to jest przeciwieństwo tego, co robi oprogramowanie wbudowane na dysku w zaawansowanym formacie. Nie jestem pozytywny, ale podejrzewam, że niektóre obudowy robią to tylko na dyskach ponad 2 TB. Zarówno schematy partycjonowania MBR, jak i GPT odnoszą się do danych według numerów sektorów, więc zmiana rozmiaru sektora unieważnia dane partycjonowania. Dlatego jeśli przygotujesz dysk w obudowie USB, która tłumaczy w ten sposób, a następnie spróbujesz użyć dysku bezpośrednio (lub odwrotnie), zobaczysz błędy, ponieważ partycje (a nawet dane kopii zapasowej GPT) nie będą gdzie komputer tego oczekuje. To tak, jakby powiedzieć osobie z zasłoniętymi oczami, że „

Rozwiązaniem tego problemu jest przygotowanie dysku i użycie go w jeden sposób - albo użyj obudowy USB, albo bezpośredniego połączenia, a nie obu. Jeśli oba są z jakiegoś powodu konieczne, musisz znaleźć załącznik, który działa bez zastosowania tego rodzaju tłumaczenia.

Aby przetestować moją hipotezę, możesz użyć narzędzia (np. parted), Które zgłasza logiczne rozmiary sektorów. Na przykład:

sudo parted /dev/sda print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B

Pominąłem garść informacji z tego wyjścia. Ważny szczegół znajduje się w pokazanym tutaj ostatnim wierszu: Logiczny i fizyczny rozmiar sektora to 512 bajtów. Jeśli uruchomisz ten test, a następnie ponownie podłącz dysk w inny sposób i uruchom go ponownie, możesz porównać wyniki. Jeśli rozmiar sektora logicznego zmienia się w zależności od sposobu podłączenia dysku, moja hipoteza jest poprawna i jest źródłem problemu. A przynajmniej jest to jeden problem; mogą być też inni. W szczególności wspomniany Error synchronizing after initial wipebłąd może wskazywać na inny problem. OTOH, to może być efekt ubocznypartedpróba odczytania kopii zapasowej danych GPT spoza końca dysku. Tak czy inaczej, jeśli zauważysz zmianę rozmiaru sektora logicznego, powinieneś rozwiązać ten problem przed zajęciem się czymkolwiek innym. Jeśli chcesz podzielić dysk na partycje, ale masz problemy z powodu Error synchronizingbłędu, spróbuj użyć gdisklub cgdisk(w gdiskpakiecie) zamiast partedlub GParted; gdiskrodzina jest bardziej odporny na błędy niż jest partedrodzina.

Rod Smith
źródło
Uważam, że problem wynika z przełączania między USB a wewnętrznym. Rzeczywiście, to była moja pierwsza myśl i dlatego ponownie utworzyłem tablicę partycji po ponownym włożeniu dysku do komputera i połączeniu z sata. (Wyjąłem go przede wszystkim po to, aby wyjąć moje dane). Nie chcę go ponownie usuwać, aby przetestować sektor logiczny zgłoszony przez USB, ale wszystkie fakty to sugerują.
qwazix
Nie zamierzam nadal przełączać interfejsów, dysk działa tak, jak jest teraz, przygotowany pod połączeniem SATA. Martwię się tylko o wspomniane kary za wyniki i chcę zrozumieć, co się naprawdę dzieje. parted /dev/sdb printzwraca, 512/4096więc wydaje się, że gParted zgłasza logiczny rozmiar sektora, co wyjaśnia, dlaczego @LiveWireBT widzi 4096 dla tego samego dysku (podłączonego przez USB), a także potwierdza przeczucie jak wyżej.
qwazix
Miał ten sam problem z zewnętrznym dyskiem Verbatim Store'n'Go, rozmiar sektora logicznego to 512, podczas gdy rozmiar fizyczny to 4096.
gaborous
4

Wprowadzono zmiany zarówno w jądrze systemu Linux, jak i narzędziach obsługujących dyski Advanced Format. Zmiany te zapewniają, że wszystkie partycje na dyskach Advanced Format są odpowiednio wyrównane na granicach sektora 4K. Obsługa jądra dla dysków Advanced Format jest dostępna w wersjach jądra 2.6.31 i nowszych. Obsługa dzielenia i formatowania dysków Advanced Format jest dostępna w następujących narzędziach systemu Linux:

Fdisk: GNU Fdisk to narzędzie wiersza polecenia, które dzieli dyski twarde na partycje. Wersje 1.2.3 i nowsze obsługują dyski Advanced Format.

Parted: GNU Parted to graficzne narzędzie do partycjonowania dysków twardych. Wersje 2.1 i nowsze obsługują dyski Advanced Format.

Natywne dyski 4K (4Kn) mają rozmiar sektora logicznego 4 KB. Nowoczesne systemy operacyjne mogą przechowywać dane na tych dyskach, ale generalnie nie mogą się uruchamiać z tych dysków. Dyski te są zwykle dyskami zewnętrznymi z połączeniem USB.

Aby utworzyć partycję używaną jako nośnik pamięci, wystarczy nacisnąć Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Kiedy się otworzy, uruchom poniższe polecenia:

sudo mkfs.ext4 -m 0 /dev/sdb1

Większość dysków 4k ma rozmiar sektora fizycznego wynoszący 4096 bajtów, dzięki czemu 3 TB może zmieścić się na płytach, ale nadal mają rozmiar sektora logicznego 512B dla zgodności z systemami operacyjnymi, które oczekują, że jeden sektor będzie wynosił 512B. Dlatego, gdy używasz polecenia drukowania w części do wydrukowania szczegółów, mówi logiczny / fizyczny rozmiar sektora 512B / 4096B. To normalne.

Ta „konwersja” jest wykonywana przez inteligencję na samym dysku i jest normalna. Tak to powinno działać.

Jeśli nie widzisz całego 3 TB, najpierw sprawdź w BIOSie, czy nie ogranicza to rozmiaru dysku. Być może potrzebujesz aktualizacji bios do obsługi dysku.

Również użycie parted do utworzenia partycji zaczynającej się od 0, co jest błędem. Musisz uruchomić pierwszą partycję w sektorze 2048, która jest równoważna 1 MB, aby partycje na dysku były wyrównane w celu uzyskania optymalnej wydajności.

Więc zmień jednostkę na MiB, wydrukuj szczegóły dysku, który również wydrukuje rozmiar dysku w MiB i utwórz partycję (jeśli chcesz tylko jedną partycję), zaczynając od 1MiB i kończąc na ostatniej MiB (lub jednej przed ostatnią) .

Na przykład dysk o pojemności 3 TB powinien mieć w rzeczywistości około 2 861 022 MiB. Tak więc tworzenie pojedynczej partycji obejmującej cały dysk na urządzeniu dyskowym o nazwie / dev / sdX byłoby podobne (zamień X na właściwą literę):

sudo parted /dev/sdX
unit MiB
mklabel gpt
print (to see the total size in MiB)
mkpart primary 1 2861022
quit

Jeśli rozmiar dysku jest mniejszy niż MiB mniejszy niż 2861022, dostosuj położenie końcowe.

Otóż ​​to. Następnie utwórz system plików, który chcesz na partycji.

Źródła i dodatkowe lektury

Dyski sektora 4K i Linux

Sprawdź błąd i zainstaluj dyski 4k w systemie Linux

Fora Ubuntu

Mitch
źródło
Dzięki za odpowiedź, ale tak naprawdę nie odpowiada na moje pytanie. Rozumiem, że jądro rozpoznaje rozmiar sektora dysku i że gparted też powinien to rozpoznać, ale zgłasza inaczej i jestem ciekawy, czy istnieje wyjaśnienie tego, czy to błąd, czy też zrobiłem coś złego .
qwazix
0

Dopóki ustawisz partycje na wielokrotności 4KB, nic ci nie będzie. W przeciwnym razie nie musisz robić nic specjalnego dla dysków z sektorami fizycznymi 4KB.

Stare oprogramowanie do partycjonowania dopasowało partycje do wielu sektorów 63x512B, co spowoduje pogorszenie wydajności, jeśli napęd ma sektory fizyczne 4KB, ponieważ jest to 31 i pół kilobajta, a NIE wielokrotność 4KB.

Praktycznie żadne oprogramowanie do partycjonowania dostępne teraz w Ubuntu nie będzie już tego robić (chyba że wyraźnie o to poprosisz). Większość domyślnie wyrówna się do wielokrotności 1MiB (sektory 2048 x 512B, czyli również sektory 256 x 4 KB).

Co by się stało, gdybyś go nie wyrównał?

Jeśli nie wyrównasz partycji do wielokrotności 4KB, najgorsze, co się stanie, to utrata wydajności (dość znacząca dla małych plików). Dyski z sektorami 4KB zwykle emulują sektory 512B w celu zapewnienia zgodności z istniejącymi systemami. Więc działają idealnie dobrze, jeśli traktujesz je jak dysk sektora 512B. Ale kiedy piszesz do pojedynczego obszaru 512B, przepisuje cały sektor 4KB.

Dlatego ze względów wydajnościowych ważne jest, aby klastry 4KB używane w systemie plików były wyrównane z sektorami 4KB na dysku, tak aby zapis w jednym klastrze nie powodował konieczności zapisania dwóch sektorów 4KB na dysku.

thomasrutter
źródło