Powiększanie instancji EC2 jest łatwe jak oddech (na przykład stwórz AMI, uruchom z niej instancję, a następnie zmień rozmiar pamięci).
Ale zmniejszenie go staje się trudniejsze. Chciałbym zmniejszyć wielkość woluminu katalogu głównego usługi Amazon Web Services (AWS) EC2 Elastic Block Store (EBS). W sieci jest kilka starych procedur wysokiego poziomu. Bardziej szczegółowa wersja, którą znalazłem, to roczna odpowiedź na pytanie StackOverflow: jak mogę zmniejszyć pojemność ebs , kroki mają dość wysoki poziom:
Utwórz nowy wolumin EBS o pożądanym rozmiarze (np. / Dev / xvdg)
Uruchom instancję i dołącz do niej oba woluminy EBS
Sprawdź system plików (oryginalnego woluminu głównego): (np.) E2fsck -f / dev / xvda1
Maksymalnie zmniejsz oryginalny wolumin główny: (np. Ext2 / 3/4) resize2fs -M -p / dev / xvda1
Skopiuj dane za pomocą dd:
Wybierz rozmiar porcji (lubię 16 MB)
Oblicz liczbę porcji (używając liczby bloków z wyjścia resize2fs): bloki * 4 / (chunk_size_in_mb * 1024) - zaokrąglij nieco w górę dla bezpieczeństwa
Skopiuj dane: (np.) Dd if = / dev / xvda1 ibs = 16M z = / dev / xvdg obs = 16M liczba = 80
Zmień rozmiar systemu plików na nowym (mniejszym) woluminie EBS: (np.) Resize2fs -p / dev / xvdg
Sprawdź system plików (oryginalnego woluminu głównego): (np. E2fsck -f / dev / xvdg
Odłącz nowy wolumin główny EBS i dołącz go do oryginalnej instancji
Nie jestem w stanie znaleźć szczegółowego rozwiązania „jak to zrobić”.
Mój główny wolumin EBS jest dołączony do instancji HVM Ubuntu.
Każda pomoc byłaby bardzo mile widziana.
źródło
Odpowiedzi:
W konsoli AWS:
Zatrzymaj instancję, której rozmiar chcesz zmienić
Utwórz migawkę aktywnego woluminu, a następnie utwórz wolumin „SSD ogólnego zastosowania” z tej migawki.
Utwórz kolejny wolumin „SSD ogólnego zastosowania” o żądanym rozmiarze.
Dołącz te 3 woluminy do instancji jako:
Uruchom instancję.
Zaloguj się do nowej instancji za pośrednictwem SSH.
utwórz te nowe katalogi:
mkdir /source /target
mkfs.ext4 /dev/xvdf
mount -t ext4 /dev/xvdf /target
e2label /dev/xvdf /
mount -t ext4 /dev/xvdg /source
rsync -ax /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 /target
umount /source
Powrót do konsoli AWS: Zatrzymaj instancję i odłącz wszystkie woluminy.
Dołącz wolumin o nowym rozmiarze do instancji jako: „/ dev / sda1”
Uruchom instancję i powinna się uruchomić.
KROK 10 JEST WAŻNY : Oznacz nowy wolumin nazwą „e2label”, jak wspomniano powyżej, w przeciwnym razie wystąpi problem z uruchomieniem aws, ale nie przejdzie sprawdzania połączenia.
źródło
Ż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
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
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:
Teraz przejdź do kroku 11.
mount -t ext4 /dev/xvdf1 /target
e2label /dev/xvdf1 /
mount -t ext4 /dev/xvdg1 /source
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 /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.
źródło
/dev/sda1
zamiast/dev/xvda
@RubenSerrate?Poniższe kroki działały dla mnie
Krok 1. Utwórz migawkę głównego wolumenu Ebs i utwórz nowy wolumin z migawki (nazwijmy to woluminem-kopiuj)
Krok 2. Utwórz nową instancję z woluminem głównym ebs o pożądanym rozmiarze. (nazwijmy to woluminem o zmienionym rozmiarze) Ten wolumin ebs będzie miał odpowiednią partycję do rozruchu. (Utworzenie nowego wolumenu EBS od podstaw nie działało dla mnie)
Krok 3. Dołącz zmianę wielkości woluminu i kopię woluminu do instancji.
Krok 4. Sformatuj zmianę rozmiaru woluminu.
Uwaga: upewnij się, że wolumin partycji
/dev/xvdf1
nie został wprowadzony/dev/xvdf
Krok 5. Zamontuj zmianę rozmiaru woluminu i kopiowanie woluminu mkdir / mnt / copy mkdir / mnt / resize
Krok 6. Skopiuj pliki
Krok 7. Upewnij się, że e2label jest taki sam jak wolumin główny
Krok 8. Zaktualizuj grub.conf na kopii woluminu, aby pasował do nowego woluminu udid
Wyszukaj i zamień uudid w /boot/grub/grub.cfg
Krok 9. Odmontuj woluminy
Krok 10. Dołącz nową zmienioną objętość ebs do instancji / dev / sda1
źródło
blkid
bezsudo
zwracania wyników z pamięci podręcznej bez ich sprawdzania. Będzie więc wyglądać, jakby UUID się nie zmienił.Oto alternatywne podejście;
Podłącz i podłącz stary wolumin EBS do działającej instancji EC2. Jeśli chcesz skopiować wolumin rozruchowy, najlepiej zrobić to w innej instancji, ze starym woluminem zamontowanym jako dane, a nie z woluminem używanym jako system na żywo.
Utwórz nowy wolumin EBS o pożądanym rozmiarze.
Dołącz nowy wolumin do instancji i (ostrożnie) sformatuj w nim nowy system plików (np. Używając mkfs). Zamontuj to.
Skopiuj zawartość starego systemu plików ze starego woluminu do nowego woluminu:
Odmontuj nowy wolumin i odłącz go od instancji.
Jeśli kopiujesz główny system plików, to:
Utwórz migawkę EBS nowego woluminu.
Zarejestruj migawkę jako nowy AMI.
źródło
Poniższy artykuł to dobry i prosty samouczek na temat zmniejszania wielkości woluminu EBS. Posiada łatwy w obsłudze przewodnik krok po kroku i zrzuty ekranu.
Zmniejsz rozmiar woluminu EBS w instancji EC2
źródło