EC2驱动器不是EBS卷大小


18

我有一个EC2实例,为此我创建了500GB EBS卷。不幸的是,EC2实例仅显示8GB可用空间。

我只有一个驱动器,这是正确的。

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

但是,该驱动器只有8GB

[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

但是,fdisk和/ proc / partitions都显示正确的大小

[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

任何帮助将不胜感激,谢谢。

Answers:


34

如果根文件系统是ext3或ext4,请运行:

sudo resize2fs /dev/xvda1

如果根文件系统是xfs(不太常见),请运行:

sudo xfs_growfs /

如果您以root用户身份登录,则可以省略“ sudo”。

这些命令应在系统运行和挂载文件系统时运行。

EBS卷的标准不包含分区表。EBS卷通常在没有分区的情况下整体上被格式化为文件系统。


2
当人们不加解释地投票否决您时,我会感到恼火。无论如何,这很不错。非常感谢!
基督教徒

1
/ me耸耸肩,继续前进:-)很高兴为您提供帮助。以下是我写过的几篇 相关文章:alestic.com/2009/12/ec2-ebs-boot-resize alestic.com/2010/02/ec2-resize-running-ebs-root
Eric Hammond,

2
请注意,Ubuntu AMI中包含的cloud-init软件包会在启动时自动运行resize2fs。我很惊讶这不在Amazon Linux中,因为他们也在使用cloud-init。
埃里克·哈蒙德

4
我有同样的问题,当我运行命令时它说:文件系统已经有2096896个块了。没事做!它仍然是8GB!
2014年

12

在为重新调整EBS体积大小的人员重新调整大小之前,这里的答案似乎缺少几个步骤。如果使用快照创建EBS或使用某些AMI,则需要扩展磁盘(xvda),扩展分区(xvda1),然后扩展文件系统(/)。

如果我正确阅读此文件,则您的磁盘如下所示:

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

它需要看起来像这样:

/dev/xvda
|______________________/dev/xvda1______________________|

之后,运行resize2fs将扩展到内的新空间xvda1,使用,fdisk我们可以通过删除并再次创建块并使分区可启动来增加块的大小。它所需要的只是重启。在大多数情况下,如果使用相同的启动柱面,它不会影响您的数据,但是请注意,重新创建分区时发生的任何错误都将导致丢失所有数据和/或服务器将不会重新启动。 我建议将其作为新创建实例的第一步。否则,请为您的EC2 EBS Storage / etc快照。

我在下面的块中用<<#>>标记了这些步骤,因此并不是命令的一部分。您需要root权限,如果您不是root用户,请执行“ sudo sh”操作。

<<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 [~]#

1
仅当卷已分区时才需要扩展分区。这在EC2上很少见。EBS的最佳常规做法是使用文件系统格式化整个原始卷,而无需先对其进行定位。对于引导卷尤其如此。定位是物理磁盘的人工产物,它们的大小并不等于文件系统所需的大小。在EC2上,您只需创建合适大小的EBS卷,然后将文件系统放在没有分区的原始卷上。
埃里克·哈蒙德

1
我并不了解这种情况,我在使用通用SSD EBS存储启动的两个CentOS EC2实例上都遇到了这种情况。
2014年

谁发布了您使用的CentOS AMI?
埃里克·哈蒙德

@EricHammond centos.org

4
我建议请centos.org停止使用分区的根EBS卷构建AMI。如果您使用的是单个分区,那么这样做没有任何好处,这会使调整大小变得更加困难。Amazon不会通过其AMI执行此操作。Ubuntu,Red Hat等也没有。最佳做法是将文件系统简单地放置在原始EBS卷上,而无需在调整大小时四处移动多余的障碍。
埃里克·哈蒙德

2

在EBS卷上调整文件系统的大小。如果您正在运行ext3(通常是默认设置),则可以运行e2resize /dev/xvda1


首先需要使该卷脱机并卸下。
法汉(Farhan)2012年

1
甚至没有任何模糊的现代Linux发行版。多年以来一直支持ext3文件系统的在线扩展。
womble

谢谢womble,我正在使用aws发行版,而e2resize不在那儿。它也不在任何yum仓库中。我是否应该自己获取源代码并自行构建?
基督教徒

1

我使用从自定义Ubuntu AMI创建的实例尝试了@Neo的答案。解释非常有帮助,但是我需要将单元保留为块,而只是跳过第4步。然后,它运行完美。

还有一点是,在步骤5中,您必须复制要在步骤10中使用的起始块/圆柱体。

@Neo的答案是,如果您有分区的虚拟磁盘设备。您可以通过以下方法发现是否遇到此问题: lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 5G 0 part / xvda和xvda1的大小非常不同。您可以重新调整大小2fs,这不会有任何区别,在我的情况下,xvda1是5G,这就是文件系统将使用的全部。

谢谢@Neo

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.