ECSコンソールでElastic Compute Service (ECS) インスタンスのディスクのサイズを変更すると、ディスク上のパーティションとファイルシステムはディスクとともに自動的に拡張されません。 新しいディスクサイズを有効にするには、ディスク上のパーティションとファイルシステムを追加のディスクスペースに手動で拡張する必要があります。 このトピックでは、Linux ECSインスタンスのディスク上のパーティションとファイルシステムを2つの手順で拡張する方法について説明します。
前提条件
Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、CentOS 6以降、Debian 8以降、またはUbuntu 14以降を実行するECSインスタンスが作成されます。
重要CentOS 6インスタンス上のディスクを2 TiBを超えるサイズに拡張するか、ディスク上のGUIDパーティションテーブル (GPT) スキームでパーティションを拡張するには、
parted
コマンドを実行します。 詳細については、「Linuxインスタンスのデータディスク上のパーティションとファイルシステムのオフライン拡張」をご参照ください。 このトピックで説明するgrowpart
コマンドは使用しないでください。 そうしないと、パーティションテーブルが破損する可能性があります。 ディスクがGPTパーティション分割されているかどうかを確認します。 詳細については、このトピックの「準備: ディスク情報の取得」を参照してください。別のオペレーティングシステムを実行するインスタンスのディスク上のパーティションとファイルシステムを拡張する方法については、「Linuxインスタンスのデータディスク上のパーティションとファイルシステムをオフラインで拡張する」をご参照ください。
ECSコンソールでインスタンスのディスクのサイズが変更されます。 詳細については、「手順1: ディスクのサイズを変更して容量を拡張する」をご参照ください。
(推奨) ディスクのスナップショットを作成してディスクデータをバックアップします。 詳細については、「ディスクのスナップショットの作成」をご参照ください。
説明ほとんどの場合、パーティションとファイルシステムを拡張してもデータが失われることはありません。 偶発的な操作によるデータ損失や例外を防ぐために、ディスクデータをバックアップするためのスナップショットを作成することを推奨します。
このトピックは、マルチアタッチ機能が有効になっていて、クラスターファイルシステムが使用されているシナリオには適用されません。 詳細については、「マルチアタッチの有効化」をご参照ください。
手順
このトピックで説明する操作は、次のシナリオに適しています。
Linuxインスタンスのディスクのサイズを変更し、ディスク上の既存のパーティションを追加されたディスク領域に拡張する必要があります。
説明既存のパーティションを拡張する代わりに、追加されたディスクスペースにパーティションを作成することもできます。 詳細については、「Linuxインスタンスのデータディスク上のオフライン拡張パーティションとファイルシステム」をご参照ください。
Linuxインスタンスのrawディスク (パーティション分割されていないディスク) のサイズを変更しました。 この場合、手順1: パーティションの拡張をスキップし、手順2: ファイルシステムの拡張に進みます。
このトピックでは、パーティションとファイルシステムを拡張するために使用できるサンプルコマンドについても説明します。 この例では、Master Boot Record (MBR) とGPTパーティション、およびrawディスクが使用されています。
準備: ディスク情報の取得
ディスク上のパーティションとファイルシステムを拡張する前に、ディスクとパーティションの情報を取得します。
方法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コンソールに移動して、この方法を使用できるかどうかを確認できます。
ディスクがアタッチされているインスタンスにCloud Assistant Agentをインストールする必要があります。 詳細については、「Cloud Assistant Agentのインストール」をご参照ください。
[インスタンスの詳細] ページの [クラウドディスク] タブで、パーティションを拡張する必要があるディスクを見つけます。
ポインタを ① セクションの上に移動し、② および ③ セクションのアイコンをクリックして、サイズ変更するディスクのデバイス名、パーティションスタイル、パーティション名、ファイルシステムタイプ、およびマウントポイントを表示します。
ステップ1: パーティションの拡張
この例では、インスタンスはAlibaba Cloud Linux 2.1903 LTS 64ビットパブリックイメージを使用し、インスタンスのディスクは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パーティションのスタイル
型growpart | | sudo yum install -y cloud-utils-growpart sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
GPTパーティションスタイル (gDiskをインストールする必要があります)
型growpart | | sudo yum install -y cloud-utils-growpart タイプ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アップデート type growpart | | sudo apt-get install -y cloud-guest-utils sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
GPTパーティションスタイル (gDiskをインストールする必要があります)
sudo apt-getアップデート type growpart | | sudo apt-get install -y cloud-guest-utils 型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/nvme0n1p1
の不揮発性メモリエクスプレス (NVMe) ディスクで、/dev/nvme0n1p1
パーティションを拡張する場合は、groupart /dev/nvme0n1p1 1
の代わりにgroupart /dev/nvme0n1 1
コマンドを実行します。拡張MBRパーティションの論理パーティション (ほとんどの場合、パーティション番号が5以上) を拡張する場合は、最初に拡張パーティションを拡張する必要があります。 たとえば、
/dev/vdb1
(プライマリ) 、/dev/vdb2
(拡張) 、および/dev/vdb5
(論理) のパーティションがあります。groupart /dev/vdb 2
コマンドを実行して /dev/vdb2を拡張し、次にgroupart /dev/vdb 5
コマンドを実行して /dev/vdb 5を拡張する必要があります。growpartユーティリティを使用し、エラーが報告された場合は、トラブルシューティングについては、このトピックのFAQセクションを参照してください。
次の図に示すように
CHANGED
が表示されている場合、パーティションは拡張されます。(条件付きで必要) インスタンスがCentOS 6以前を実行して新しいパーティションサイズが有効になる場合は、
reboot
コマンドを実行してインスタンスを再起動します。ほとんどの場合、インスタンスのディスクパーティションを拡張した後にインスタンスを再起動する必要はありません。 CentOS 6インスタンスのシステムディスクでパーティションを拡張する場合、またはオペレーティングシステムが初期バージョンで新しいパーティションサイズが認識されない場合は、インスタンスを再起動して新しいパーティションサイズを有効にします。 サービスの継続性を確保するため、オフピーク時にインスタンスを再起動することを推奨します。
ステップ2: ファイルシステムの拡張
次のコマンドを実行して、ファイルシステムの種類とファイルシステムがマウントされているディレクトリを確認します。
df -Th
Type
は、ファイルシステムのタイプを示します。[マウント済み]
は、パーティションのマウントディレクトリを示します。 次の図に示すコマンド出力では、/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
XFSファイルシステム
たとえば、マウントされているXFSファイルシステムを /mntに拡張するには、インスタンスのオペレーティングシステムに基づいて次のコマンドを実行します。
Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、またはCentOS 6以降
タイプxfs_growfs | | sudo yum install -y xfsprogs sudo xfs_growfs /mnt
Debian 8以降、Ubuntu 14以降
タイプxfs_growfs | | sudo apt-get install -y xfsprogs sudo xfs_growfs /mnt
btrfsファイルシステム
たとえば、マウントされているbtrfsファイルシステムを /mntに拡張するには、次のコマンドを実行します。
sudo btrfsファイルシステムのサイズ変更max /mnt
次のコマンドを実行して、ファイルシステムが拡張されているかどうかを確認します。
df -Th
コマンド出力に表示されるファイルシステムサイズがECSコンソールに表示されるファイルシステムサイズと同じである場合、ファイルシステムは拡張されます。
次の図に示す
/dev/vdb1
パーティションのファイルシステムサイズ (59 GiB) は、ECSコンソールに表示されるファイルシステムサイズ (60 GiB) と基本的に同じです。 これは、ファイルシステムが拡張されていることを示します。ファイルシステムを拡張した後、ファイルシステムのサイズが指定された値と同じかどうかを確認します。
ファイルシステムサイズが指定された値に増加し、インスタンス上のビジネスアプリケーションが期待どおりに実行されると、ファイルシステムが拡張されます。
ファイルシステムのサイズが指定された値まで増加していない場合は、作成したスナップショットを使用してディスクをロールバックします。 詳細については、「スナップショットを使用したディスクのロールバック」をご参照ください。
例
このセクションでは、パーティションとファイルシステムを拡張するために使用できるサンプルコマンドを提供します。 この例では、MBRおよびGPTパーティションと生ディスクが使用されています。 コマンドは参照用です。 実際のコマンドは、環境によって異なる場合があります。
例1: MBRパーティションの拡張とパーティションのext4ファイルシステム
デバイス名: /dev/vda (システムディスク)
パーティション: /dev/vda1
ファイルシステムタイプ: ext4
オペレーティングシステム: Alibaba Cloud Linux 2.1903
次のコマンドを実行して、/dev/vdb 2パーティションとそのパーティションのXFSファイルシステムを拡張します。
型growpart | | sudo yum install -y 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/vdb 2パーティションとそのパーティションのXFSファイルシステムを拡張します。
sudo apt-getアップデート
type growpart | | sudo apt-get install -y cloud-guest-utils
型sgdisk | | sudo apt-get install -y gdisk
sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 2
タイプ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グループ25920014655に参加してAlibaba Cloudエンジニアに連絡してください。
groupartについてのFAQ
質問: groupartコマンドを実行してパーティションを拡張すると、
sfdisk -- version [sfdisk, from util-linux 2.23.2]
で予期しない出力が表示されるのはなぜですか?原因: インスタンスの中国語オペレーティングシステムは、en_US.UTF-8以外の文字エンコードタイプを使用しています。
解決策:
locale
コマンドを実行して、インスタンスの文字エンコードタイプを確認します。 文字エンコードタイプがen_US.UTF-8でない場合は、en_US.UTF-8に切り替えます。次のコマンドを実行して、文字エンコードの種類を変更します。
エクスポートLANG=en_US.UTF-8
問題が解決しない場合は、次のコマンドを実行して、文字エンコードの種類を変更します。
LC_ALL=en_US.UTF-8のエクスポート
エラーが解決しない場合は、
reboot
コマンドを実行してインスタンスを再起動します。
重要文字エンコードタイプを変更した後にパーティションを拡張する場合は、元の文字エンコードタイプに戻すことをお勧めします。
質問: groupartコマンドを実行してパーティションを拡張すると、
sfdisk -- version [sfdisk (util-linux-ng 2.17.2)]
で予期しない出力が表示されるのはなぜですか?原因: fdiskバージョンがgrowpartバージョンと互換性がありません。
解決策: growpartをバージョン0.27にダウングレードします。 問題が解決しない場合は、「オフライン拡張パーティションとLinuxインスタンスのデータディスクのファイルシステム」トピックで説明されている手順を実行して、パーティションを拡張します。
質問: growpartコマンドを実行してパーティションを拡張すると、
FAILED: unable to determine partition type
エラーメッセージが表示されるのはなぜですか。原因: ディスクはパーティション化されていない生のデバイスです。 パーティションを拡張する必要はありませんが、ディスク上のファイルシステムを拡張する必要があります。
解決策: このトピックのステップ2: ファイルシステムの拡張セクションで説明されている操作を実行します。
質問: なぜ
WARNING: MBR/dosパーティションディスクが2テラバイトより大きいのか。 groupartコマンドを実行してパーティションを拡張
と、エラーメッセージが表示される、追加のスペースは使用されませんか?原因: MBRパーティションスタイルは、サイズが2 TiBを超えるディスクをサポートしていません。
解決策: ディスクをMBRからGPTに変換してから、ディスク上のパーティションを拡張します。 詳細については、「MBRパーティションをGPTパーティションに変換」をご参照ください。
質問:
Wmkdir: がディレクトリを作成できないのはなぜですか... growpartコマンドを実行してパーティションを拡張すると、デバイスの
エラーメッセージが表示されるスペースがありませんか?原因: ディスク容量が不足しており、growpartコマンドで一時ディレクトリを作成できません。
解決策: 不要になったファイルを削除して、もう一度お試しください。
質問: CentOS 6にgrowpartユーティリティをインストールすると、
エラー: リポジトリメタデータを取得できません
エラーメッセージが表示されるのはなぜですか。原因: CentOS6がEOLに達しました。 CentOS 6パッケージは、デフォルトのリポジトリを使用してインストールできません。
解決策:
CentOS 6のYUMリポジトリアドレスを変更します。 詳細については、「CentOS 6ソースアドレスの変更」をご参照ください。
説明CentOS6はEOLに到達しました。 YUMを使用してCentOSソフトウェアパッケージをインストールするには、CentOS 6のYUMリポジトリアドレスを変更する必要があります。
次のコマンドを実行してgrowpartユーティリティをインストールします。
type growpart | | sudo yum install -y cloud-utils-growpart
問題が解決しない場合は、「オフライン拡張パーティションとLinuxインスタンスのデータディスク上のファイルシステム」に記載されている手順を実行して、パーティションを拡張します。
原因: 名前が
/dev/mapper
で始まるデバイスのパーティションの拡張に失敗しました。原因: 通常、名前が
/dev/mapper
で始まるデバイスは、Logical Volume Manager (LVM) によって管理されます。解決策: LVMを使用して論理ボリューム (LV) を拡張し、ファイルシステムを拡張する必要があります。 詳細については、「LVMを使用したLVの拡張」をご参照ください。
質問: growpartコマンドを実行してパーティションを拡張すると、
NOCHANGE: partition 1を2015 [fudge=2048]
エラーメッセージが表示されるのはなぜですか?原因: パーティションを拡張するときに使用できるスペースがありません。 ほとんどの場合、これは、ECSコンソールでインスタンスを再起動しなかったか、ECSコンソールでディスクのサイズをオフラインで変更した後に新しいディスクサイズを有効にするAPI操作を呼び出したためです。
解決策: ディスクのサイズをオフラインで変更した後、ECSコンソールでインスタンスを再起動するか、APIを呼び出して新しいディスクサイズを有効にする必要があります。
reboot
コマンドを実行してインスタンス内からインスタンスを再起動した場合、新しいディスクサイズは有効になりません。 詳細については、「インスタンスの再起動」および「RebootInstance」をご参照ください。
resize2fsに関するFAQ
質問: resize2fsコマンドを実行してファイルシステムを拡張すると、次の情報が表示されるのはなぜですか。
resize2fs: /dev/vdaを開こうとしたときにデバイスまたはリソースがビジー 有効なファイルシステムのスーパーブロックが見つかりませんでした。
または
open: /mntを開くときのディレクトリです
原因: resize2fsコマンドを実行してパーティション上のファイルシステムを拡張する場合、ディスクのデバイス名またはパーティションのマウントディレクトリではなく、パーティション名を指定する必要があります。
解決策: ファイルシステムを拡張するときに正しいパーティション名を指定します。
質問: なぜは
ですかファイルシステムはすでに... 長いブロック。 何もしない!
resize2fsコマンドを実行してファイルシステムを拡張すると、エラーメッセージが表示されますか?原因: ファイルシステムを拡張するためのディスク領域がありません。 これは、無効なパーティション拡張操作によって引き起こされる可能性があります。
解決策:
growpartコマンドを実行してパーティションを拡張するかどうかを確認します。 そうでない場合は、growpartコマンドを実行してパーティションを拡張します。
growpartコマンドを実行してパーティションを拡張すると、
CHANGED
が表示され、resize2fsコマンドを実行しても前述のエラーメッセージが返される場合、インスタンスのオペレーティングシステムは、システムパーティションテーブルをオンラインで更新できない以前のバージョンである可能性があります。reboot
コマンドを実行してインスタンスを再起動し、resize2fsコマンドを実行します。
質問: resize2fsコマンドを実行してファイルシステムを拡張すると、
resize2fs: Permission denied to resize filesystem
というエラーメッセージが表示されるのはなぜですか。原因: ファイルシステムの不整合が発生する可能性があります。
解決策:
dmesg -T | grep fs
コマンドを実行します。 コマンド出力に次のようなエラーメッセージが表示されると、ファイルシステムにエラーがあります
、ファイルシステムの不整合が発生します。ディスクのデータをバックアップします。 詳細については、「ディスクのスナップショットの作成」をご参照ください。
ビジネスに影響がないという前提で、
umount
コマンドを実行して、実際の条件に基づいて、マウントされたパーティションまたはディスク全体をマウント解除します。説明umount
コマンドを使用してシステムディスクをアンマウントできない場合は、システムディスクをデタッチしてから、ディスクを別のインスタンスに接続します。 詳細については、「システムディスクのデタッチまたはアタッチ」をご参照ください。e2fsck
コマンドを実行して問題を解決します。e2fsck
コマンドの使用方法については、関連ドキュメントを参照してください。