2012-05-09 12 views
6

Przeczytałem rozdzieloneman page, ale nie można znaleźć żadnej dokumentacji na temat prawidłowych parametrów. Próbuję podzielić partycję USB CompactFlash z określonymi rozmiarami partycji (bez względu na rozmiar CF). Ale chciałbym się upewnić, że moje ustawienie jest idealnie poprawne i optymalne.Poprawne argumenty dla parted

Na przykład, kiedy używać następujących poleceń:

parted -s -a optimal $DEV mkpart primary ext3 1 1600 
parted -s -a optimal $DEV mkpart primary ext3 1600 3200 
parted -s -a optimal $DEV mkpart primary ext3 3200 3600 

to nie jest jasne, czy pierwszy start partycja powinna być 1 lub 0? Jedyną wskazówką, że mogę, że powinien zacząć od 1 zamiast zera kiedy biegnę:

parted /dev/sdc align-check optimal 1 

Które mówi mi, że jest wyrównana kiedy zaczynając od 1 i nie wyrównane, gdy zaczyna się od 0. Ale kiedy zacznij od 1 i wykonuję "print", początek to 1049kB ... czy to normalne? Kiedy zrzucam partycje wydruku utworzone przez inne narzędzia, widzę, że zaczynają się od 32kB. Jeśli użyję początku 0, wydrukuje on początek 512 kB. Co jest poprawne, nie wiem!

Dodatkowo, widziałem wiele przykładów w sieci osób używających ich wartości początkowej dla drugiej i trzeciej partycji jako wartości końcowej poprzedniej partycji (tj. Wartości 1600 i 3200). Czy przypuszczalnie mamy nakładkę lub przyrost o 1? Strony man nie mówią nic na ten temat. I widziałem niektóre strony internetowe, na których mówią, że błąd początkowy ma tę samą wartość, co ostatni koniec.

Kiedy używam opcji "-a optymalny", nie ma to nawet wpływu na partycję. Niewykorzystanie flagi wyrównania wydaje się dawać taki sam wynik. Po co to jest? Czy jest coś, czego mi brakuje?

Naprawdę chciałbym się rozłączyć byłoby o wiele bardziej inteligentne i nie wymagałoby początku, ale raczej mogłoby to wydedukować. W rzeczywistości wiele osób potrzebuje tej właśnie funkcji, więc nie jestem jedyną dziwną kulką z tą potrzebą. Mam nadzieję, że jakiś geek zauważy tę potrzebę i faktycznie doda ją jako funkcję.

Zauważ, że używam parted w skryptach automatycznej kompilacji, dlatego używam flagi "-s".

Jeśli ktoś może mnie o tym poinformować, bardzo bym to docenił ... z góry dzięki!

+0

To pytanie byłoby odpowiednie na stronie superużytkownika StackExchange. – BeowulfNode42

Odpowiedz

17

Wydaje mi się, że zadałeś tu kilka interesujących pytań, szkoda, że ​​nikt wcześniej na nie nie odpowiedział, więc spróbuję to zrobić.


It's not clear if the first partition start should be 1 or 0?

Pierwsze uruchomienie partycji musi być 1, ponieważ pierwsze bajty dysk zawiera Master Boot Record i strukturę niektórych etykiet dyskowych, takich jak MS-DOS. Więc jeśli użyjesz wartości 0 jako początku pierwszej partycji, libparted pozostawi kilka bajtów na początku dysku, aby pozwolić na tę zawartość, umieszczając początek partycji natychmiast po pierwszym sektorze.


the start is at 1049kB... is this normal?

To normalne. Aby to wyjaśnić, najpierw musisz wiedzieć, że dla libparted, kilobajt nie jest równy 1024 bajtom, zamiast tego jest równy 1000 bajtów.

KB = kilobajtów = 1000Bytes
KiB = KibiByte = 1024Bytes

Więcej informacji:
http://en.wikipedia.org/wiki/Kilobyte
http://www.gnu.org/software/parted/manual/html_node/unit.html

Przegroda przesunięcie w KB (kilobajtów), a jej wartość jest przybliżeniem , jeśli zmienisz jednostkę na bajty:

parted /dev/sdf unit b print 

zobaczysz prawdziwą wartość: 1048576B to jest 1MiB (1048576B ~ = 1049KB), dokładnie to, co chciałeś.


I see that they start at 32kB

Tak, partycja rozpoczyna się 32KB ponieważ narzędzie używasz to chyba za stary, a używasz dysku z 512 bajtów rozmiar sektora. Rzeczywistym początkowym przesunięciem partycji prawdopodobnie będzie 32256, który odpowiada sektorowi 63. Przed laty narzędzia do partycjonowania umieszczają początek pierwszej partycji w 63 sektorze, aby dopasować ją do starej geometrii CHS. To jest zbyt długi, aby wyjaśnić, ale polecam zapoznanie się linki do bardziej szczegółowych informacji:

https://superuser.com/questions/352572/why-does-the-partition-start-on-sector-2048-instead-of-63 http://lwn.net/Articles/377895/


If I use a start of 0, it prints a start of 512kB

myślę, że drukuje zaczynają się 512B, a nie KB , czy się mylę?
Na dysku o sektorach 512-bajtowych pierwszy sektor kończy się z przesunięciem 511, więc tak jak powiedziałem powyżej, pierwsza partycja rozpoczyna się po pierwszym sektorze.


Are we suppose to have an overlap or increment by 1?

mogę zmienić jednostkę do bajtach, zobaczysz rzeczywiste rozmieszczenie przegród i można sprawdzić, że nie zachodzą na siebie.


What purpose is this for? Is there something I'm missing?

To dlatego, że domyślnie rozstał współpracuje z MIB. Po wpisaniu:

parted -s -a optimal $DEV mkpart primary ext3 1 1600 

Pytasz parted, aby utworzyć partycję między przesunięciami odpowiadającymi MiB # 1 i # 1600. Przesunięcia wyrównane do MiB są zawsze wyrównane w celu uzyskania najlepszej wydajności, więc nie trzeba określać -a optimal. Jeśli zmienić jednostkę na bajty można utworzyć niezaangażowanych podziału:

parted $DEV unit b mkpart primary 1000000 160MB 
parted $DEV align-check optimal 1 

to być pokazany błąd: The resulting partition is not properly aligned for best performance.

Tak, staramy się zrobić to samo z -a none opcji:

parted -a none $DEV unit b mkpart primary 1000000 160MB 

Teraz nie ma błędu, to jest cel tej opcji.


I really wish parted would be a lot more intelligent and not require a start, but rather could deduce it itself.

myślę, że funkcja będzie realizowany przez każde narzędzie, które wykorzystuje libparted, ale myślę, że nie jest to konieczne w bibliotece ... ale kto wie? może jakiś libparted programista nasłuchuje ... czy próbowałeś wysłać raport o błędzie? [email protected]