Utwórz partycję wyrównaną za pomocą parted


66

Ja partycjonowanie dysku twardego non-SSD z parted bo chcę tabelę partycji GPT.

parted /dev/sda mklabel gpt

Teraz próbuję utworzyć partycje poprawnie wyrównane, więc używam następującego polecenia, aby wiedzieć, gdzie zaczyna się pierwszy sektor:

parted /dev/sda unit s p free

Disk /dev/sda: 488397168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End         Size        File system  Name      Flags
        34s    488397134s  488397101s  Free Space

Widzimy, że zaczyna się w sektorze 34 (jest to ustawienie domyślne, gdy używana jest ta tabela partycji).

Aby utworzyć pierwszą partycję, próbowałem:

parted /dev/sda mkpart primary 63s 127s

aby wyrównać go do sektora 64, ponieważ jest wielokrotnością liczby 8, ale pokazuje:

Ostrzeżenie: wynikowa partycja nie jest odpowiednio wyrównana w celu uzyskania najlepszej wydajności.

Rozmiary sektora logicznego i fizycznego na moim dysku twardym wynoszą 512 bajtów:

cat /sys/block/sda/queue/physical_block_size
512

cat /sys/block/sda/queue/logical_block_size 
512

Jak utworzyć poprawnie wyrównane partycje? Co ja robię źle?


Czy na pewno numery sektorów zaczynają się od zera?
Burton Samograd,

1
Próbowałem też parted /dev/sda mkpart primary 64s 128s(w przypadku, gdy zaczyna się od 1), ale zwraca to samo ostrzeżenie.
Marc

Wygląda na to, że istnieje polecenie sprawdzające, czy wartość jest wyrównana: gnu.org/software/parted/manual/html_node/align_002dcheck.html . Może spróbuj tego z różnymi wartościami za pomocą pętli for i wypluj wartości, które są w porządku?
Burton Samograd,

Burton, nie wiedziałem o tym poleceniu, ale nie można go użyć, dopóki nie zostanie utworzona partycja.
Marc

Przepraszam za to, że nie przeczytałem wystarczająco dokładnie opisu.
Burton Samograd,

Odpowiedzi:


68

Aby wyrównać partycję parted, możesz użyć --alignopcji. Prawidłowe typy wyrównania to:

  • none - Użyj minimalnego wyrównania dozwolonego przez typ dysku.
  • cylinder - Wyrównaj partycje do cylindrów.
  • minimum - Użyj minimalnego wyrównania podanego w informacjach o topologii dysku. To i wartość opt wykorzystają informacje o układzie dostarczone przez dysk, aby wyrównać adresy tablicy partycji logicznych do rzeczywistych fizycznych bloków na dyskach. Wartość minimalna to minimalne wyrównanie potrzebne do prawidłowego wyrównania partycji do bloków fizycznych, co pozwala uniknąć obniżenia wydajności.
  • optymalne Użyj optymalnego wyrównania podanego w informacjach o topologii dysku. Wyrównuje się to do wielokrotności wielkości bloku fizycznego w sposób gwarantujący optymalną wydajność.

Inną przydatną wskazówką jest to, że możesz ustawić rozmiar w procentach, aby go wyrównać. Zacznij od 0% i zakończ na 100%. Na przykład:

parted -a optimal /dev/sda mkpart primary 0% 4096MB


5
Czy polecenie nie powinno się kończyć 0% 100%? Skąd 4096MBpochodzi?
njahnke

4
Wartość 4096MB stosowany jest tu tylko przykładem, aby pokazać zdolność mieszania% i konkretnych liczb size
lik

3
Tylko uwaga, musiałem zawrzeć '0%'cudzysłowy dla mojej powłoki, aby poprawnie wykonać polecenie.
Adam Eberlin

@lik Czy masz sugestie dotyczące tego postu unix.stackexchange.com/questions/248939/...
AnkurTank

1
Niezależnie od powyższego, zauważyłem, że parted printużywa kB jako 1000 bajtów ...
jiggunjer

9

Moim rozwiązaniem było użycie gdisk, który domyślnie może automatycznie wyrównywać partycje w sektorach 2048 (1024 KB), chociaż można to zmienić w menu eksperckim.


7

Z Arch Wiki :

Podczas tworzenia partycji parted może ostrzec o niewłaściwym wyrównaniu partycji, ale nie wskazuje na prawidłowe wyrównanie. Na przykład:

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

Ostrzeżenie oznacza, że ​​partycja startnie jest wyrównana.

Wejdź, Ignoreaby przejść dalej , wydrukuj tablicę partycji w sektorach, aby zobaczyć, gdzie się ona zaczyna, i usuń / odtwórz partycję z sektorem początkowym zaokrąglonym w górę do rosnących mocy 2, aż ostrzeżenie się zatrzyma. Jako jeden przykład, na dysku flash z sektorami 512B, Parted chciał, aby partycje zaczęły się od sektorów, które były wielokrotnością 2048, co oznacza wyrównanie 1 MB.

Dodatkowo tuż powyżej tej sekcji stwierdzają, że bardziej precyzyjne jednostki binarne IEC KiB, MiB, GiB itp. Są dopuszczalne dla jednostek, a także mniej precyzyjne KB, MB, GB itp.

Osobiście moim dokładnym poleceniem, które to rozwiązało, było:

mkpart hd ext4 1024KiB 8470MB

Nie narzeka, myślę, że chciał 1 MB wyrównania.


Nie, próbowałem 1048576 KiB, bez kości.
Behrooz

5

Drobna korekta. Jak rozumiem, dyski GPT nie mają już typów partycji, wszystkie są „podstawowe”. Polecenie „mkpart primary” nie tworzy partycji podstawowej, jak to ma miejsce na dyskach msdos, po prostu tworzy partycję o nazwie primary. Możesz równie dobrze użyć polecenia

(parted) mkpart Parted-FUN! 21476MB 4000787MB
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start    End        Size       File system  Name         Flags
 1      1.05MB   17181MB    17180MB    ext4         raid-var
 2      17181MB  21476MB    4295MB                  raid-swap
 3      21476MB  4000786MB  3979310MB               Parted-FUN!

Może to powodować zamieszanie, jeśli spróbujesz utworzyć partycje logiczne, wiem, że to dla mnie zrobiło.

(parted) mkpart extended 21476MB 4000787MB
(parted) mkpart logical 21476MB 1000787MB
Warning: You requested a partition from 21476MB to 1000787MB.
The closest location we can manage is 4000786MB to 4000786MB.
Is this still acceptable to you?
Yes/No? Yes
(parted) print
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdf: 4000787MB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start      End        Size       File system  Name       Flags
 1      1.05MB     17181MB    17180MB    ext4         raid-var
 2      17181MB    21476MB    4295MB                  raid-swap
 3      21476MB    4000786MB  3979310MB               extended
 4      4000786MB  4000786MB  0.00MB                  logical

Nie można utworzyć partycji o nazwie „logiczna” wewnątrz partycji o nazwie „rozszerzona”.


dziękuję, właśnie zmarnowałem sporo czasu dzięki tym narzędziom złym cli, a ty zmusiłeś mnie do zorientowania się, co się dzieje.
Florian Heigl

5

Akceptowane odpowiedź przez @lik pokazuje w jaki sposób można określić preferowany wyrównanie. Jednak parted zawsze używa tego wyrównania do sprawdzania wynikowej partycji, ale nie zawsze tworzy partycje z tym wyrównaniem.

TL; DR: Gdy 1MiB jest optymalnym wyrównaniem, określenie 0% będzie działać na dyskach o wielkości 200 MB i większych. W przypadku mniejszych dysków lub większego wyrównania określenie 0G może działać, gdy 0% nie. Zobacz poniżej, dlaczego.

Parted stara się spełnić ograniczenia wyrównania podczas tworzenia partycji, ale nie będzie też zbytnio odbierać od żądanych wartości. To, co liczy się jako „za dużo”, zależy od tego, jak określiłeś pozycje.

Po określeniu pozycji początkowej (lub końcowej) komendy mkpart generuje ona wewnętrznie zakres dopuszczalnych wartości. Ten zakres jest wyśrodkowany na podanej wartości i rozszerza się równo po obu stronach o połowę użytej wielkości jednostki (to czytam z kodu , komentarze mówią o jednym pełnym rozmiarze jednostki na obu końcach).

Na przykład, gdy podasz „10M”, spróbuje użyć dowolnej pozycji między 9,5M a 10,5M. To samo dotyczy wartości procentowych, więc jeśli podasz 0%, użyje dowolnej wartości z przedziału od 0% do 0,5% (oczywiście nie będzie ujemne).

Jednym wyjątkiem jest to, że w przypadku użycia potęgi dwóch jednostek (takich jak KiB dla 1024, w przeciwieństwie do K dla 1000), parted zakłada, że ​​próbujesz określić dokładną pozycję i bierze pod uwagę tylko dokładnie określoną wartość.

Ponieważ optymalne wyrównanie zwykle wydaje się być wyrównane 1MiB, jednostki K i M często nie mają wystarczającej przestrzeni do osiągnięcia optymalnego wyrównania. Określenie pozycji w G powinno mieć dużo miejsca, ale% jest zwykle również w porządku.

Dlatego właśnie 0% zwykle działa, choć nawet to ma ograniczenia.


Czy mógłbyś podsumować praktyczny TLDR swojej odpowiedzi: co dokładnie powinno być lepiej zrobione w inny sposób niż zaakceptowana odpowiedź?
yurkennis

Dobra sugestia, dodałem TL; DR. W praktyce myślę, że 0% będzie działać na wszystkich, ale naprawdę małych dyskach, ale moja odpowiedź dodaje trochę tła na temat tego, jak dokładnie działa.
Matthijs Kooijman
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.