Jak rozszerzyć partycję za pomocą LVM oraz zawartego woluminu fizycznego i woluminu logicznego?


33

Na moim dysku SSD o pojemności 240 GB miałem na początku dwie partycje, jedna zawierająca wolumin logiczny z Linux Mint, a druga zawierała partycję NTFS do współdzielenia z Windows. Teraz usunąłem partycję NTFS i chcę rozszerzyć moją grupę woluminów logicznych o wykorzystanie zwolnionego miejsca na dysku.

Jak rozszerzyć grupę woluminów , mój wolumin logiczny zawierający / home i system plików (ext4) w / home? Czy można to zrobić online?

PS: Tak, wiem, że muszę wykonać kopię zapasową moich danych :)

/dev/sdb/  (240GB)
    linuxvg  (160GB) should use 100% of the disk space
        swap
        root
        home (ext4, 128GB) should be extended to use the remaining space

wyjście sudo vgdisplay:

  --- Volume group ---
  VG Name               linuxvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               160,00 GiB
  PE Size               4,00 MiB
  Total PE              40959
  Alloc PE / Size       40959 / 160,00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               ...

  --- Logical volume ---
  LV Path                /dev/linuxvg/swap
  LV Name                swap
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:32 +0200
  LV Status              available
  # open                 2
  LV Size                8,00 GiB
  Current LE             2048
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/linuxvg/root
  LV Name                root
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:43 +0200
  LV Status              available
  # open                 1
  LV Size                24,00 GiB
  Current LE             6144
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

  --- Logical volume ---
  LV Path                /dev/linuxvg/home
  LV Name                home
  VG Name                linuxvg
  LV UUID                ...
  LV Write Access        read/write
  LV Creation host, time mint, 2013-08-06 22:48:57 +0200
  LV Status              available
  # open                 1
  LV Size                128,00 GiB
  Current LE             32767
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

  --- Physical volumes ---
  PV Name               /dev/sdb1     
  PV UUID               ...
  PV Status             allocatable
  Total PE / Free PE    40959 / 0

wyjście sudo fdisk -l:

Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 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

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1   468862127   234431063+  ee  GPT

Disk /dev/mapper/linuxvg-swap: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 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/linuxvg-root: 25.8 GB, 25769803776 bytes
255 heads, 63 sectors/track, 3133 cylinders, total 50331648 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/linuxvg-home: 137.4 GB, 137434759168 bytes
255 heads, 63 sectors/track, 16708 cylinders, total 268427264 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

2
Cóż, prostym sposobem byłoby po prostu utworzenie partycji NTFS i użycie jej vgextendzamiast całkowitego usuwania partycji. Jeśli zamiast tego powiększysz istniejącą partycję PV, prawdopodobnie będziesz musiał zrestartować komputer, ponieważ Linux odmawia ponownego odczytu tablicy partycji, gdy dysk jest używany. Praca w sieci jest niezręczna. - Pokaż swoją aktualną tablicę partycji.
frostschutz

W razie potrzeby mogę zrestartować komputer.
klingt.net

Odpowiedzi:


44

Możesz to zrobić dość prosto. Trochę zaskoczony, że nie ma na to odpowiedzi.

Możesz wykonać cały ten proces podczas pracy na systemie plików, którego rozmiar chcesz zmienić (tak, jest bezpieczny i w pełni obsługiwany). Nie ma potrzeby ratunkowych płyt CD lub alternatywnych systemów operacyjnych.

  1. Zmień rozmiar partycji (ponownie możesz to zrobić przy uruchomionym systemie). GParted jest łatwy w użyciu i obsługuje zmianę rozmiaru.
    Możesz także użyć narzędzia niższego poziomu, takiego jak fdisk. Ale musisz usunąć partycję i ponownie ją utworzyć. Upewnij się przy tym, że nowa partycja zaczyna się dokładnie w tym samym miejscu.
  2. Restart. Ponieważ tabela partycji została zmodyfikowana w działającym systemie, nie będzie obowiązywać do momentu ponownego uruchomienia.
  3. Uruchom, pvresize /dev/sdXYaby LVM podniósł nowe miejsce.
  4. Zmień rozmiar woluminu logicznego za pomocą lvextend. Jeśli chcesz użyć całość, lvextend -r -l +100%FREE /dev/VGNAME/LVNAME. -rBędzie zmiana rozmiaru systemu plików, jak również.
    Chociaż zawsze odradzam korzystanie z całej grupy woluminów. Nigdy nie wiesz, czego będziesz potrzebować w przyszłości. Zawsze możesz rozwinąć później, nie możesz się zmniejszyć.

3
Chciałbym zaakceptować twoją odpowiedź, ale nie działałem tak, jak sugerowałeś, ponieważ GParted nie może zmienić rozmiaru partycji głównej w działającym systemie (przynajmniej w moim przypadku).
klingt.net,

@HalosGhost Cofnąłem twoją edycję. partprobe -snie robi tego, co myślisz. Jądro nie wybierze rozmiaru używanej partycji. partprobe -sdziała tylko wtedy, gdy partycja była używana podczas zmiany rozmiaru (więc kiedy fdisk powiadomił jądro, że nie powiodło się), ale już nie jest.
Patrick,

@Patrick, nie dodałem pomysłu na to; „Poprawiłem” edycję, umieszczając polecenie w backticks (wojna o kod ucieka przed płacami!).
HalosGhost,

Przepraszam, przeczytaj nazwę niewłaściwego wydarzenia historii. @ Qetesh, który dotyczy Ciebie :-)
Patrick

1
Możliwe jest całkowite zrestartowanie systemu za pomocą „partx -u” dla kroku 2, aby poinformować jądro, aby zaktualizowało rozmiar partycji: działa nawet na aktywnych partycjach i można to sprawdzić, sprawdzając /sys/.../sdXY/size przed i po.
AB

11

Żadna z odpowiedzi nie oddaje potęgi LVM.

(Jest to oparte na komentarzu @frostchutz do powyższego pytania).

Zdobądźmy fakty:

  • OP ma dwie partycje, sdb1 i sdb2 to wolumin fizyczny dla LVM.
  • sdb1 jest teraz NTFS, musimy dać to miejsce homewoluminowi logicznemu w linuxvggrupie woluminów.

Kroki LVM w „pragmatyczny sposób”:

  • utwórz wolumin fizyczny na sdb1: pvcreate /dev/sdb1
  • dodaj sdb1 do linuxvg:vgextend linuxvg /dev/sdb1
  • rozszerz wolumin logiczny homeo całą wolną przestrzeń:lvextend -l +100%FREE /dev/linuxvg/home
  • przedłużyć ext4 fs: resize2f /dev/linuxvg/home

LVM pozwala na wysoki poziom pośrednictwa. Wolumin logiczny znajduje się w grupie woluminów, która może używać kilku dysków.

strona główna -> linuxvg -> (sdb1, sdb2, sdc1)

http://tldp.org/HOWTO/LVM-HOWTO/createvgs.html


10

Pytanie zostało rozwiązane po przeczytaniu tego postu na blogu. Napiszę rozwiązanie w krótkiej formie:

  • uruchom z płyty CD na żywo za pomocą
  • użyj gdisk(jeśli korzystasz z GPT), w przeciwnym razie możesz użyć starego dobregofdisk
  • zanotuj ustawienia partycji, w moim przypadku gdisk -l /dev/sdb
  • usuń partycję za pomocą
  • utwórz nową partycję z dokładnie takim samym wyrównaniem jak poprzednia (w moim przykładzie zaczynając od bloku 2048)
  • napisz nową tablicę partycji
  • uruchom, partprobe -saby odświeżyć tablicę partycji bez ponownego uruchamiania
  • zmień rozmiar woluminu fizycznego za pomocą pvresize /dev/sdb1lub gdziekolwiek znajduje się twój pv (użyj, pvsaby ustalić, czy nie wiesz)
  • teraz zmień rozmiar woluminu logicznego za pomocą lvextend -l +100%FREE /dev/file/of/your/lv, w moim przypadkusudo lvextend -l +100%FREE /dev/linuxvg/home
  • zmień rozmiar systemu plików sudo resize2fs /dev/linuxvg/home
  • najpierw sprawdź spójność sudo e2fsck -f /dev/linuxvg/home
  • cieszyć się :)

W rzeczywistości możesz wyciąć około połowy tych kroków i zrobić to przy jednym ponownym uruchomieniu.
Patrick

GParted odmówił zmiany rozmiaru partycji, ponieważ została ona zablokowana (ten symbol klucza).
klingt.net

4

Kilka świetnych odpowiedzi już.

Jeśli używasz XFS, użyj polecenia

xfs_growfs /mountpoint

zamiast resize2fs. Możesz to zrobić, gdy ten punkt montowania jest aktywny, na przykład jeśli utworzyłeś partycję root i nie musisz później ponownie uruchamiać systemu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.