Jak zmienić rozmiar / powiększyć / rozwinąć partycję ext4 inną niż LVM

20

Przeszukałem już fora, ale nie mogłem znaleźć odpowiedniej odpowiedzi:

Mam Ubuntu Server 10.04 jako host KVM i system gościa, który również działa w wersji 10.04. System hosta używa LVM i istnieją trzy woluminy logiczne, które są dostarczane gościowi jako wirtualne urządzenia blokowe - jeden dla /, jeden dla / home i jeden dla wymiany. Gość został podzielony na partycje bez LVM.

Już zwiększyłem wolumin logiczny w systemie hosta - gość z powodzeniem widzi większy dysk wirtualny. Jednak ten dysk wirtualny zawiera jedną „dobrą starą” partycję, która wciąż ma stary mały rozmiar.

Dane wyjściowe fdisk -l to

me@produktion:/$ LC_ALL=en_US sudo fdisk -l

Disk /dev/vda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c8ce7

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        3917    31455232   83  Linux

Disk /dev/vdb: 2147 MB, 2147483648 bytes
244 heads, 47 sectors/track, 365 cylinders
Units = cylinders of 11468 * 512 = 5871616 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000f2bf7

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1         366     2095104   82  Linux swap / Solaris
Partition 1 has different physical/logical beginnings (non-Linux?):
     phys=(0, 32, 33) logical=(0, 43, 28)
Partition 1 has different physical/logical endings:
     phys=(260, 243, 47) logical=(365, 136, 44)

Disk /dev/vdc: 225.5 GB, 225485783040 bytes
255 heads, 63 sectors/track, 27413 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027f25

   Device Boot      Start         End      Blocks   Id  System
/dev/vdc1               1        9138    73398272   83  Linux

Dane wyjściowe drukowania parted all są

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  32.2GB  32.2GB  primary  ext4         boot


Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  2146MB  2145MB  primary  linux-swap(v1)


Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

Chcę po prostu powiększyć lub zmienić rozmiar partycji / dev / vdc1, aby wykorzystała całą przestrzeń zapewnioną przez wirtualne urządzenie blokowe / dev / vdc. Problem polega na tym, że kiedy próbuję to zrobić z rozstaniem, narzeka:

(parted) select /dev/vdc                                                  
Using /dev/vdc
(parted) print                                                            
Model: Virtio Block Device (virtblk)
Disk /dev/vdc: 225GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  75.2GB  75.2GB  primary  ext4

(parted) resize 1                                                         
WARNING: you are attempting to use parted to operate on (resize) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Start?  [1049kB]?                                                         
End?  [75.2GB]? 224GB                                                     
Error: File system has an incompatible feature enabled.  Compatible features are has_journal, dir_index, filetype, sparse_super and large_file.  Use tune2fs
or debugfs to remove features.

Więc co mogę zrobić? To bezgłowy system produkcyjny. Jaki jest bezpieczny sposób na powiększenie tej partycji? MOGĘ jednak odmontować - więc to nie jest problem.

Edycja: Cfdisk pokazał małe wolne miejsce niepodzielone na partycje, następnie partycję (oznaczoną jako „boot” i Linux / ext3), a następnie resztę niepodzielonego na partycje miejsca. Po usunięciu partycji i utworzeniu jej ponownie za pomocą cfdisk - cfdisk pokazuje jeden duży obszar partycjonowany (co byłoby dla mnie w porządku) i jako typ systemu plików tylko „Linux”

Resize2fs zwraca ten błąd resize2fs 1.41.11 (14-Mar-2010) resize2fs: Bad magic number in super-block while trying to open /dev/vdc1 Couldn't find valid filesystem superblock

Mischa
źródło

Odpowiedzi:

18

Ta strona wskazuje sposób na odmontowanie, usunięcie, ponowne utworzenie partycji o pożądanym rozmiarze i użycie resize2fs do rozszerzenia partycji. Strona podręcznika resize2fs zgadza się.

Wiem, że „usuń partycję” brzmi przerażająco, ale w ogóle nie zmienia danych. To po prostu zmienia rzecz, która odwołuje się do kontenera. Tak długo, jak NIE, mkfs.ext4nic ci nie będzie.

Punkt początkowy partycji musi być taki sam, jak był, w przeciwnym razie system operacyjny nie będzie wiedział, jak interpretować jego przyczyny. Punkt końcowy może następnie być dalej, aby utworzyć większą partycję.

Myślę, że błąd w komentarzu jest związany z przesunięciem punktu początkowego. Musisz go uruchomić dokładnie w tym samym momencie, w którym został uruchomiony. Punkt końcowy może się poruszać.

Kredyt dla psusi za sugerowanie fdisk i cfdisk zamiast potwierdzający problem punkt początkowy.

RobotHumans
źródło
Okej, usunąłem partycję za pomocą cfdisk i utworzyłem nową. Ale wtedy nie mogłem go zmienić, a także nie mogę go już zamontować.
Mischa
resize2fs 1.41.11 (14-mar-2010) resize2fs: Zła liczba magiczna w superbloku podczas próby otwarcia / dev / vdc1 Nie można znaleźć prawidłowego superbloku systemu plików.
Mischa,
1
cfdisk pokazał małe wolne miejsce niepodzielone na partycje, następnie partycję (oznaczoną jako „boot” i Linux / ext3), a następnie resztę niepodzielonego na partycje miejsca. Po usunięciu partycji i utworzeniu jej ponownie za pomocą cfdisk - cfdisk pokazuje jeden duży obszar partycjonowany (co byłoby dla mnie w porządku) i jako typ systemu plików tylko „Linux”.
Mischa,
8
Musisz ponownie utworzyć partycję, aby zaczynała się dokładnie w tym samym sektorze, co pierwotnie. Nie możesz tego zrobić za pomocą cfdisk. Użyj fdisk lub parted i przełącz je w tryb sektorowy.
psusi
1
czy jest jakiś sposób na zmianę rozmiaru partycji ext4 w taki sposób, aby początek partycji został przeniesiony? Ponieważ mam wolne miejsce przed bieżącą partycją ext4, a nie z tyłu ... na szczęście mam więcej wolnego miejsca niż partycja jest duża, więc myślę, że mógłbym wykonać następujące czynności: skopiować całą partycję na przód, usunąć ten z tyłu, a następnie zmienić rozmiar przeniesionego do pełnego rozmiaru? ale w tej chwili wydaje mi się to okropnym włamaniem ...
kodowanie
6

Przykład:

/ dev / sdb2 jest partycją / boot. Ma 100 MB, co jest dość małe. Aby zwiększyć tę partycję ext4 na działającym systemie wykonaj (jako root lub sudo):

umount / boot

parted / dev / sdb

(rozdzielony) wydruk

Model: ATA Patriot Torqx 2 (scsi)
Dysk / dev / sdb: 32,0 GB
Rozmiar sektora (logiczny / fizyczny): 512B / 512B
Tabela partycji: msdos

Numer Początkowy Rozmiar końcowy Typ System plików Flagi
1 1049kB 12,9 GB 12,9 GB typ podstawowy = 83
2 12,9 GB 13,0 GB 107 MB typ podstawowy ext4 = 83

(rozstał się) rm 2

(rozstał się) mkpart

Rodzaj partycji? podstawowy / rozszerzony? podstawowy
typ systemu plików? [ext2]?
Początek? 12.9GB
Koniec? 13,4 GB

(rozstał się) wyjdź

resize2fs / dev / sdb2

resize2fs 1.42.6 (21 września 2012 r.)
System plików w / dev / sdb2 jest zamontowany na / boot; wymagane zmiany rozmiaru on-line
old_desc_blocks = 1, new_desc_blocks = 2
System plików na / dev / sdb2 ma teraz 498688 bloków.

gotowy!

Wszystkie dane pozostają na miejscu. / boot jest gotowy do użycia i ma 472 MB pojemności (parted nie jest tak bezpieczny z rozmiarami, przeczytaj instrukcję, aby dowiedzieć się dlaczego)

Wszystkie dane były archiwizowane wcześniej, ale tylko dla zachowania ostrożności. Polecam zrobić to samo.

Użyj następującego polecenia, aby znaleźć proces zatrzymujący odmontowywanie / boot, jeśli się nie powiedzie:

lsof / boot

Powodzenia!

użytkownik157258
źródło
2
Musisz użyć jednostek sektorów, a nie GB, aby mieć pewność, że znajdziesz go dokładnie w tym samym miejscu.
psusi
0

Jeśli spróbujesz usunąć i odtworzyć partycję, kiedy partycja zaczęła się poniżej 2048 roku, możesz mieć problemy, tak jak ja resize2fs.

Couldn't find valid filesystem superblock.

Z wersji fdisk 2.17.2 fdisk, fdisk IIUC wymusza rozpoczęcie od 2048 r., Aby upewnić się, że dysk twardy jest „właściwie wyrównany”. Jeśli więc twoja oryginalna partycja rozpoczęła się przed 2048 rokiem, czeka Cię trudna jazda, próbując odtworzyć partycję.

Najlepszym rozwiązaniem jest rsync podczas klonowania dysku .

hendry
źródło