无法在EC2 centos上调整根分区

时间:2014-06-03 11:52:40

标签: amazon-ec2 centos disk-partitioning

我使用Centos 6.3 x64的社区图像创建了我的EC2机器。我添加了35 GB的磁盘。现在我做#df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            7.9G  1.2G  6.4G  16% /
tmpfs                 7.3G     0  7.3G   0% /dev/shm

我的磁盘是35GB,但它在root中显示为8 GB,在tmpfs中显示为7。

我试图使用resize2fs,但它没有在centos上工作。磁盘有ext4分区..

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

或者即使我尝试了resize2fs / dev / xvda1,它也说设备无关。

任何想法或其他方式,它是我的根磁盘(/)。所以无法卸下它。

5 个答案:

答案 0 :(得分:39)

我找到了一种方法,resize2fs不工作,以防不知道为什么,但它说设备或资源忙。我在resizedisk上使用fdisk发现了一篇非常好的文章我们可以通过删除和创建块来增加块大小并使分区可启动。它需要的只是重启。如果你使用相同的起始气缸,它不会影响你的数据。

# 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: 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)
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)
The filesystem is already 5242624 blocks long.  Nothing to do!

答案 1 :(得分:16)

以下步骤对我来说非常简单:

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  30G  0 disk 
└─xvda1 202:1    0   8G  0 part /

以root身份执行以下命令:

# yum install cloud-utils-growpart

# growpart /dev/xvda 1

# reboot

重启后:

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  30G  0 disk 
└─xvda1 202:1    0  30G  0 part /

答案 2 :(得分:5)

我遇到了同样的问题。我需要做的就是

  1. 重启实例
  2. 运行命令

    sudo resize2fs -f /dev/xxxx
    
  3. 它适用于我。

答案 3 :(得分:4)

加入Adeel Ahmad的答案:

如果您尝试使用交换分区从AMI启动实例,则必须执行其他步骤。

例如,如果ami包含如下:

# fdisk -l
Disk /dev/xvde: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 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: 0xe211223f

    Device Boot      Start         End      Blocks   Id  System
/dev/xvde1   *           1        1291    10369926   83  Linux
/dev/xvde2            1292        1305      112455   82  Linux swap / Solaris

如果我必须将容量升级到20GB,我将创建一个AMI并尝试启动另一个20GB空间的实例。在此之后,如果我尝试上述步骤,磁盘空间不会增加,因为在xvde1和新空间之间存在xvde2分区。

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            9.8G  7.5G  1.8G  81% /

$ fdisk -l

Disk /dev/xvde: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0xe211223f

    Device Boot      Start         End      Blocks   Id  System
/dev/xvde1   *           1        1291    10369926   83  Linux
/dev/xvde2            1292        1305      112455   82  Linux swap / Solaris

$ resize2fs /dev/xvde1 
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 2592481 blocks long.  Nothing to do!

在这种情况下,请执行以下操作

  1. 删除两个分区
  2. 使用新的所需大小减去交换空间的大小
  3. 创建新的主分区
  4. 为此分区添加可启动标志
  5. 创建第二个分区
  6. 将其标记为交换
  7. 写入更改并重新启动
  8. 扩展分区1
  9. 设置交换 OR
  10. 删除分区1选定的分区1

    Command (m for help): d  <<6>>
    Partition number (1-4): 1 <<6.0.1>> 
    

    删除分区2选择的分区2

    Command (m for help): d  <<6.2>>
    

    创建已调整大小的主分区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):<<NEW_UPPER_LIMIT>> <<11>>
    
      

    注意:2048应该由您原来的起始部门取代   或系统不会启动。 NEW_UPPER_LIMIT将是新的扇区号   上限,其余的将留给交换。为了维护   相同的交换空间,减去原始的开始和结束扇区   数字,然后从41943039(或你的上层)减去结果   极限)

    创建交换分区

    Command (m for help): n  <<12>>
    Command action    
    e   extended    
    p   primary partition (1-4) 
    p  <<13>>
    Partition number (1-4): 2  <<14>> 
    First sector (<<NEW_UPPER_LIMIT+1>>-41943039, default <<NEW_UPPER_LIMIT+1>>): <<USE_DEFAULT>>  <<15>> 
    Last sector, +sectors or +size{K,M,G}(<<NEW_UPPER_LIMIT+1>>-41943039,default 41943039):<<USE_DEFAULT>> <<16>>
    Using default value 41943039
    

    为分区1添加可引导位

    Command (m for help): a  <<17>>
    Partition number (1-4): 1  <<18>>
    

    将分区2标记为交换

    Command (m for help): l <<19>>
    

    现在您将看到一个文件系统列表。注意与Linux swap相对应的那个(比如说82)

    Command (m for help): t <<20>>
    Partition number (1-4): 2 <<21>>
    Hex Code (type l to list codes) : 82 <<22>>
    

    写下更改并重新启动

    Command (m for help): w  <<23>> The partition table has been altered!
    ....
    
    $ sudo reboot
    

    重启后运行

    resize2fs /dev/xvde1
    

    这会调整你的fs

    现在将第二个分区用作交换

    $ mkswap /dev/<<SECOND SWAP PARTITION(run fdisk -l to get the name)>>
    $ swapon /dev/<<SECOND SWAP PARTITION(run fdisk -l to get the name)>>
    

    您可以检查/ proc / swaps文件以验证

    $ cat /proc/swaps
    

    现在将以下内容添加到/ etc / fstab中,以使这些更改成为持久性

    在/ etc / fstab结尾(用nano或vi等打开)

    /dev/<<SECOND SWAP PARTITION>>   swap    swap   defaults   0 0
    

    保存并退出

    重新启动并检查

答案 4 :(得分:0)

我的Debian 8 ec2实例遇到了同样的问题,并且遇到了错误

FAILED: failed to get CHS from /dev/xvda

解决方案

$ sudo parted /dev/xvda resizepart 1
Warning: Partition /dev/xvda1 is being used. Are you sure you want to continue?
Yes/No? yes                                                             
End?  [8588MB]? 100                  
$ sudo resize2fs /dev/xvda1
$ lsblk
$ df -h 

您将看到ebs音量现在已经增加。