ECSコンソールでElastic Compute Service (ECS) インスタンスに接続されているディスクのサイズを変更する場合、ディスクのパーティションとファイルシステムはディスクとともに自動的に拡張されません。 新しいディスクサイズを有効にするには、ディスクのパーティションとファイルシステムを追加のディスクスペースに手動で拡張する必要があります。 このトピックでは、Linux ECSインスタンスに接続されたディスクのパーティションとファイルシステムを拡張する方法について説明します。
前提条件
次のいずれかのオペレーティングシステムを実行するLinux ECSインスタンスが作成されます。
Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、CentOS 6以降、Debian 8以降、またはUbuntu 14以降。
重要CentOS 6インスタンスに接続されているディスクのサイズを2 TiB以上に拡張するか、GUIDパーティションテーブル (GPT) パーティションスタイルでディスクのパーティションを拡張するには、
parted
コマンドを実行します。 詳細については、「Linuxインスタンスのデータディスク上のパーティションとファイルシステムのオフライン拡張」をご参照ください。 このトピックで説明するgrowpart
コマンドは使用しないでください。 そうしないと、パーティションテーブルが破損する可能性があります。 ディスクがGPTパーティションスタイルを使用しているかどうかを確認します。 詳細については、このトピックの「準備: ディスク情報の取得」を参照してください。異なるオペレーティングシステムを実行するECSインスタンスに接続されているディスクのパーティションとファイルシステムを拡張する方法については、「Linuxインスタンスのデータディスク上のパーティションとファイルシステムをオフラインで拡張する」をご参照ください。
(推奨) ディスクのスナップショットを作成してディスクデータをバックアップします。 詳細については、「ディスクのスナップショットの作成」をご参照ください。
説明ほとんどの場合、パーティションとファイルシステムを拡張してもデータ損失は発生しません。 偶発的な操作によるデータ損失や例外を防ぐために、ディスクデータをバックアップするためのスナップショットを作成することを推奨します。
インスタンスに接続されたディスクは、ECSコンソールでサイズ変更されます。 詳細については、「手順1: ディスクのサイズを変更してディスクの容量を拡張する」をご参照ください。
ECSインスタンスにアタッチされているディスクのサイズを変更するために、[サイズ変更方法] パラメーターを [オフラインサイズ変更] に設定した場合、ECSコンソールで、または新しいディスクサイズを有効にするためにディスクのサイズ変更後にAPI操作を呼び出してインスタンスを再起動する必要があります。 インスタンスで
reboot
コマンドを実行してインスタンスを再起動した場合、新しいディスクサイズは有効になりません。 詳細については、「インスタンスの再起動」をご参照ください。
考慮事項
このトピックは、Logical Volume Manager (LVM) を使用してディスクパーティションを管理するシナリオには適用されません。
LVMを使用してディスクパーティションを管理する場合、ECSコンソールでディスクのサイズを変更した後、LVMを使用して論理ボリューム (LV) とファイルシステムを拡張する必要があります。 詳細については、「LVの拡張」をご参照ください。
このトピックは、ディスクに対してマルチアタッチ機能が有効になっており、クラスターファイルシステムが使用されているシナリオには適用されません。
マルチアタッチ機能を使用すると、複数のマウントポイントにディスクをマウントしてアクセスできます。 この場合、あるマウントポイントでパーティションまたはファイルシステムを拡張すると、他のマウントポイントが影響を受け、クラスターの一貫性または可用性が損なわれる可能性があります。 詳細については、「クラウドディスクのマルチアタッチ」をご参照ください。
手順
このトピックで説明する操作は、次のシナリオに適しています。
Linuxインスタンスに接続されているディスクのサイズを変更し、ディスクの既存のパーティションを追加のディスク領域に拡張します。
説明既存のパーティションを拡張する代わりに、追加のディスクスペースにパーティションを作成することもできます。 詳細については、「Linuxインスタンスのデータディスク上のパーティションとファイルシステムのオフライン拡張」をご参照ください。
rawディスク (パーティション分割されていないディスク) はLinuxインスタンスにアタッチされています。 この場合、手順1: パーティションの拡張をスキップし、手順2: ファイルシステムの拡張に進みます。
このトピックでは、パーティションとファイルシステムを拡張するために使用できるサンプルコマンドについても説明します。 この例では、マスターブートレコード (MBR) パーティション、GPTパーティション、およびローディスクが使用されています。
準備: ディスク情報の取得
ディスクのパーティションとファイルシステムを拡張する前に、ディスクとパーティションの情報を取得します。
方法1: CLIの使用
ECS インスタンスに接続します。
詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
次のコマンドを実行して、ディスクとパーティションの情報を確認します。
sudo fdisk -lu
前の図に示すように、インスタンスには、システムディスク
/dev/vda
とデータディスク/dev/vdb
の2つのディスクがあります。 この例では、データディスク/dev/vdb
が使用されています。 コマンド出力に表示される次の情報に注意してください。①: ディスクのデバイス名。
②: ディスクがパーティション分割されているかどうかとパーティションの名前を示します。
パーティション: ディスクがパーティション分割されている場合、パーティション情報はセクション ② に表示されます。 デバイスはパーティション名を示します。 この例では、パーティション名は
/dev/vdb1
です。 番号1
はパーティション番号を示します。 この場合、ディスクのパーティションとファイルシステムを拡張する必要があります。Not partitioned (raw device): ディスクがrawデバイスの場合、セクション ② にパーティション情報は表示されません。 この場合、手順1: パーティションの拡張をスキップし、手順2: ファイルシステムの拡張に進みます。
③: ディスクのパーティションスタイル。
[ディスクラベルタイプ]
の値が[dos]
の場合、MBRパーティションスタイルが使用されます。 値がgpt
の場合、GPTパーティションスタイルが使用されます。説明値はオペレーティングシステムによって異なります。
[ディスクラベルの種類]
フィールドが表示されない場合は、[システム]
フィールドをチェックしてパーティションスタイルを確認します。System
の値がLinux
の場合、MBRパーティションスタイルが使用されます。 値がGPT
の場合、GPTパーティションスタイルが使用されます。以前のバージョンのfdiskを使用している場合、GPTパーティションスタイルが表示されない場合があります。 パーティションスタイルを確認するには、
gdisk -l /dev/vdb
コマンドを実行します。
④: パーティションを拡張する必要があるかどうかを示します。
ディスクまたはパーティションの容量は、次の式を使用して計算されます。ディスクまたはパーティションのセクタ数 × 512バイト。
上の図では、
/dev/vdb
ディスクのセクタ数は125,829,120です。 ディスク容量は64.4 GB (または60 GiB) で、次の式を使用して計算されます。125,829,120 × 512バイト。/dev/vdb1
パーティションのセクタ数は83,886,078です。これは、次の式を使用して計算されます。 パーティション容量は42.9 GB (または40 GiB) です。これは、83,886,078 × 512バイトの式を使用して計算されます。
/dev/vdb1
パーティションの容量は、/dev/vdb
ディスクの容量よりも小さい。/dev/vdb1
パーティションを拡張する必要があります。説明lsblk
コマンドを実行して、拡張が必要なパーティションを確認することもできます。
方法2: ECSコンソールの使用
以下の点にご注意ください。
この方法は、特定のユーザーにのみ適用されます。 ECSコンソールに移動して、この方法を使用できるかどうかを確認できます。
ディスクがアタッチされているECSインスタンスにCloud Assistant Agentがインストールされていることを確認します。 詳細については、「Cloud Assistant Agentのインストール」をご参照ください。
ECSインスタンスの詳細ページに移動し、[ブロックストレージ (ディスク)] タブをクリックし、パーティションとファイルシステムを拡張する必要があるディスクを見つけます。
ポインタをセクション ① の上に移動し、セクション ② および ③ のアイコンをクリックして、ディスクのデバイス名、パーティションスタイル、パーティション名、ファイルシステムタイプ、およびマウントポイントを表示します。
ステップ1: パーティションの拡張
この例では、インスタンスはAlibaba Cloud Linux 3.2104 LTS 64ビットパブリックイメージを使用し、インスタンスの /dev/vdbディスクは60 GiBにサイズ変更され、ディスクの /dev/vdb1
パーティションは40 GiBから60 GiBに拡張されます。
(条件付き) このトピックの準備: ディスク情報の取得セクションで取得した情報が、ディスクのパーティションスタイルがMBRであり、ECSコンソールでディスクのサイズが2 TiBを超えるサイズに変更されている場合は、パーティションスタイルをGPTに変更します。
ディスクのパーティションスタイルを変更する方法については、「MBRパーティションをGPTパーティションに変換する」をご参照ください。
特定のパーティションを拡張します。 次のコマンドを実行して、インスタンスのオペレーティングシステムとディスクのパーティションスタイルに基づいて
/dev/vdb1
パーティションを拡張します。説明/dev/vdb
を区切り、コマンド内のスペースで1
します。1
は、パーティションの番号を指定します。システムディスクのパーティションを拡張する場合は、コマンドの
/dev/vdb
を/dev/vda
に置き換えます。
Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、またはCentOS 6以降
MBRパーティションのスタイル
type growpart || sudo yum install -y cloud-utils-growpart sudo yum update cloud-utils-growpart sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
GPTパーティションスタイル (gDiskをインストールする必要があります)
type growpart || sudo yum install -y cloud-utils-growpart sudo yum update cloud-utils-growpart type sgdisk || sudo yum install -y gdisk sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
説明CentOS 6とCentOS 8は寿命 (EOL) に達しました。 インスタンスがCentOS 6またはCentOS 8を実行している場合は、オペレーティングシステムのリポジトリアドレスを変更します。 詳細については、「」をご参照ください。CentOS 6リポジトリアドレスを変更するにはどうすればよいですか? CentOS 8リポジトリアドレスの変更
Debian 8以降、またはUbuntu 14以降
MBRパーティションのスタイル
sudo apt-get update sudo apt-get install -y cloud-guest-utils sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
GPTパーティションスタイル (gDiskをインストールする必要があります)
sudo apt-get update sudo apt-get install -y cloud-guest-utils type sgdisk || sudo apt-get install -y gdisk sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
重要以下の点にご注意ください。
漢字セットとの互換性を確保するため、環境変数
LC_ALL
をen_US.UTF-8に設定します。1つのディスクに連続したパーティションがある場合、最後のパーティションのみを拡張できます。 たとえば、
/dev/vdb
データディスクには、/dev/vdb1
、/dev/vdb2
、/dev/vdb3
という名前の3つのパーティションがあります。 最後のパーティション (/dev/vdb3
) のみ拡張できます。 パーティションを拡張するには、groupart /dev/vdb 3
コマンドを実行します。ディスクがデバイス名
/dev/nvme0n1
の不揮発性メモリエクスプレス (NVMe) ディスクで、/dev/nvme0n1p1
パーティションを拡張する場合は、groupart /dev/nvme0n1p1 1
コマンドの代わりにgroupart /dev/nvme0n1 1
コマンドを実行します。拡張MBRパーティションの論理パーティション (ほとんどの場合、パーティション番号が5以上) を拡張する場合は、最初に拡張MBRパーティションを拡張する必要があります。 たとえば、
/dev/vdb1
(プライマリ) 、/dev/vdb2
(拡張) 、および/dev/vdb5
(論理) のパーティションがあります。groupart /dev/vdb 2
コマンドを実行して /dev/vdb2パーティションを拡張し、次にgroupart /dev/vdb 5
コマンドを実行して /dev/vdb5パーティションを拡張する必要があります。growpartユーティリティを使用し、エラーが報告された場合は、トラブルシューティングについては、このトピックのFAQセクションを参照してください。
次の図に示すように
CHANGED
が表示されている場合、パーティションは拡張されます。(条件付きで必要)インスタンスがCentOS 6以前を実行している場合は、
reboot
コマンドを実行してインスタンスを再起動し、新しいパーティションサイズを有効にします。ほとんどの場合、インスタンスのディスクパーティションを拡張した後にインスタンスを再起動する必要はありません。 CentOS 6インスタンスのシステムディスクでパーティションを拡張する場合、またはオペレーティングシステムが以前のバージョンで新しいパーティションサイズを認識しない場合は、インスタンスを再起動して新しいパーティションサイズを有効にします。 サービスの継続性を確保するため、オフピーク時にインスタンスを再起動することを推奨します。
ステップ2: ファイルシステムの拡張
次のコマンドを実行して、ファイルシステムの種類とファイルシステムがマウントされているディレクトリを確認します。
df -Th
Type
は、ファイルシステムタイプを指定します。Mounted on
は、パーティションのマウントディレクトリを指定します。 次の図に示すコマンド出力では、/dev/vdb1
パーティション上のファイルシステムはExt4ファイルシステムであり、パーティションは /mntにマウントされています。Filesystem値にサフィックスとして数字が含まれていない場合、ディスクはrawデバイスです。 例:
/dev/vdc
ファイルシステムを拡張します。
ファイルシステムの拡張に使用されるコマンドは、ファイルシステムの種類によって異なります。 次のいずれかのコマンドを実行して、前の手順で取得したファイルシステムの種類に基づいてファイルシステムを拡張します。
説明ファイルシステムと関連するディスクの使用中にresize2fsツールを使用してファイルシステムを拡張すると、ファイルシステムでデータの問題が発生する可能性があります。 問題は、イメージカーネルのバージョンとresize2fsツールのバージョンに関連しています。 問題は、ディスクのサイズ変更操作とは関係ありません。 ディスクのスナップショットを作成して、事前にデータをバックアップすることをお勧めします。 ディスクのスナップショットを作成してディスクデータをバックアップする方法については、「スナップショットの作成」をご参照ください。
Ext2、Ext3、Ext4などのExtファイルシステム
たとえば、
/dev/vdb1
パーティションのExtファイルシステムを拡張するには、次のコマンドを実行します。sudo resize2fs /dev/vdb1
説明システムディスクのパーティションのファイルシステムを拡張するには、コマンドの
/dev/vdb1
を/dev/vda1
に置き換えます。たとえば、
/dev/vdc
rawデバイスのExtファイルシステムを拡張するには、次のコマンドを実行します。sudo resize2fs /dev/vdc
Btrfsファイルシステム
たとえば、マウントされているBtrfsファイルシステムを /mntに拡張するには、次のコマンドを実行します。
sudo btrfs filesystem resize max /mnt
たとえば、マウントされているXFSファイルシステムを /mntに拡張するには、インスタンスのオペレーティングシステムに基づいて次のいずれかのコマンドを実行します。
Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、またはCentOS 6以降
type xfs_growfs || sudo yum install -y xfsprogs sudo xfs_growfs /mnt
Debian 8以降、またはUbuntu 14以降
type xfs_growfs || sudo apt-get install -y xfsprogs sudo xfs_growfs /mnt
次のコマンドを実行して、ファイルシステムが拡張されているかどうかを確認します。
df -Th
コマンド出力に表示されるファイルシステムサイズがECSコンソールに表示されるファイルシステムサイズと同じである場合、ファイルシステムは拡張されます。
次の図に示す
/dev/vdb1
パーティションのファイルシステムサイズ (59 GiB) は、ECSコンソールに表示されるファイルシステムサイズ (60 GiB) に近く、ファイルシステムが拡張されていることを示しています。 ファイルシステム情報がストレージスペースを使用するため、サイズの違いがあります。ファイルシステムを拡張した後、ファイルシステムのサイズを確認します。
ファイルシステムサイズが指定された値に増加し、インスタンス上のビジネスアプリケーションが期待どおりに実行されると、ファイルシステムが拡張されます。
ファイルシステムのサイズが指定された値まで増加していない場合は、作成したスナップショットを使用してディスクをロールバックします。 詳細については、「スナップショットを使用したディスクのロールバック」をご参照ください。
例
このセクションでは、パーティションとファイルシステムを拡張するために使用できるサンプルコマンドを提供します。 この例では、MBRパーティション、GPTパーティション、およびrawディスクが使用されます。 コマンドは参照用です。 実際のコマンドは、環境によって異なる場合があります。
例1: MBRパーティションの拡張とパーティションのExt4ファイルシステム
デバイス名: /dev/vda (システムディスク)
パーティション: /dev/vda1
ファイルシステムタイプ: Ext4
オペレーティングシステム: Alibaba Cloud Linux 3
次のコマンドを実行して、/dev/vda1パーティションとパーティションのExt4ファイルシステムを拡張します。
type growpart || sudo yum install -y cloud-utils-growpart
sudo yum update cloud-utils-growpart
sudo LC_ALL=en_US.UTF-8 growpart /dev/vda 1
sudo resize2fs /dev/vda1
例2: GPTパーティションの拡張とパーティションのXFSファイルシステム
デバイス名: /dev/vdb (データディスク)
2つのパーティション: /dev/vdb1と /dev/vdb2
ファイルシステムタイプ: XFS
/dev/vdb2がマウントされているディレクトリ: /mnt
オペレーティングシステム: Debian 12
次のコマンドを実行して、/dev/vdb2パーティションとパーティションのXFSファイルシステムを拡張します。
sudo apt-get update
sudo apt-get install -y cloud-guest-utils
type sgdisk || sudo apt-get install -y gdisk
sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 2
type xfs_growfs || sudo apt-get install -y xfsprogs
sudo xfs_growfs /mnt
例3: 生データディスクのファイルシステムの拡張
デバイス名: /dev/vdc (パーティション分割されていない生データディスク)
ファイルシステムタイプ: Ext4
オペレーティングシステム: CentOS 7
次のコマンドを実行して、/dev/vdcディスクのExt4ファイルシステムを拡張します。
sudo resize2fs /dev/vdc
よくある質問
問題が発生し、問題を解決できない場合は、DingTalkグループ (ID: 25920014655) に参加してAlibaba Cloudエンジニアに連絡してください。