EBSボリュームサイズではないEC2ドライブ


18

500GB EBSボリュームを作成したEC2インスタンスがあります。残念ながら、EC2インスタンスには8GBしか使用できません。

ドライブは1つしかありませんが、これは正しいです。

[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

どんな助けも大歓迎です、ありがとう。

回答:


34

ルートファイルシステムがext3またはext4の場合、次を実行します。

sudo resize2fs /dev/xvda1

ルートファイルシステムがxfs(あまり一般的ではない)の場合、次を実行します。

sudo xfs_growfs /

ルートとしてログインしている場合は、「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も使用されているため、これがAmazon Linuxにないことに驚いています。
エリックハモンド

4
同じ問題があり、コマンドを実行すると次のように表示されます。ファイルシステムは既に2096896ブロック長です。何もしません!まだ8GBです!
ネオ14年

12

ここでの回答は、EBSボリュームサイズを変更しているユーザー向けに特別にサイズ変更する前のいくつかの手順が欠落しているようです。スナップショットを使用してEBSを作成した場合、または特定のAMIを使用してディスク(xvda)を拡張し、パーティション(xvda1)を拡張してから、ファイルシステム(/)を拡張する必要があります。

これを正しく読んでいる場合、ディスクは次のようになっています。

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

次のようにする必要があります。

/dev/xvda
|______________________/dev/xvda1______________________|

その後、実行resize2fsは内の新しいスペースに成長しますxvda1。これを使用しfdiskて、ブロックサイズを削除および再作成し、パーティションを起動可能にすることでブロックサイズを増やすことができます。必要なのは再起動だけです。ほとんどの場合、同じ開始シリンダーを使用してもデータに影響はありませんが、パーティションの再作成に誤りがあると、すべてのデータが失われ、サーバーが再起動しません。 新しく作成したインスタンスの最初のステップとしてこれを行うことをお勧めします。それ以外の場合は、EC2 EBSストレージなどのスナップショットを作成します。

以下のブロックでステップを<<#>>でマークしているため、これらはコマンドの一部ではありません。ルート権限が必要なので、ルートでない場合は「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の一般的なベストプラクティスは、RAWボリューム全体を最初に配置せずにファイルシステムでフォーマットすることです。これは特にブートボリュームに当てはまります。ポジショニングは物理ディスクのアーティファクトであり、ファイルシステムに必要なサイズではありません。EC2では、適切なサイズのEBSボリュームを作成し、パーティションのないrawボリュームにファイルシステムをドロップするだけです。
エリックハモンド14年

1
まれなことは知りませんが、Generic SSD EBS Storageで起動したCentOS EC2インスタンスの両方で発生しました。
ネオ14年

使用したCentOS AMIは誰が公開しましたか?
エリックハモンド14年

@EricHammond centos.org
ネオ

4
パーティション化されたルートEBSボリュームを持つAMIの構築を停止するために、centos.orgに請願することをお勧めします。単一のパーティションを使用している場合、これには利点がなく、サイズ変更がより困難になります。AmazonはAMIでこれを行いません。Ubuntu、Red Hatなども同様です。サイズ変更時に移動する必要のある余分な不要なバリアを使用せずに、ファイルシステムを未加工のEBSボリュームに単純に配置することがベストプラクティスです。
エリックハモンド14

2

EBSボリューム上のファイルシステムのサイズを変更します。実行している場合ext3(通常はデフォルトです)、単に実行できますe2resize /dev/xvda1


最初にボリュームをオフラインにして、マウント解除する必要があります。
ファーハン

1
漠然と現代的なLinuxディストリビューションでもありません。ext3ファイルシステムのオンライン拡張は何年もサポートされています。
ワンブル

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はサイズが大きく異なります。resize2fsを実行しても、違いはありません。私の場合、xvda1は5Gであり、ファイルシステムが使用するのはそれだけです。

ありがとう、@ Neo

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.