scottymarshall
scottymarshall

Reputation: 1

knife-ec2 not expanding volume at bootstrap

How can I create a larger than 8GB boot partition volume using knife-ec2 on an AWS hvm ami at boostrap?

In the old instance type of m1, i could just add --ebs-size 50 then run resize2fs after the system boot strapped.

When doing a new hvm ami (a t2 instance):

knife ec2 server create scott-base -N scott-base -r "role[base]" -I ami-57cfc412 --ebs-size 50

it will create the 50GB volume, but i cannot expand it after I login. I see this during the build:

Warning: 50GB EBS volume size is larger than size set in AMI of 8GB.
Use file system tools to make use of the increased volume size.

And when I run resize2fs, this is what I get

[root@scott-base ~ ] resize2fs /dev/xvda
resize2fs 1.41.12 (17-May-2010)
resize2fs: Device or resource busy while trying to open /dev/xvda
Couldn't find valid filesystem superblock

I know I can go through the whole process of unmounting, copying and bringing it back up. I also know i can just add a volume after the fact, but I have to believe there is an easier way at bootstrap to get a larger ebs volume than 8GB.

[root@scott-base ~]# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  50G  0 disk
└─xvda1 202:1    0   8G  0 part /

Upvotes: 0

Views: 283

Answers (2)

scottymarshall
scottymarshall

Reputation: 1

The solution was related to the AMI itself. It turns out that some ami's are just not equipped with the ability to expand online. Our solution:

  1. Launch the ami with a larger partition, knowing it would only default 8GB
  2. Use the cloud-init and dracut module to increase the size during the next reboot

    yum install -y cloud-init
    yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
    yum install -y dracut-modules-growroot.noarch cloud-utils-growpart
    dracut -f -v
    
  3. Create a a personal image from that instance
  4. Use the personal image to launch a new instance. At boot, it will be the larger size

Upvotes: 0

Dzmitry Savinkou
Dzmitry Savinkou

Reputation: 5190

You are trying to apply resize2fs command to device reference /dev/xvda which is not file system itself, you can divide devices into partions, where you create file system (ext3,ext4,etc). You do have partition with filesystem on /dev/xvda1 partion, where you want to use resize2fs. Please read the documentation about devices and partions in linux.

Upvotes: 0

Related Questions