Korzystajac intensywnie z wirtualnej maszyny na serwerze XEN (choć i nie tylko) zachodzi czasem konieczność powiększenia przestrzeni dyskowej do przechowywania danych. Pojawia się wówczas problem który rozwiazać można na kilka sposobów, jednak najwygodniej byłoby "rozciagnać" istniejaca partycję do porzadanego rozmiaru z zachowaniem danych i jeszcze w czasie pracy serwera. Taki właśnie przypadek mnie interesuje najbardziej ;) Przy serwerze wirtualnym z odpowiednim zapleczem sprzętowym jest to kwestia czysto konfiguracyjna w założeniu, iż instalujac system profilaktycznie wybraliśmy opcję partycji z mechanizmem LVM.
W celu rozszerzenia partycji serwera wirtualnego musimy korzystajac z aplikacji XenCenter zatrzymać maszynę przeznaczona do rozbudowy, a następnie przydzielić jej dodatkowe zasoby dyskowe. Wszelkie opcje znajduja się w zakładce STORAGE wybranej maszyny wirtualnej pod przyciskiem PROPERTIES. Rozmiar przestrzeni dyskowej ustalamy po wybraniu z lewej kolumny opcji SIZE AND LOCATION.
W kolejnym kroku logujemy się na konto ROOT'a i uruchamiamy nasza maszynę wirtualna, oraz przechodzimy do terminala.
Wywołujemy program partycjonujacy:
fdisk /dev/xvda
Uruchomi się nam program i poprosi zachęcajaca linia COMMAND o wybranie opcji która nas interesuje. Wybieramy opcję "p" która wyświetli nam stan aktualny przestrzeni dyskowej.
Przystępujemy do ściagania kolejno istniejacych partycji w celu zwolnienia miejsca i ustanowienia nowych alokacji. Wciskamy "d" a następnie poproszeni o podanie partycji wciskamy "5" chcac wybrać xvda5. Pojawi się komunikat o skasowaniu partycji. Dla powyższego przypadku powtarzamy tę czynność ściagajac partycję rozszerzona xvda2. Wciskamy "d" a następnie "2".
Partycji xvda1 nie musimy ruszać, gdyż interesuje nas jedynie powierzchnia od sektora 499712.
Miejsce zostało zwolnione, tak więc można przejść do tworzenia nowych partycji.
Wciskamy "n" chcac utworzyć nowa partycję. Następnie z listy wybierzemy "e" oznaczajace partycję rozszerzona, gdyż chcemy zachować układ jaki dotychczas istniał. Na ekranie pojawi się komunikat z zapytaniem od którego sektora chcemy rozpoczać. Należy pamiętać, aby partycje rozpoczynały się od tych samych miejsc co poprzednio, dzięki czemu nie uszkodzimy żadnych danych. Jako zakończenie partycji wybieramy to co nam proponuje program, czyli cała wolna przestrzeń.
W tym miejscu chciałbym dodać spostrzeżenie praktyczne, gdyż pierwotnie dla powyższego przykładu sektory proponowane przez program nie pokrywały się ze stanem pierwotnym, więc wpisałem ręcznie dla xvda2 sektor startowy 501758 co spowodowało, iż partycja xvda5 przeskakiwała o jakieś 500 sektorów dalej. Nie dało się ustawić jej wcześniej. Kombinujac zdałem się w kolejnej próbie na automat nie wpisujac nic ręcznie dla partycji xvda2. Rozmiar został ustalony, a poczatek był inny niż wcześniej, natomiast przy późniejszym dodawaniu partycji xvda5 już w standardzie widniał sektor startowy dla tej alokacji.
Partycję xvda5 odtwarzamy w analogiczny sposób, lecz w tym wypadku z powodu posiadania już partycji rozszerzonej program zasugeruje nam możliwość wyboru partycji logicznej przypisanej do opcji "l" która to też wybieramy. Numer partycji "5" zostanie przypisany z automatu. Program zapyta ponownie o poczatkowy sektor partycji i tu należy sprawdzić, czy pokrywa się on ze stanem poprzednim. W moim odczuciu to miejsce jest już raczej wyjatkowo istotne. W moim przypadku program sam zasugerował prawidłowy poczatek, tak więc nic ręcznie nie zostało zmieniane.
Na zakończenie ustawiania fizycznej wielkości partycji właczamy mechanizm LVM dla nowej partycji xvda5 wciskajac kolejno literkę "t", następnie wybierajac wolumen "5", oraz wpisujac ID w postaci HEX Kodu o wartości "8e".
Operacje kończymy zapisujac wszystkie zmiany poprzez użycie opcji "w". Otrzymamy na monitorze informację o tym, iż wszelkie zmiany zostana wdrożone po kolejnym restarcie maszyny.
Oczywiście słuchamy poleceń i optymistycznie dokonujemy restartu ;)
OK - fizycznie partycja została rozszerzona, lecz pozostał temat przypisania wolnej przestrzeni wolumenu fizycznego do mechanizmu LVM. Dla sprawdzenia sytuacji wpisujemy:
pvdisplay
Wartość "Free PE" informuje nas, iż mamy na dysku wolne miejsce do przypisania.
Przydzielamy wolne miejsce do partycji xvda5 komenda:
pvresize /dev/xvda5
Dla sprawdzenia wyników ponownie uruchamiamy polecenie:
pvdisplay
Wolna przestrzeń została rozlokowana.
W kolejnym kroku rozszerzamy wolumen logiczny mechanizmu LVM. Operację zaczynamy tradycyjnie od sprawdzenia aktualnej sytuacji na dysku wpisujac komendę:
df -h /
Wyświetlona zostanie informacja o wielkości i wykorzystaniu przestrzeni dyskowej.
Partycje logiczna rozszerzamy o cała możliwa przestrzeń
lvresize /dev/s2-vg/root -L +100%FREE
Oczywiście można zamiast 100% wolnego miejsca rozszerzyć partycję o konkretny wymiar np. +5G
Dla sprawdzenia, czy powyższe działania przyniosły efekt sprawdzamy ponownie wielkość i wykorzystanie przestrzeni dyskowej poleceniem "df". Jak można zaobserwować ze 187G zrobiło się 286G, czyli wszystko jest w najlepszym porzadku.
Ostatnim krokiem jaki należy poczynić jest rozwinięcie systemu pliku co wykonujemy następujaca komenda:
resize2fs /dev/s2-vg/root
Powyższy przykład jest dedykowany systemowi ext3, a z informacji jakie znajduja się na forach można wywnioskować, iż z innymi systemami plików moga występować problemy.
Pappara pam ;)