Cannot resize AWS EBS root volume or create larger

2019-05-07 21:44发布

I have a Amazon Web Services EC2 Debian 8.0 instance with an Elastic Block Storage (EBS) volume of 35GB. fdisk correctly shows the size but my root partition is still at 7.8G, although I tried to execute resize2fs.

root@ip-10-0-3-164:/home/admin# fdisk -l

Disk /dev/xvda: 35 GiB, 37580963840 bytes, 73400320 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
Disklabel type: dos
Disk identifier: 0x7d936f86

Device     Boot Start      End  Sectors Size Id Type
/dev/xvda1 *     4096 16773119 16769024   8G 83 Linux

root@ip-10-0-3-164:/home/admin# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  2.1G  5.3G  29% /
udev             10M     0   10M   0% /dev
tmpfs           200M  4.3M  196M   3% /run
tmpfs           500M     0  500M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           500M     0  500M   0% /sys/fs/cgroup

root@ip-10-0-3-164:/home/admin# resize2fs /dev/xvda1
resize2fs 1.42.12 (29-Aug-2014)
The filesystem is already 2096128 (4k) blocks long.  Nothing to do!

root@ip-10-0-3-164:/home/admin# fdisk /dev/xvda

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/xvda: 35 GiB, 37580963840 bytes, 73400320 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
Disklabel type: dos
Disk identifier: 0x7d936f86

Device     Boot Start      End  Sectors Size Id Type
/dev/xvda1 *     4096 16773119 16769024   8G 83 Linux


Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2048-73400319, default 2048): 2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-4095, default 4095): 

Created a new partition 2 of type 'Linux' and of size 1 MiB.

Command (m for help): p
Disk /dev/xvda: 35 GiB, 37580963840 bytes, 73400320 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
Disklabel type: dos
Disk identifier: 0x7d936f86

Device     Boot Start      End  Sectors Size Id Type
/dev/xvda1 *     4096 16773119 16769024   8G 83 Linux
/dev/xvda2       2048     4095     2048   1M 83 Linux

Partition table entries are not in disk order.

Command (m for help): t   
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

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).

root@ip-10-0-3-164:/home/admin# fdisk /dev/xvda

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/xvda: 35 GiB, 37580963840 bytes, 73400320 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
Disklabel type: dos
Disk identifier: 0x7d936f86

Device     Boot Start      End  Sectors Size Id Type
/dev/xvda1 *     4096 16773119 16769024   8G 83 Linux
/dev/xvda2       2048     4095     2048   1M 82 Linux swap / Solaris

Partition table entries are not in disk order.

As you see, the resize2fs does not have effect. I also cannot create a swap partition with more space than 1M.

This problem occurs on all my instances. Although they all have 30-35GB EBS volumes, I cannot resize them and they stay at 8GB. When I attach just an additional volume besides the root mounted one, it works fine.

Can you help me?

4条回答
祖国的老花朵
2楼-- · 2019-05-07 22:24

Forget the other answers. I just spent 3 days figuring out the root cause and a simple workaround:

https://serverfault.com/questions/748063/debian-8-ami-only-using-8gb-partition

查看更多
叛逆
3楼-- · 2019-05-07 22:28

A little more complicated, and assuming that you have just a few easily-identified chunks of "too-big" directory trees (such as /opt and /var/log) would be to create filesystem(s) on the unallocated 28GB, use rsync to copy your working files to the new filesystems, and wipe the obsolete files (to free up diskspace), mounting the new filesystems in their place (by editing /etc/fstab, of course).

If you do this for /var/log, you have to do a reboot immediately after migrating the files, since the system still references the original files. Of course, you might want to practice the procedure on a test-machine.

It would be a lot simpler if Amazon's root volumes used LVM.

查看更多
手持菜刀,她持情操
4楼-- · 2019-05-07 22:35

unattach the volume for xvda. Attach it to another instance but don't mount it on the volume. Then use fdisk to delete the first partition and re add it with all of the available space. Set the bootable flag and ensure that the filesystem type is still 83. write the fdisk partition table and exit fdisk. Run e2fsck and resize2fs on the new first partition

Unattach the disk from the other instance and reattach it to the original instance.

When the original instance restarts with the modified volume you should see the 35GB

The reason to do it this way is that you can't modify the partition table of a running, attached root disk

All this stuff is detailed in the aws documentation

查看更多
Juvenile、少年°
5楼-- · 2019-05-07 22:41

Resize partition with resize2fs on Debian 8 Jessie on AWS EC2 + EBS is not working.

My solution was to manually creating a separate volume for this.

I will add here a manual step by step how to do.

First make a backup of your instance, creating an Image AMI or Snapshot Volume.

Creating Image. Creating Image step 1

Creating Image step 2

Or creating Snapshot.

Creating Snapshot step 1

Creating Snapshot step 2

Now let's create a Debian 8 instance, only to repartition the volume you need.

New instance Debian 8.

and finish all the steps of creating the instance until it start.

Access the instance with ssh.

Login as root.

sudo -i

Now let's set the source.list be able to install the 'parted'.

pico /etc/apt/sources.list

and update the file with.

##########################################################################
deb http://cloudfront.debian.net/debian jessie main contrib non-free
deb-src http://cloudfront.debian.net/debian jessie main contrib non-free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

deb http://cloudfront.debian.net/debian jessie-updates main contrib non-free
deb-src http://cloudfront.debian.net/debian jessie-updates main contrib non-free

deb http://cloudfront.debian.net/debian jessie-backports main contrib non-free
deb-src http://cloudfront.debian.net/debian jessie-backports main contrib non-free
##########################################################################

run the apt-get.

apt-get clean && apt-get update && apt-get upgrade

Now let's install the parted.

apt-get install parted

Now stop the instance created.

enter image description here

Now let's create a volume from the snapshot backup that you created.

NOTE: Inform the size of the total of the partition you want, here.

enter image description here

enter image description here

Add the volume in /dev/sdf

enter image description here

enter image description here

Now start the instance.

enter image description here

Access the instance with ssh.

Login as root.

sudo -i

Check partitions

df -h

lsblk

You will see output like this.

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
 xvdf    202:80   0  40G  0 disk
└─xvdf1 202:81   0   8G  0 part

The xvdf with 40G and xvdf1 with 8G.

Now let's run the parted on volume /dev/xvdf.

parted /dev/xvdf

Within the parted. Set the unit.

(parted) unit s

Print partition information to see.

(parted) print

You will see output like this.

Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdf: 83886080s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start  End        Size       Type     File system  Flags
 1      1s     16777215s  16777215s  primary  ext4         boot

Remove the partition. (This will not delete the data, data is retrieved later).

(parted) rm 1

Now we mount the new partition from begin 1s, to the end 100% of in the volume.

(parted) mkpart primary 1 100%

 Warning: The resulting partition is not properly aligned for best performance.
 Ignore/Cancel? : Ignore

Print partition information to see.

(parted) print

You will see output like this.

Model: Xen Virtual Block Device (xvd)
Disk /dev/xvdf: 83886080s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start  End        Size       Type     File system  Flags
 1      1s     83886079s  83886079s  primary               lba

Now set the partition as bootable.

(parted) set 1 boot on

And finalize the parted.

(parted) quit

Ignore information print.

Information: You may need to update /etc/fstab.

Check partitions

lsblk

You will see output like this.

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdf    202:80   0  40G  0 disk
└─xvdf1 202:81   0  40G  0 part

See it now that xvdf and xvdf1 has the size 40G. \o/

Now we just need to make e2fsck to check and index the data.

NOTE: e2fsck can take a long time to do the check. You should awaits.

e2fsck -f /dev/xvdf1

You will see output like this.

e2fsck 1.42.12 (29-Aug-2014)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/xvdf1: 208603/524288 files (0.2% non-contiguous), 1918667/2097151 blocks

Everything Ok with the partition.

Now make a snapshot backup of the partition, as we did in the beginning tutorial.

Create a new volume with the snapshot created, and add the original instance.

Remember to stop the instance first.

Remove the old volume instance and add the new volume instance.

Attach to (/dev/****) original, im my case is /dev/sda. Atachedd/dev/sda

Start the instance and all ready! Resized partition. \o/

查看更多
登录 后发表回答