Żadne z pozostałych rozwiązań nie będzie działać, jeśli wolumin będzie używany jako urządzenie root (bootowalne).
Na nowo utworzonym dysku brakuje partycji rozruchowej, więc aby instancja mogła używać go jako woluminu głównego, musiałby mieć zainstalowany GRUB i niektóre flagi poprawnie ustawione.
Moje (na dzień dzisiejszy działające ) rozwiązanie zmniejszania woluminu głównego to:
Tło: Mamy instancję A, której wolumin główny chcemy zmniejszyć. Nazwijmy ten tom VA. Chcemy zmniejszyć VA z 30 GB, powiedzmy 10 GB
- Utwórz nową instancję ec2, B, z tym samym systemem operacyjnym co instancja A. Jako pamięć wybierz wolumin tego samego typu co VA, ale o wielkości 10 GB. (lub inny docelowy rozmiar). Mamy teraz instancję B, która używa tego nowego woluminu (nazwijmy go VB) jako woluminu głównego.
- Po uruchomieniu nowej instancji (B). Zatrzymaj go i odłącz wolumin główny (VB).
UWAGA: Poniższe kroki pochodzą głównie z rozwiązania @bill:
Zatrzymaj instancję, której rozmiar chcesz zmienić (A).
Utwórz migawkę woluminu VA, a następnie utwórz wolumin „SSD ogólnego zastosowania” z tej migawki. Ten tom nazwiemy VASNAP.
Zakręć nową instancją w amazon Linux, nazwiemy ją instancją C. Po prostu wykorzystamy tę instancję do skopiowania zawartości VASNAP do VB. Prawdopodobnie moglibyśmy również użyć instancji A do wykonania tych kroków, ale wolę to zrobić na niezależnej maszynie.
Dołącz następujące woluminy do instancji C. / dev / xvdf dla VB. / dev / xvdg dla VASNAP.
Uruchom ponownie instancję C.
Zaloguj się do instancji C przez SSH.
Utwórz nowe katalogi:
mkdir /source /target
- Sformatuj główną partycję VB za pomocą systemu plików ext4:
mkfs.ext4 /dev/xvdf1
Jeśli nie otrzymasz żadnych błędów, przejdź do kroku 11. W przeciwnym razie, jeśli nie masz /dev/xvdf1
, musisz utworzyć partycję, wykonując następujące czynności i-vii:
i) Jeśli /dev/xvdf1
z jakiegoś powodu nie istnieje, musisz go utworzyć. Najpierw wpisz:
sudo fdisk /dev/xvdf
.
ii) Wyczyść dysk, wprowadzając:
wipefs
iii) Utwórz nową partycję, wprowadzając:
n
iv) Enter, p
aby utworzyć partycję podstawową
v) Naciskaj Enter, aby przejść do ustawień domyślnych.
vi) Kiedy ponownie poprosi o polecenie, wprowadź, w
aby zapisać zmiany i wyjść.
vii) Sprawdź, czy masz /dev/xvdf1
partycję, wykonując:
lsblk
Powinieneś zobaczyć coś takiego:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
Teraz przejdź do kroku 11.
- Podłącz go do tego katalogu:
mount -t ext4 /dev/xvdf1 /target
- Jest to bardzo ważne, system plików potrzebuje e2label dla Linuksa, aby go rozpoznać i uruchomić, użyj „e2label / dev / xvda1” na aktywnej instancji, aby zobaczyć, co to powinno być, w tym przypadku etykieta to: „/”
e2label /dev/xvdf1 /
- Zamontuj VASNAP na / source:
mount -t ext4 /dev/xvdg1 /source
- Skopiuj zawartość:
rsync -vaxSHAX /source/ /target
Uwaga: nie ma „/” po „/ cel”. Ponadto może występować kilka błędów dotyczących dowiązań symbolicznych i attrów, ale zmiana rozmiaru nadal była udana
- Umount VB:
umount /target
Powrót do konsoli AWS: Odłącz VB od instancji C, a także odepnij VA od A.
Dołącz wolumin o nowym rozmiarze (VB) do instancji jako: „/ dev / xvda”
Wystąpienie rozruchowe A, teraz urządzenie root ma 10 GB :)
Usuń zarówno instancje B i C, a także wszystkie woluminy oprócz VB, który jest teraz woluminem głównym instancji A.