背景
ファイルコピーなどで No space left on device
というメッセージが表示された場合、インスタンスにアタッチされている EBS ボリュームが使用容量いっぱいなので追加する必要があります。
$ cp file1 file2
cp: cannot create regular file ‘file2’: No space left on device
ファイルシステムの使用状況を確認してみます。ルートファイルシステムの使用率が 100 % になっています。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 462M 0 462M 0% /dev
tmpfs 471M 0 471M 0% /dev/shm
tmpfs 471M 13M 458M 3% /run
tmpfs 471M 0 471M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 8.0G 16K 100% /
tmpfs 95M 0 95M 0% /run/user/1000
書いたこと
ファイルシステムを追加する手順について書きました。ただし容量がいっぱいだったので、ファイルシステムのマウントポイントを作成できませんでした。ですので、既存のボリュームの容量を拡張する手順についても書きました。
追加ボリュームの作成
「ボリュームの作成」をクリックします。
以下でボリュームタイプ、サイズ、AZ などを選択します。ボリュームを追加するインスタンスと同じ AZ でボリュームを作成する必要があります。
「ボリュームの作成」をクリックします。
作成後、ボリュームをアタッチします。ボリュームの状態が「使用可能」になっていることを確認した後、「アクション」→ 「ボリュームのアタッチ」の順にクリックします。
追加するインスタンスの ID を選択します。デバイス名はデフォルトのまま進めます。
マウント(失敗)
ボリュームを作成し、アタッチした段階ではまだファイルシステムとして使用できないので、マウント手順を記載します。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 462M 0 462M 0% /dev
tmpfs 471M 0 471M 0% /dev/shm
tmpfs 471M 13M 458M 3% /run
tmpfs 471M 0 471M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 8.0G 16K 100% /
tmpfs 95M 0 95M 0% /run/user/1000
アタッチ後、利用できるブロックデバイスに先ほど作成したボリュームが追加されます。MOUNTPOINT
列にパスがなく、まだマウントされていません。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 8G 0 disk
├─nvme0n1p1 259:1 0 8G 0 part /
└─nvme0n1p128 259:2 0 1M 0 part
nvme1n1 259:3 0 100G 0 disk
file -s コマンドを使用して、ファイルシステムタイプなど、特定のデバイスに関する情報を取得します。次の出力例のように、単にデータが出力される場合は、デバイス上にファイルシステムはありません。
$ sudo file -s /dev/nvme1n1
/dev/nvme1n1: data
ファイルシステムを作成します。
$ sudo mkfs -t xfs /dev/nvme1n1
マウントポイントを作成します。
$ sudo mkdir /data
ここで以下のエラーが発生しました。
$ sudo mkdir /data
mkdir: cannot create directory ‘/data’: No space left on device
追加のファイルシステムは用意できたのですが、それをマウントするためのマウントポイントを作成するための容量がありませんでした。
ボリュームの容量を変更する
ここではボリュームの変更について書きます。「アクション」→ 「ボリュームの変更」をクリックします。
8GiB から 10GiB に変更します。(増加の変更のみ可能です)
この後、使用可能になるまで待ちます。
使用可能になった後、lsblk
コマンドで容量が増加されたことを確認します。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 10G 0 disk
├─nvme0n1p1 259:1 0 10G 0 part /
└─nvme0n1p128 259:2 0 1M 0 part
nvme1n1 259:3 0 100G 0 disk
このときファイルシステムの容量はまだ拡張されていません。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 462M 0 462M 0% /dev
tmpfs 471M 0 471M 0% /dev/shm
tmpfs 471M 13M 458M 3% /run
tmpfs 471M 0 471M 0% /sys/fs/cgroup
/dev/nvme0n1p1 8.0G 8.0G 16K 100% /
tmpfs 95M 0 95M 0% /run/user/1000
tmpfs 95M 0 95M 0% /run/user/0
tmpfs 10M 0 10M 0% /tmp
ファイルシステムの容量を拡張します。
$ sudo xfs_growfs -d /
拡張されたか確認します。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 462M 0 462M 0% /dev
tmpfs 471M 0 471M 0% /dev/shm
tmpfs 471M 596K 470M 1% /run
tmpfs 471M 0 471M 0% /sys/fs/cgroup
/dev/nvme0n1p1 10G 8.1G 2.0G 81% /
tmpfs 95M 0 95M 0% /run/user/1000
tmpfs 95M 0 95M 0% /run/user/0
tmpfs 10M 0 10M 0% /tmp
マウント(成功)
マウントポイントを作成し、マウントします。容量が拡張できたので、マウントポイントを作成することができ、マウントができました。
$ sudo mkdir /data
$ sudo mount /dev/nvme1n1 /data
ファイルシステムが追加されたか確認します。
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 462M 0 462M 0% /dev
tmpfs 471M 0 471M 0% /dev/shm
tmpfs 471M 628K 470M 1% /run
tmpfs 471M 0 471M 0% /sys/fs/cgroup
/dev/nvme0n1p1 10G 8.1G 2.0G 81% /
tmpfs 95M 0 95M 0% /run/user/1000
tmpfs 95M 0 95M 0% /run/user/0
tmpfs 10M 0 10M 0% /tmp
/dev/nvme1n1 100G 135M 100G 1% /data
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 10G 0 disk
├─nvme0n1p1 259:1 0 10G 0 part /
└─nvme0n1p128 259:2 0 1M 0 part
nvme1n1 259:3 0 100G 0 disk /data
参考記事