Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Linux - rozszerzenie partycji LVM po sklonowaniu na większy dysk

19 Lis 2011 21:37 6414 8
  • Moderator Samochody
    Zrobiłem kopię 1:1 dysku 80GB na dysk 160GB. System Ubuntu Server 10.04LTE x64.
    Na dysku jest ok 264MB partycja BOOT (sda1), partycja rozszerzona (sda2) a w niej partycja LVM (sda5), na partycji LVM są dwa dyski logiczne - root i swap_1.

    Na razie jedyne co udało mi się zrobić to rozszerzyć partycję LVM do końca dysku, a zrobiłem to w fdisku, zdejmując kolejno partycję sda5 i sda2 a następnie tworząc w odwrotnej kolejności partycję rozszerzoną zaczynającą się w tym samym sektorze co stara sda2 i w niej partycję logiczną typu Linux LVM (0x8e) również zaczynającą się na tym samym sektorze. Po zapisaniu zmian i restarcie system wstał i wszystko działa więc wnioskuję, że operacja się udała... ale co dalej?

    Code:
    root@tzok-server:/home/tomek# fdisk -lu /dev/sda
    

    Dysk /dev/sda: 160.0 GB, bajtów: 160041885696
    głowic: 240, sektorów/ścieżkę: 63, cylindrów: 20673, w sumie sektorów: 312581808
    Jednostka = sektorów, czyli 1 * 512 = 512 bajtów
    Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
    Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
    Identyfikator dysku: 0x00098eb1

    Urządzenie Rozruch   Początek      Koniec   Bloków   ID  System
    /dev/sda1   *          63      498959      249448+  83  Linux
    /dev/sda2          498960   312581807   156041424    5  Rozszerzona
    /dev/sda5          499023   312581807   156041392+  8e  Linux LVM

    root@tzok-server:/home/tomek# vgdisplay
      --- Volume group ---
      VG Name               tzok-server
      System ID
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  3
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                2
      Open LV               2
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               74,32 GiB
      PE Size               4,00 MiB
      Total PE              19026
      Alloc PE / Size       19025 / 74,32 GiB
      Free  PE / Size       1 / 4,00 MiB
      VG UUID               GPzkH9-IzS4-7FY3-J3qx-CP0b-7GHD-jbzBAB

    root@tzok-server:/home/tomek# lvdisplay
      --- Logical volume ---
      LV Name                /dev/tzok-server/root
      VG Name                tzok-server
      LV UUID                ZOxt3B-sKD0-5Pn3-XStc-gG7w-T6sz-4tJRKK
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                71,46 GiB
      Current LE             18294
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           251:0

      --- Logical volume ---
      LV Name                /dev/tzok-server/swap_1
      VG Name                tzok-server
      LV UUID                rc6xA6-Qm8l-qwY3-vskV-cYGm-AdfN-naemxI
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                2,86 GiB
      Current LE             731
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           251:1


    ****

    Poradziłem sobie (wszystko przez SSH i na zamontowanym systemie plików)...

    Najpierw:
    Code:
    root@tzok-server:/home/tomek# pvresize /dev/sda5
    
    root@tzok-server:/home/tomek# swapoff -a
    root@tzok-server:/home/tomek# lvremove /dev/tzok-server/swap_1
    Do you really want to remove active logical volume swap_1? [y/n]: y
      Logical volume "swap_1" successfully removed
    root@tzok-server:/home/tomek# lvextend -L145G /dev/tzok-server/root
      Extending logical volume root to 145,00 GiB
      Logical volume root successfully resized

    Tutaj na nowo utworzyłem partycję swap_1 w /dev/tzok-server - zrobiłem to z poziomu Webmina, bo to jedno kliknięcie...
    Code:
    root@tzok-server:/home/tomek# mkswap /dev/tzok-server/swap_1
    
    mkswap: /dev/tzok-server/swap_1: uwaga: nie usunięto sektorów rozruchowych
            na całym dysku. Use -f to force.
    Tworzenie obszaru wymiany w wersji 1, rozmiar = 3993596 KiB
    brak etykiety, UUID=765499b2-534d-4b36-b060-73b9ec22697b
    root@tzok-server:/home/tomek# swapon /dev/tzok-server/swap_1
    root@tzok-server:/home/tomek# resize2fs /dev/tzok-server/root
    resize2fs 1.41.11 (14-Mar-2010)
    System plików /dev/tzok-server/root jest zamontowany pod /; wymagana zmiana rozmiaru w locie
    old desc_blocks = 5, new_desc_blocks = 10
    Wykonywanie zmiany rozmiaru w locie /dev/tzok-server/root na 38010880 (4k) bloków.
    System plików na /dev/tzok-server/root ma teraz 38010880 bloków.

    ...i rezultat końcowy:
    Code:
    root@tzok-server:/home/tomek# fdisk -lu /dev/sda
    

    Dysk /dev/sda: 160.0 GB, bajtów: 160041885696
    głowic: 240, sektorów/ścieżkę: 63, cylindrów: 20673, w sumie sektorów: 312581808
    Jednostka = sektorów, czyli 1 * 512 = 512 bajtów
    Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
    Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
    Identyfikator dysku: 0x00098eb1

    Urządzenie Rozruch   Początek      Koniec   Bloków   ID  System
    /dev/sda1   *          63      498959      249448+  83  Linux
    /dev/sda2          498960   312581807   156041424    5  Rozszerzona
    /dev/sda5          499023   312581807   156041392+  8e  Linux LVM
    root@tzok-server:/home/tomek# vgdisplay
      --- Volume group ---
      VG Name               tzok-server
      System ID
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  8
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                2
      Open LV               2
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               148,81 GiB
      PE Size               4,00 MiB
      Total PE              38095
      Alloc PE / Size       38095 / 148,81 GiB
      Free  PE / Size       0 / 0
      VG UUID               GPzkH9-IzS4-7FY3-J3qx-CP0b-7GHD-jbzBAB

    root@tzok-server:/home/tomek# lvdisplay
      --- Logical volume ---
      LV Name                /dev/tzok-server/root
      VG Name                tzok-server
      LV UUID                ZOxt3B-sKD0-5Pn3-XStc-gG7w-T6sz-4tJRKK
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                145,00 GiB
      Current LE             37120
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           251:0

      --- Logical volume ---
      LV Name                /dev/tzok-server/swap_1
      VG Name                tzok-server
      LV UUID                l3TNKW-x92H-3fPP-tzgN-iSjB-VYac-Xd1ZHB
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                3,81 GiB
      Current LE             975
      Segments               1
      Allocation             contiguous
      Read ahead sectors     auto
      - currently set to     256
      Block device           251:1

    Ale żeby to była prosta i intuicyjna operacja to nie powiem. Nie wiem czy usuwanie i ponowne tworzenie partycji SWAP było konieczne ale chciałem żeby przestrzeń obydwu partycji, a zwłaszcza SWAP, była ciągła.
  • Poziom 11  
    Jeszcze takie małe uzupełnienie do arta co może komuś się przydać:

    Tak jeżeli chodzi o zapytanie, to nie musiałeś usuwać swap'a. Wystarczyło go wyłączyć, a resize'a zrobić bardzo szybko: lvresize -l +100%FREE /dev/mapper/... i wielkość swapa by pozostała, a pozostały lvmik powiększył by się do maksymalnej możliwej wielkości zapełniając wolną przestrzeń ograniczoną przez wielkość partycji, którą to z resizowałeś. LVMy tym się charakteryzują, że można zarządzać nimi bez wyłączania kompa i w locie zmieniając rozmiar (taka ich idea).

    Dlatego lepszym rozwiązaniem było by użycie zamiast fdiska narzędzia do zmiany rozmiaru partycji w locie np. parted, a jeżeli już fdisk'a to jest taki myk, po którym nie trzeba restartować systemu np. uzywajac polecenia partprobe /dev/sda , a nastepnie podglądamy czy nastąpiły zmiany: cat /proc/partitions
    Powyższa metoda działa i nie raz z niej korzystałem na pracującym serwerze więc polecam.
    Jedynie tego numeru nie można zrobić na głównej systemowej (przynajmniej mi się nie udało).
    Gdyby z jakiegoś powodu nie zadziałało to można jeszcze spróbować poniższych:
    /sbin/blockdev --rereadpt /dev/sda
    lub
    sfdisk -R /dev/sda

    A i jeszcze jedno: Nie lepiej było pozbyć się rozszerzonej partycji i na podstawowych już jechać?
  • Moderator Samochody
    LVM w partycji rozszerzonej założył instalator Ubuntu, teraz już tego prosto nie zmienię. partycja logiczna ROOT to właśnie był "/".

    Przy opisywanej metodzie z wyłączeniem SWAPa i lvresize -l +100%FREE /dev/mapper/... partycja SWAP_1 została by fizycznie alokowana na końcu dysku, czy pozostała by na swoim miejscu a rozszerzona partycja ROOT byłaby nieciągła?

    Niezbyt szczęśliwie nazwałem to VG, da się to teraz jakoś zmienić przez sieć? Bo wiem że da się w runlevel-1 albo z LiveCD.
  • Poziom 11  
    Z poziomu lv'ek ciągłość jest zachowana, a oczywiście z poziomu dysku (partycji /dev/sda5) już ciągłości nie ma. Można to sprawdzić wpisując "lvdisplay -m" w grupie "Segments" mamy logiczne i fizyczne extenty. Te logiczne będa dla LVMki po kolei, natomiast fizyczne będą już z dziurą, którą to dziurę będzie wypełniał SWAP ;) Kiedyś widziałem skrypt odnośnie fragmentacji tego typu danych, ale nie miałem czasu na testy. Jednak czy jest potrzeba defragmentacji LVMek? Tutaj fragmentacja nie dojdzie do takiego poziomu, aby spowolnić pracę systemu no chyba, że tych lvm'ek tworzymy tak dużo i resizujemy non stop kolor ;)
    Jeszcze fajniejsza metoda na pozbycie się swap'a ala partycja i wrzucenia go jako plik - wygodniejsze rozwiązanie i wtedy możesz mieć 1 dużego lvm'a.

    Co do zmiany VG:
    Zrobiłem właśnie zmianę na testowym komie i poszło z powodzeniem - bez kombinacji i na systemie tak jak u Ciebie czyli pierwsza part. boot, druga part na caly dysk z wykorzystaniem 2 lvmow dla swap'a i /. UID VG pozostał bez zmiany więc bez problemu można korzystać z polecenia vgrename tzok-serwer nowa_nazwa.
    Wykonałem podczas pracy sys. Oczywiście trzeba też zmienić zapis w fstb i grub.cfg na nową nazwę, aby system chodził po restarcie.
    Po zmianie zrobiłem jeszcze zapis roznych danych na / i po restarcie wszystko sie zachowalo więc wygląda na to, że nawet można pracować na takim systemie, a przy okazji zrobić restart. Jednak na kluczowych serwerach bez uprzedniego backupu raczej bym tego nie robił. Nie wiadomo jak się zachowa inna dystrybucja.
    Zmianę przeprowadziłem na: Debianie 2.6.32-5-686
  • Poziom 35  
    Mam takie pytanie uzupełniające, po co właściwie było kopiować 1:1 (obraz), ja zawsze w tego typu operacjach zakładam sobie nowe partycje - takie jakie mam aktualnie widzimisię, nowe systemy plików, nowe proc, sys, nowy grub itp. a resztę lecę już normalnie plik po pliku - zapobiega to moim zdaniem fragmentacji (jeśli jakaś jest) systemu plików.
    Widzicie jakieś wady tego rozwiązania?

    Pomijając oczywiście wymóg zachowania "niedotykalności" obrazu (sąd, policja itp.) ale to tu nie potrzebne.
  • Poziom 11  
    nie obraz chyba nie byl tworzony przy tych czynnosciach, chyba ze czegos nie doczytalem
    ogolnie chodzilo o resize i przy wyzej wymienionych metodach mozna to wykonac zdalnie bez restartu systemu - z wyjatkiem zmiany VG, gdzie juz restart musi byc zrobiony dla samego pozadku i spokoju ducha ;)

    ale tak, przegranie na jeden dysk i na drugi czysty spowoduje, ze fragmentacji nie bedzie
  • Poziom 35  
    Kopia 1:1 to nie obraz jednego dysku na drugim? On to chyba skopiował sektor po sektorze, tylko nie wiem po co, bo mógł klasycznie plik po pliku - więcej zalet miałoby chyba takie rozwiązanie.
  • Moderator Samochody
    Serwer na którym to robiłem jest maszyną wyłącznie do testów nie ma na nim żadnych ważnych danych, chciałem "przy okazji" przećwiczyć zmianę rozmiarów LVM - może się przydać np. w przypadku gdy LVM jest na RAIDzie 5 i dołoży się dodatkowy dysk, tak więc rzeczywiście wykonałem posektorową kopię starego dysku.

    Co do zmiany nazwy VG na działającym systemie:
    Code:
    root@tzok-server:~# vgrename tzok-server vg0
    
      Volume group "tzok-server" still has active LVs


    Do zmiany VG nawet init 1 nie pomógł... udało się dopiero z poziomu Slax'a.

    Code:
    root@tzok-server:~# lvdisplay -m
    
      --- Logical volume ---
      LV Name                /dev/vg0/root
      VG Name                vg0
      LV UUID                ZOxt3B-sKD0-5Pn3-XStc-gG7w-T6sz-4tJRKK
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                145,00 GiB
      Current LE             37120
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           251:0

      --- Segments ---
      Logical extent 0 to 37119:
        Type                linear
        Physical volume     /dev/sda5
        Physical extents    0 to 37119


      --- Logical volume ---
      LV Name                /dev/vg0/swap_1
      VG Name                vg0
      LV UUID                l3TNKW-x92H-3fPP-tzgN-iSjB-VYac-Xd1ZHB
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                3,81 GiB
      Current LE             975
      Segments               1
      Allocation             contiguous
      Read ahead sectors     auto
      - currently set to     256
      Block device           251:1

      --- Segments ---
      Logical extent 0 to 974:
        Type                linear
        Physical volume     /dev/sda5
        Physical extents    37120 to 38094