Dysk EC2 nie ma wielkości woluminu EBS

18

Mam instancję EC2, dla której utworzyłem wolumin EBS o pojemności 500 GB. Niestety, instancja EC2 pokazuje tylko 8 GB dostępnych.

Mam tylko jeden dysk, co jest słuszne.

[root@ip-10-244-134-250 ~]# ls -la /dev/x*
brw-rw---- 1 root disk 202, 1 Aug  7 08:54 /dev/xvda1

Ale ten dysk ma tylko 8 GB

[root@ip-10-244-134-250 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            8.0G  1.3G  6.7G  16% /
tmpfs                 3.7G     0  3.7G   0% /dev/shm

Ale zarówno fdisk, jak i / proc / partitions mają prawidłowy rozmiar

[root@ip-10-244-134-250 ~]# fdisk -l

Disk /dev/xvda1: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 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: 0x00000000

Disk /dev/xvda1 doesn't contain a valid partition table

[root@ip-10-244-134-250 ~]# cat /proc/partitions 
major minor  #blocks  name

 202        1  524288000 xvda1

Każda pomoc będzie bardzo mile widziana, dzięki.

chrześcijanin
źródło

Odpowiedzi:

34

Jeśli głównym systemem plików jest ext3 lub ext4, uruchom:

sudo resize2fs /dev/xvda1

Jeśli głównym systemem plików jest xfs (mniej powszechny), uruchom:

sudo xfs_growfs /

Możesz pominąć „sudo”, jeśli jesteś zalogowany jako root.

Te polecenia należy uruchamiać, gdy system jest uruchomiony, a system plików jest podłączony.

W przypadku woluminów EBS standardem nie jest tablica partycji. Wolumin EBS jest ogólnie sformatowany jako system plików w całości bez partycji.

Eric Hammond
źródło
2
Drażni mnie, gdy ludzie głosują na ciebie bez wyjaśnienia. W każdym razie działało to pięknie. Dziękuję bardzo!
Christian
1
/ ja wzrusza ramionami i żyje dalej :-) Cieszę się, że mogę pomóc. Oto kilka powiązanych artykułów, które napisałem: alestic.com/2009/12/ec2-ebs-boot-resize alestic.com/2010/02/ec2-resize-running-ebs-root
Eric Hammond
2
Zauważ, że pakiet inicjujący chmurę zawarty w AMI Ubuntu automatycznie uruchamia resize2fs podczas rozruchu. Dziwię się, że nie ma to w Amazon Linux, ponieważ używają one również chmurowej inicjacji.
Eric Hammond,
4
Mam ten sam problem, a po uruchomieniu polecenia brzmi: System plików ma już 2096896 bloków. Nic do roboty! To wciąż 8 GB!
Neo
12

W odpowiedziach tutaj wydaje się, że brakuje kilku kroków przed zmianą wielkości specjalnie dla osób, które zmieniają wielkość woluminu EBS. Jeśli użyłeś migawki do utworzenia EBS lub z niektórymi AMI, będziesz musiał rozszerzyć dysk (xvda), rozszerzyć partycję (xvda1), a następnie rozszerzyć system plików (/).

Jeśli czytam to poprawnie, twój dysk wygląda następująco:

/dev/xvda
|__/dev/xvda1__|______________ Free space______________|

Musi wyglądać tak:

/dev/xvda
|______________________/dev/xvda1______________________|

Następnie bieganie resize2fspowiększy się w tę nową przestrzeń xvda1, używając fdisk, możemy zwiększyć rozmiar bloku, usuwając go i tworząc go ponownie, a partycję można uruchomić. wszystko, czego wymaga to ponowne uruchomienie. W większości przypadków nie powinno to wpłynąć na twoje dane, jeśli używasz tego samego cylindra początkowego, ale zwróć uwagę, że jakikolwiek błąd w odtworzeniu partycji spowoduje utratę wszystkich danych i / lub serwer nie uruchomi się ponownie. Poleciłbym to zrobić jako pierwszy krok na nowo utworzonej instancji. W przeciwnym razie wykonaj migawkę pamięci EC2 EBS Storage / itp.

W poniższym bloku zaznaczyłem kroki za pomocą << # >>, więc nie są one częścią polecenia. Potrzebujesz uprawnień roota, więc zrób „sudo sh”, jeśli nie jesteś rootem.

<<1>> Look at the filesystem, it is 6G
<<2>> Look at the disk and the partition, the disk is 21.5 GB but the partition is 6 GB (6291456 blocks)
<<3>> Start fdisk for that disk (xvda, so not the partition xvda1)
<<4>> Switch to sector display.
<<5>> Print the partition(s), and remember the start sector (2048 in the example).
<<6>> Delete the partition.
<<7>> Create a new partition.
<<8>> Make it primary.
<<9>> First partition.
<<10>> Enter the old start sector, do NOT make any typo here!!! (2048 in the example) 
<<11>> Hit enter to accept the default (this is the remainder of the disk)
<<12>> Print the changes and make sure the start sector is ok, if not restart at <<6>>
<<13>> Make the partition bootable. do NOT forget this!!!
<<14>> Enter your partition number (1 in the example)
<<15>> Write the partition info back, this will end the fdisk session.
<<16>> Reboot the server, and wait for it to come up (this may take longer than usual).
<<17>> Verify the filesystem size.
<<18>> If the filesystem is not around 20Gb as expected, you can use this command.


# df -h  <<1>>

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  2.0G  3.7G  35% / 
tmpfs            15G     0   15G   0% /dev/shm

# fdisk -l  <<2>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders
Units = cylinders of 1649 * 512 = 844288 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           2        7632     6291456   83  Linux

# fdisk /dev/xvda  <<3>>

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u  <<4>>
Changing display/entry units to sectors

Command (m for help): p  <<5>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 41943040 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: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048    12584959     6291456   83  Linux

Command (m for help): d  <<6>>
Selected partition 1

Command (m for help): n  <<7>>
Command action
   e   extended
   p   primary partition (1-4)
p  <<8>>
Partition number (1-4): 1  <<9>>
First sector (17-41943039, default 17): 2048  <<10>>
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): <<11>>
Using default value 41943039

Command (m for help): p <<12>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 41943040 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: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1            2048    41943039    20970496   83  Linux

Command (m for help): a  <<13>>
Partition number (1-4): 1  <<14>>


Command (m for help): w  <<15>>
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: ...
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

# reboot  <<16>>

<wait>

# df -h  <<17>>
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  2.0G   17G  11% / 
tmpfs            15G     0   15G   0% /dev/shm

# resize2fs /dev/xvda1  <<18>>
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/xvda1 to 5242624 (4k) blocks.
The filesystem on /dev/xvda1 is now 5242624 blocks long.

root@vs120 [~]#  df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  7.8G   11G  42% /
tmpfs           498M     0  498M   0% /dev/shm
/usr/tmpDSK     399M   11M  368M   3% /tmp
root@vs120 [~]#
Neo
źródło
1
Rozszerzenie partycji jest konieczne tylko wtedy, gdy wolumin jest podzielony na partycje. To dość rzadkie na EC2. Powszechną najlepszą praktyką w EBS jest formatowanie całego woluminu surowego za pomocą systemu plików bez pozycjonowania go najpierw. Jest to szczególnie prawdziwe w przypadku woluminów rozruchowych. Pozycjonowanie jest artefaktem dysków fizycznych, w których nie są one tak duże, jak chcesz dla swoich systemów plików. W EC2 po prostu tworzysz woluminy EBS o odpowiednim rozmiarze i upuszczasz system plików na woluminie surowym bez partycji.
Eric Hammond
1
Nie wiem o rzadkich, zdarzyło mi się to w obu instancjach CentOS EC2, które uruchomiłem z Generic SSD EBS Storage.
Neo
Kto opublikował CentOS AMI, z których korzystałeś?
Eric Hammond,
@EricHammond centos.org
Neo
4
Poleciłbym zwrócenie się do centos.org z prośbą o zaprzestanie tworzenia AMI z partycjonowanymi woluminami root EBS. Nie ma z tego żadnej korzyści, jeśli używasz jednej partycji, co utrudnia zmianę rozmiaru. Amazon nie robi tego ze swoimi AMI. Podobnie jak Ubuntu, Red Hat i inne. Najlepszą praktyką jest po prostu układanie systemu plików na surowym wolumenie EBS bez dodatkowych bezużytecznych barier, które należy przesunąć przy zmianie rozmiaru.
Eric Hammond,
2

Zmień rozmiar systemu plików na woluminie EBS. Jeśli działasz ext3(co zwykle jest ustawieniem domyślnym), możesz po prostu uruchomić e2resize /dev/xvda1.

womble
źródło
Wolumin musi najpierw być offline i odinstalowany.
Farhan,
1
Nie z żadną nawet nieco nowoczesną dystrybucją Linuksa. Internetowa ekspansja systemów plików ext3 jest obsługiwana od lat.
womble
Dzięki Womble, korzystam z dystrybucji aws i e2resize tam nie ma. Nie ma go też w żadnym repozytorium mniam. Czy powinienem po prostu zdobyć źródło i sam je zbudować?
Christian
1

Próbowałem odpowiedzi od @Neo z instancją utworzoną z niestandardowego AMI Ubuntu. Wyjaśnienie było bardzo pomocne, ale musiałem zachować jednostki jako bloki i po prostu pominąć krok # 4. Potem działało idealnie.

Chodzi również o to, że w kroku 5 należy skopiować blok początkowy / cylinder, aby użyć go w kroku 10.

Odpowiedź @ Neo brzmi, jeśli masz partycjonowane wirtualne urządzenie dyskowe. Jeśli cierpisz na ten problem, możesz sprawdzić, czy: lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 5G 0 part / xvda i xvda1 mają bardzo różne rozmiary. Możesz zmienić rozmiar2fs i nie zrobi to żadnej różnicy, w moim przypadku xvda1 to 5G i to wszystko, z czego korzysta system plików.

Dzięki, @Neo

David B.
źródło