Jak mogę napisać skrypt do utworzenia pojedynczej partycji, która wykorzystuje całe urządzenie?

9

W szczególności używam tego do partycjonowania i montowania woluminów EBS w instancjach Amazon EC2, ale tak naprawdę powinno to mieć ogólne zastosowanie do inicjowania każdego nowego dysku.

Jak brzmi pytanie, chcę utworzyć skrypt dla jednej partycji podstawowej, która wykorzystuje całą dostępną przestrzeń na danym urządzeniu. Nie będę wiedział z góry, jak duże jest to urządzenie i może być bardzo duże (tj. Kilka TB).

Przy badaniu tego wydaje się, że partedjest to najlepsze polecenie do użycia w skryptach. Myślę, że coś w tym stylu parted /dev/sdf mkpart primary 0 ENDjest tym, czego chcę, ale trudno mi znaleźć elegancki sposób na określenie, jaki powinien być KONIEC. Czy ktoś wie, jak to łatwo zrobić?

Mike Deck
źródło

Odpowiedzi:

11

Możesz to zrobić w następujący sposób:

parted /dev/sdf --script -- mkpart primary 0 -1
Gilles Quenot
źródło
5

Wystąpiły problemy, gdy próbowałem użyć drugiej odpowiedzi. To, co zadziałało, to użycie metody procentowej w ten sposób:

$ parted /dev/sdf --script -- mkpart primary 0% 100%

Wystąpił problem partedi sposób, w jaki radzi sobie z wyrównaniem partycji. Te 2 artykuły nieco omawiają ten problem:

Matematyka opisana w tych artykułach po prostu nie działała w moich scenariuszach. Pochowany w jednym z komentarzy do drugiego, link, który ktoś zasugerował przy użyciu wartości procentowych i to zadziałało.

Nawiasem mówiąc, zwykle musisz też oznaczyć HDD. Aby to zrobić za pomocą interfejsu CLI za pomocą parted:

$ parted /dev/sde --script -- mklabel msdos

-lub-

$ parted /dev/sde --script -- mklabel gpt

W zależności od dysku twardego.

slm
źródło
gdiskwyrównuje poprawnie. Moim zdaniem partedjest bałagan. Robi za dużo - a rzeczy, które robi, są tylko luźno powiązane. Dziwne, jak tworzy razem systemy plików i tabele partycji - lokalizacje dysków dla zapisywanych danych nie przypominają tego samego sąsiedztwa. Dopiero zacząłem rozumieć, jak działają dyski, kiedy zdałem sobie sprawę, że tablica partycji to mała mapa, która znajduje się na jej czele, i mówi osowi, gdzie może szukać systemu plików, jeśli chce. Kiedy to kliknęło, zrozumiałem superbloki, megamana i wszystko inne. W każdym razie lubię tak myśleć.
mikeserv
Dzięki, strona narzędzi w tej przestrzeni zawsze była dla mnie bałaganem. Ciągle mieszam sfdisk, fdisk, cfdisk, parted itp. Spróbuję fdisk i zobaczę, czy to łatwiejsze. Głównie szuka łatwego do uruchomienia z opcji cli do włączenia do skryptów.
slm
Zasadniczo [gf]disknie dyskryminują swojego standardowego poziomu - nie obchodzi ich, czy pochodzi od termInal. Tak więc każdą sekwencję poleceń, którą wprowadzasz interaktywnie, aby uzyskać to, czego potrzebujesz, można bezpośrednio przetłumaczyć na printfskrypt. Wszystkie nowe wiersze w mojej odpowiedzi to tylko (or press enter for default)opcje. To całkiem proste. Kiedy gram w / w nich, po prostu idę do, /tmpa fallocate -l1g imgnastępnie używam nowego /tmp/imgpliku jako dysku - nie obchodzi ich to. Chcą tylko napisać tablicę partycji. Jeśli zrobisz to samo, spójrz na to, co dzieje się w / strings -1 imgczasami.
mikeserv
Ale kłamałem już wcześniej - megaman pozostaje dla mnie tajemniczy. Może zawsze będzie.
mikeserv
1
z parted /dev/sdf --script -- mkpart primary 0 -1dostałem ostrzeżenie o braku wyrównania dla najlepszej wydajności. Z procentami poszło dobrze
nachoparker 30.09.17
2

Możesz to zrobić...

printf 'n\n\n\n\n\nw\n' | fdisk /dev/disk

... dla typu msdos. Praktycznie to samo działa dla gpt ...

printf 'n\n\n\n\n\nw\ny\n' | gdisk /dev/disk

Możesz oznaczyć dysk podczas tworzenia systemu plików.

mikeserv
źródło