ファイルシステムに空きスペースがないというエラーが表示された際に、EBS ボリュームのサイズを増やすにはどうすればよいですか?

最終更新日: 2020 年 5 月 7 日

Amazon Elastic Block Store (Amazon EBS) ボリュームのサイズを増やそうとしましたが、ファイルシステムに空きスペースがないというエラーが表示されました。この問題を解決する方法を教えてください。

簡単な説明

EBS ボリュームのルートパーティションやルートファイルシステムを展開するときに表示される「No space left on device (デバイスに空きスペースがありません)」エラーを回避するには、メモリに存在する一時ファイルシステムである tmpfs を使用します。/tmp マウントポイントに tmpfs ファイルシステムをマウントしてから、ルートパーティションやルートファイルシステムを展開します。

以下の例では、ルート EBS ボリュームブロックデバイス (/dev/nvme0n1) が 9 GiB で、ルートパーティション (パーティション 1) は現時点で 8 GiB あります。

$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0   9G  0 disk
├─nvme0n1p1   259:1    0   8G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part

ルートパーティション (パーティション 1) を拡大しようとすると、以下のいずれかのエラーが表示されます。  

$ sudo growpart /dev/nvme0n1 1
/bin/growpart: line 248: /tmp/growpart.fklt5u/dump.out: No space left on device
FAILED: failed to dump sfdisk info for /dev/nvme0n1

- または -

$ sudo growpart /dev/nvme0n1 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=18870239 end=18874335
FAILED: failed: sfdisk --list /dev/nvme0n1

注意: ベストプラクティスとして、解決手順を試す前に、インスタンスの Amazon マシンイメージ (AMI) のバックアップを取るか、またはお使いのインスタンスにアタッチされているルート EBS ボリュームのスナップショットを作成することをお勧めします。バックアップを取っておけば、予期しない問題が起きてもデータを復旧できます。

解決方法

1.    SSH を使用して Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスに接続します

2.    df -h コマンドを使用して、「/」にマウントされたルートパーティションがいっぱいである (100% である) ことを確認します。以下の例では、/dev/nvme0n1p1 のスペースの 100% が使用中です。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        460M     0  475M   0% /dev
tmpfs           478M     0  492M   0% /dev/shm
tmpfs           478M  432K  492M   1% /run
tmpfs           478M     0  492M   0% /sys/fs/cgroup
/dev/nvme0n1p1  8.0G  8.0G  664K 100% /
tmpfs            96M     0   99M   0% /run/user/1000

3.    以下のコマンドを実行して、アタッチされたブロックデバイスとルート「/」マウントポイントに関する詳細情報を集めます。

$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0   9G  0 disk
├─nvme0n1p1   259:1    0   8G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part
$ lsblk -f
NAME          FSTYPE LABEL           UUID                                 MOUNTPOINT
nvme0n1
├─nvme0n1p1   xfs    /               afcf1342-1d40-41bd-bde9-e4ea5d87e3b6 /
└─nvme0n1p128

前述の例における出力では、ルート EBS ボリュームには合計 9 GiB のスペースがありますが、ルートパーティションであるパーティション 1 (/dev/nvme0n1p1) には 8 GiB しかありません。ファイルシステムのタイプは XFS です。

4.    「No space left on a block device (ブロックデバイスに空きスペースがありません)」エラーを回避するには、一時ファイルシステムである tmpfs/tmp マウントポイントにマウントします。これにより、10 M の tmpfs/tmp にマウントされます。

$ sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp

5.    growpart コマンドを実行して、ルートパーティション (パーティション 1) のサイズを拡大します。/dev/nvme0n1 をルートパーティションに置き換えます。

$ sudo growpart /dev/nvme0n1 1 
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=18870239 end=18874335

lsblk コマンドを実行して、パーティション 1 が 9 GiB に拡張されていることを確認します。

$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0   9G  0 disk
├─nvme0n1p1   259:1    0   9G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part

6.    ファイルシステムを展開します。ステップ 3 を参照して、ルートパーティション「/」のファイルシステムを確認します。

以下の例では、XFS タイプのファイルシステムが展開されています。

$ sudo xfs_growfs -d /
data blocks changed from 2096635 to 2358779
         =                       sectsz=512   sunit=0 blks, lazy-count=1
log      =internal               bsize=4096   blocks=2560, version=2
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
         =                       sunit=0      swidth=0 blks
data     =                       bsize=4096   blocks=2096635, imaxpct=25
         =                       crc=1        finobt=1 spinodes=0
         =                       sectsz=512   attr=2, projid32bit=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
meta-data=/dev/nvme0n1p1         isize=512    agcount=4, agsize=524159 blks

以下の例では、パーティション 1 の EXT2/EXT3/EXT4 ファイルシステムが展開されています。

$ sudo resize2fs /dev/nvme0n1p1

7.    ファイルシステムを展開したら、df -h コマンドを使用して、追加したスペースが OS 上で表示されることを確認します。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        960M     0  960M   0% /dev
tmpfs           978M     0  978M   0% /dev/shm
tmpfs           978M  392K  978M   1% /run
tmpfs           978M     0  978M   0% /sys/fs/cgroup
/dev/nvme0n1p1  9.0G  8.0G 1022M  89% /
tmpfs           196M     0  196M   0% /run/user/1000
tmpfs            10M     0   10M   0% /tmp

8.    unmount コマンドを実行して、tmpfs ファイルシステムをアンマウントします。

$ sudo umount /tmp

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合