Jak zmienić rozmiar głównej partycji LVM w Fedorze bez LiveCD lub restartu

24

Mam maszynę wirtualną, której ostatnio obraz dysku został zwiększony z 20 GB do 50 GB, i fdisk -lsprawdza, czy maszyna wirtualna widzi ten nowy rozmiar. Teraz muszę zmienić rozmiar głównej partycji LVM, aby wypełnić dodatkowe 30 GB.

Znalazłem kilka artykułów na temat zmiany rozmiaru LVM, ale kilka z nich dotyczy zmiany rozmiaru partycji głównej, wszystkie twierdzą, że musisz uruchomić komputer z LiveCD. Czy istnieje sposób, aby to zrobić bez wyłączania serwera? Serwer jest krytyczny, dlatego chciałbym zminimalizować przestoje.

Edycja: Dane wyjściowe fdisk -l:

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00097c90

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

Edycja: Jak zmienić rozmiar partycji fizycznej? fdisk widzi wolne miejsce, ale nie wiem, jak zmienić rozmiar podstawowej partycji LVM, aby z niej skorzystać. Próbowałem uruchomić się na LiveCD i użyć resizepolecenia parted'd , ale wszystko, co mi to daje, to błąd „Nie można wykryć systemu plików”. Znalazłem ten przewodnik , który mówi, że muszę usunąć partycję i utworzyć nowy o odpowiednim rozmiarze, ale to brzmi bardzo niebezpiecznie.

Ostateczna edycja: resizePolecenie Parted dziwnie nie może zmienić rozmiaru partycji LVM. Domyśl. Zamiast tego po prostu usunąłem starą partycję i utworzyłem nową z nowym zakresem, zgodnie z powyższym linkiem, i która prawidłowo zmieniła rozmiar partycji LVM. Następnie zastosowałem się do poniższych wskazówek, aby zmienić rozmiar woluminów i systemów plików wewnątrz partycji LVM.

Cerin
źródło
Pokaż nam wynik działania fdisk - l. Zmieniłeś rozmiar partycji, a nie tylko wolumin, prawda?
Zoredache,
@Zoredache, dodałem ten wynik do pytania.
Cerin,

Odpowiedzi:

32

Możesz rozwinąć wolumin logiczny online. Musisz go odmontować, aby go zmniejszyć (co wymaga trybu LiveCD / trybu ratunkowego).

  1. pvresize /dev/sda2(zakładając, że twoja partycja LVM to sda2. Wymień w razie potrzeby.)
  2. lvextend /dev/mapper/root -l+100%FREE (lub jakkolwiek nazywany jest główny wolumin logiczny).
  3. resize2fs /dev/mapper/root (przy założeniu ext2 / 3/4)
Aaron Copley
źródło
1
Osobiście wolę lvextend -L [size][unit] /dev/group/volume, choćby dlatego, że mogę zwiększyć wolumen o 10 gigabajtów, określając-L +10G
Hubert Kario
Tak, ale OP zapytał; Now I need to resize my root LVM partition to fill the extra 30GB.(Który ma zwiększyć logiczny wolumen o dostępne wolne miejsce.)
Aaron Copley
„Nowy rozmiar (1076 zakresów) odpowiada istniejącemu rozmiarowi (1076 zakresów)”
Cerin
7
Pomyślałem, że ta sztuczka jest fajna: jeśli dodasz -ropcję lvextend, zaczepi się, fsadmaby zmienić rozmiar FS. To spowodowałoby, że trzeci krok stałby się zbędny.
Jodie C
3
Zauważ, że ta odpowiedź zakłada, że ​​partycja została już rozszerzona, aby wypełnić wolne miejsce, a tylko woluminy logiczne muszą zostać zaktualizowane. pvresize /dev/sda2Komenda nic nie robi aż partycji / dev / sda2 został zmieniony z rozstał lub fdisk. Musiałem zmienić rozmiar mojego z fdisk, ponieważ parted w moim systemie nie wyświetlał lub nie miał polecenia zmiany rozmiaru. Zmiana rozmiaru Fdisk obejmuje usuwanie i ponowne tworzenie partycji.
Jason
2

Czy Twój system naprawdę zmienił się z 20 na 50 GB? To wydaje się naprawdę dziwne, ponieważ twoje urządzenie sda2 ma ~ 40 GB, lv_root pokazuje 36 GB, a swap pokazuje 6 GB.

Twój wyjście fdisk -lpokazuje całkowitą sektorów /dev/sdaIs 104857600. Ostatnim wykorzystywanym sektorem /dev/sda2jest 83886079. Mówi mi to, że nie dostosowałeś rozmiaru partycji, aby wykorzystać całe dostępne miejsce na dysku. Polecenie pvresize nie zmienia tablicy partycji. Najpierw musisz zmienić tablicę partycji.

Zoredache
źródło
1

Zainstaluj gparted. Uruchom jako root (użyj zdalnego ssh -X lub x2go). Wybierz partycję. Powinien pokazywać wolne miejsce za końcem (po prawej). Jeśli tak się nie stanie, musisz ponownie uruchomić maszynę wirtualną, aby zobaczyć nowy rozmiar urządzenia wirtualnego. To powinno być minimalne przestoje z systemd.

Kliknij prawym przyciskiem myszy i wybierz Zmień rozmiar. Przeciągnij koniec na koniec dysku. Upewnij się, że nie dotykasz początku. gparted jest w stanie przenieść partycję podczas zmiany rozmiaru, ale to oczywiście zniszczy działający system. Ale przeniesienie końca jest w porządku. Przejrzyj oczekującą operację, którą wykona gparted, aby upewnić się, że rozszerzasz i nie przenosisz partycji. Kliknij Zastosuj. gparted zmieni partycję na dysku, a następnie wyda jądro ioctl, aby ponownie odczytać tablicę partycji, zmieniając również rozmiar urządzenia na żywo. Następnie, ponieważ widzi, że jest to PV LVM, uruchamia dla ciebie pvresize. Wyjdź z gparted, a vgs pokazuje teraz twoje nowe miejsce.

Słyszałem pogłoski, że rozstanie może zrobić to wszystko bez narzutu GUI, ale nigdy nie byłem w stanie zrozumieć voodoo. Parted musi być jednym z najgorszych interfejsów CLI, jakie kiedykolwiek próbowałem użyć.

Nie używaj fdisk, musisz usunąć i ponownie przypisać partycję, aby zmienić rozmiar, a domyślnie wyczyści podpis LVM2 podczas zapisu. Myślę, że widziałem „zaawansowaną” opcję wyłączenia tego destrukcyjnego zachowania, ale nigdy go nie testowałem.

Możesz także spróbować cfdisk (curses fdisk). Może mieć możliwą zmianę rozmiaru partycji. Łatwo jest uruchomić pvresize ręcznie i istnieje polecenie, aby jądro ponownie odczytało tablicę partycji. Ale musiałbym przetestować, aby upewnić się, że nie czyści podpisu LVM jak fdisk.

Stuart Gathman
źródło
0

Jeśli wolumin fizyczny LVM znajduje się na partycji, nie, nie można zmienić jego rozmiaru bez ponownego uruchomienia.

Możesz edytować tablicę partycji na dysku, ale Linux odmówi jej użycia do momentu ponownego uruchomienia.

Jeśli używasz XFS, przełącz się resize2fsna xfs_growfs.

Możesz wyświetlić używane PV i LV w grupie głośności za pomocą pvsi lvs.

PV na dysku surowym

pvresize /dev/sda
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>

PV na partycji

Najpierw trzeba zmienić rozmiar partycji, stosowanie parted, fdisklub podobnego narzędzia do tego. Pamiętaj, że te narzędzia edytują tylko opis, w którym znajdują się partycje, nie przenoszą danych. Innymi słowy, łatwo można rozszerzyć tylko ostatnią partycję na dysku. Następnie uruchom ponownie komputer, a następnie powinieneś być w stanie poinformować LVM, że ma dostępną dodatkową przestrzeń:

pvresize /dev/sda2
lvextend /dev/<volume-group>/<lv-name> -L +<size>G
resize2fs /dev/<volume-group>/<lv-name>
Hubert Kario
źródło
Korzystając z Gparted Live CD, sudo pvresize /dev/sda2zgłasza „zmiana rozmiaru 1 woluminu fizycznego”, ale sudo lvextend /dev/mapper/VolGroup-lv_root -L +10Gkończy się błędem „niewystarczająca ilość wolnego miejsca: potrzeba 320 zakresów, ale dostępne jest tylko 0”. sudo fdisk -lraporty, że mam 54G dostępne, a sudo pvdisplayraporty tylko 40G są w użyciu. Dlaczego Lvextend zawodzi?
Cerin,
1
@Cerin, przegapiłeś pierwszą instrukcję Huberta dla PV na partycji. Najpierw musisz zmienić rozmiar partycji, użyć do tego parted, fdisk lub podobnego narzędzia .
Zoredache,
@Zoredache, Ok, to właściwie całe moje pytanie. Nie wiem jak to zrobić. Właśnie włączyłem LiveCD z Gparted i próbowałem użyć resizepolecenia parted, aby zwiększyć rozmiar partycji podstawowej, ale pojawił się błąd „Nie można wykryć systemu plików”. Jak zmienić rozmiar partycji za pomocą parted lub fdisk?
Cerin,
@Cerin: wyszukaj SF lub zadaj kolejne pytanie
Hubert Kario
0

Rozważę sprawdzenie ssm (system-storage-manager), jeśli jest dostępny w twojej dystrybucji.

Sprawdź to, aby uzyskać więcej informacji: /unix//a/293173

Wydaje się, że ssm ułatwia zmianę wielkości woluminów logicznych bez konieczności robienia wszystkiego samemu.

Po ponownym uruchomieniu systemu operacyjnego i zalogowaniu się jako root, mogłem użyć go do rozszerzenia partycji domowej. (W sumie musiałem zrestartować się dwa razy, ale w końcu zadziałało i mam teraz dodatkowe 50G w mojej / domowej wersji).

Bryan Cole
źródło
0

Po połączeniu 25 poradników w końcu mam takie rozwiązanie. Nie wymaga płyty CD na żywo, jest całkowicie w ruchu.

Krok 1. sformatuj partycję z parted (bez GUI). W tym przykładzie maksymalny rozmiar dysku został zwiększony z 8BG do 32 GB w wirtualnym pudełku.

    # parted
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
       ....
    (parted) mkpart primary ext2 8590 100%
       ....
       Number   Begin   End     Size     Type     FileSystem       Flags
         1      1049kB  1075MB  1074MB   primary  ext4             boot
         2      1075MB  8590MB  7515MB   primary                   lvm
         3      8590MB  34,4GB  25,8GB   primary  ext2             lba
       ....
    (parted) set 3 lvm on
    (parted) set 3 lba off
    (parted) print
       ....
         3      8590MB  34,4GB  25,8GB   primary  ext2             lvm
       ....
    (parted) quit

Krok 2. Utwórz wolumin fizyczny na podstawie nowej partycji

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

Krok 3. Dodaj wolumin fizyczny do grupy woluminów. W zwykłej instalacji serwera fedora 28 grupa woluminów nosi nazwę fedora.

# vgextend fedora /dev/sda3
  Volume group "fedora" successfully extended

Krok 4. Dodaj dostępne miejsce w grupie woluminów do woluminu logicznego. W zwykłej instalacji serwera Fedora 28 wolumin logiczny nazywa się root.

# lvextend -l+100%FREE /dev/fedora/root
  Size of logical volume fedora/root changed from <6,20 GiB (1586 extents) to 30,19 GiB (7729 extents).
  Logical volume fedora/root successfully resized.

Krok 5. Powiedz systemowi plików w woluminie logicznym, aby wykorzystał dodatkową przestrzeń. W Fedorze system plików to XFS.

Uwaga! xfs_growfs używa punktu podłączenia do identyfikacji systemu plików, a nie nazwy systemu plików znalezionego w danych wyjściowych df !!!!!!!

Polecenie „xfs_growfs / dev / mapper / fedora-root” powie ci, że / dev / mapper / fedora-root nie jest zamontowanym systemem plików XFS. Jeśli używasz innego systemu plików, zapoznaj się z https://www.tldp.org/HOWTO/LVM-HOWTO/extendlv.html

# xfs_growfs /
    data blocks changed from 1624064 to 7914496

Krok 6. Ciesz się

# df
FileSystem               1K-blocks      Used   Available used% Mounted on
....
/dev/mapper/fedora-root   31647744   6492840    25154904  21% /
/dev/sda1                   999320    125576      804932  14% /boot
....
Lieven Vanlerberghe
źródło
-1

Wypróbuj testdisk

sudo dnf zainstaluj testdisk

sudo testdisk

Wystarczy ustawić plik dziennika, a następnie wyświetli listę partycji, - wybierz nośnik / partycję - następnie wpisz - i przeanalizuj - szybkie wyszukiwanie - wybierz i zapisz

Salil Kothadia
źródło