すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Linuxインスタンス上のディスクのパーティションとファイルシステムを拡張する

最終更新日:Feb 27, 2024

ECSコンソールでElastic Compute Service (ECS) インスタンスのディスクのサイズを変更すると、ディスク上のパーティションとファイルシステムはディスクとともに自動的に拡張されません。 新しいディスクサイズを有効にするには、ディスク上のパーティションとファイルシステムを追加のディスクスペースに手動で拡張する必要があります。 このトピックでは、Linux ECSインスタンスのディスク上のパーティションとファイルシステムを2つの手順で拡張する方法について説明します。

前提条件

  • Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、CentOS 6以降、Debian 8以降、またはUbuntu 14以降を実行するECSインスタンスが作成されます。

    重要
  • ECSコンソールでインスタンスのディスクのサイズが変更されます。 詳細については、「手順1: ディスクのサイズを変更して容量を拡張する」をご参照ください。

  • (推奨) ディスクのスナップショットを作成してディスクデータをバックアップします。 詳細については、「ディスクのスナップショットの作成」をご参照ください。

    説明

    ほとんどの場合、パーティションとファイルシステムを拡張してもデータが失われることはありません。 偶発的な操作によるデータ損失や例外を防ぐために、ディスクデータをバックアップするためのスナップショットを作成することを推奨します。

  • このトピックは、マルチアタッチ機能が有効になっていて、クラスターファイルシステムが使用されているシナリオには適用されません。 詳細については、「マルチアタッチの有効化」をご参照ください。

手順

このトピックで説明する操作は、次のシナリオに適しています。

このトピックでは、パーティションとファイルシステムを拡張するために使用できるサンプルコマンドについても説明します。 この例では、Master Boot Record (MBR) とGPTパーティション、およびrawディスクが使用されています。

準備: ディスク情報の取得

ディスク上のパーティションとファイルシステムを拡張する前に、ディスクとパーティションの情報を取得します。

方法1: CLIの使用

  1. ECS インスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、ディスクとパーティションの情報を確認します。

    sudo fdisk -lu

    image.png

    次の図に示すように、インスタンスには、システムディスク /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. [インスタンスの詳細] ページの [クラウドディスク] タブで、パーティションを拡張する必要があるディスクを見つけます。

  2. ポインタを ① セクションの上に移動し、② および ③ セクションのimageアイコンをクリックして、サイズ変更するディスクのデバイス名、パーティションスタイル、パーティション名、ファイルシステムタイプ、およびマウントポイントを表示します。

    image

ステップ1: パーティションの拡張

この例では、インスタンスはAlibaba Cloud Linux 2.1903 LTS 64ビットパブリックイメージを使用し、インスタンスのディスクは60 GiBにサイズ変更され、ディスクの /dev/vdb1パーティションは40 GiBから60 GiBに拡張されています。

  1. (条件付きで必要) ディスクのパーティションスタイルがMBRで、ECSコンソールでディスクのサイズが2 TiBを超える場合は、パーティションスタイルをGPTに変更します。 このトピックの「準備: ディスク情報の取得」セクションで取得した情報に基づいて、ディスクのパーティションスタイルを決定します。

    ディスクのパーティションスタイルを変更する方法については、「MBRパーティションをGPTパーティションに変換する」をご参照ください。

  2. 特定のパーティションを拡張します。 次のコマンドを実行して、インスタンスのオペレーティングシステムとディスクのパーティションスタイルに基づいて /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が表示されている場合、パーティションは拡張されます。

    image.png

  3. (条件付きで必要) インスタンスがCentOS 6以前を実行して新しいパーティションサイズが有効になる場合は、rebootコマンドを実行してインスタンスを再起動します。

    ほとんどの場合、インスタンスのディスクパーティションを拡張した後にインスタンスを再起動する必要はありません。 CentOS 6インスタンスのシステムディスクでパーティションを拡張する場合、またはオペレーティングシステムが初期バージョンで新しいパーティションサイズが認識されない場合は、インスタンスを再起動して新しいパーティションサイズを有効にします。 サービスの継続性を確保するため、オフピーク時にインスタンスを再起動することを推奨します。

ステップ2: ファイルシステムの拡張

  1. 次のコマンドを実行して、ファイルシステムの種類とファイルシステムがマウントされているディレクトリを確認します。

    df -Th

    Typeは、ファイルシステムのタイプを示します。 [マウント済み] は、パーティションのマウントディレクトリを示します。 次の図に示すコマンド出力では、/dev/vdb1パーティション上のファイルシステムはext4ファイルシステムであり、パーティションは /mntにマウントされています。

    image.png

    Filesystem値にサフィックスとして数字が含まれていない場合、ディスクはrawデバイスです。 例: /dev/vdc

  2. ファイルシステムを拡張します。

    ファイルシステムの拡張に使用されるコマンドは、ファイルシステムの種類によって異なります。 次のいずれかのコマンドを実行して、前の手順で取得したファイルシステムの種類に基づいてファイルシステムを拡張します。

    説明

    ファイルシステムとその関連ディスクを使用しているときに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
  3. 次のコマンドを実行して、ファイルシステムが拡張されているかどうかを確認します。

    df -Th

    コマンド出力に表示されるファイルシステムサイズがECSコンソールに表示されるファイルシステムサイズと同じである場合、ファイルシステムは拡張されます。

    次の図に示す /dev/vdb1パーティションのファイルシステムサイズ (59 GiB) は、ECSコンソールに表示されるファイルシステムサイズ (60 GiB) と基本的に同じです。 これは、ファイルシステムが拡張されていることを示します。image.png

    ファイルシステムを拡張した後、ファイルシステムのサイズが指定された値と同じかどうかを確認します。

    • ファイルシステムサイズが指定された値に増加し、インスタンス上のビジネスアプリケーションが期待どおりに実行されると、ファイルシステムが拡張されます。

    • ファイルシステムのサイズが指定された値まで増加していない場合は、作成したスナップショットを使用してディスクをロールバックします。 詳細については、「スナップショットを使用したディスクのロールバック」をご参照ください。

このセクションでは、パーティションとファイルシステムを拡張するために使用できるサンプルコマンドを提供します。 この例では、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

  1. 質問: groupartコマンドを実行してパーティションを拡張すると、sfdisk -- version [sfdisk, from util-linux 2.23.2] で予期しない出力が表示されるのはなぜですか?

    原因: インスタンスの中国語オペレーティングシステムは、en_US.UTF-8以外の文字エンコードタイプを使用しています。

    解決策:

    1. localeコマンドを実行して、インスタンスの文字エンコードタイプを確認します。 文字エンコードタイプがen_US.UTF-8でない場合は、en_US.UTF-8に切り替えます。

      1. 次のコマンドを実行して、文字エンコードの種類を変更します。

        エクスポートLANG=en_US.UTF-8
      2. 問題が解決しない場合は、次のコマンドを実行して、文字エンコードの種類を変更します。

        LC_ALL=en_US.UTF-8のエクスポート
    2. エラーが解決しない場合は、rebootコマンドを実行してインスタンスを再起動します。

    重要

    文字エンコードタイプを変更した後にパーティションを拡張する場合は、元の文字エンコードタイプに戻すことをお勧めします。

  2. 質問: groupartコマンドを実行してパーティションを拡張すると、sfdisk -- version [sfdisk (util-linux-ng 2.17.2)] で予期しない出力が表示されるのはなぜですか?

    原因: fdiskバージョンがgrowpartバージョンと互換性がありません。

    解決策: growpartをバージョン0.27にダウングレードします。 問題が解決しない場合は、「オフライン拡張パーティションとLinuxインスタンスのデータディスクのファイルシステム」トピックで説明されている手順を実行して、パーティションを拡張します。

  3. 質問: growpartコマンドを実行してパーティションを拡張すると、FAILED: unable to determine partition typeエラーメッセージが表示されるのはなぜですか。

    原因: ディスクはパーティション化されていない生のデバイスです。 パーティションを拡張する必要はありませんが、ディスク上のファイルシステムを拡張する必要があります。

    解決策: このトピックのステップ2: ファイルシステムの拡張セクションで説明されている操作を実行します。

  4. 質問: なぜWARNING: MBR/dosパーティションディスクが2テラバイトより大きいのか。 groupartコマンドを実行してパーティションを拡張と、エラーメッセージが表示される、追加のスペースは使用されませんか?

    原因: MBRパーティションスタイルは、サイズが2 TiBを超えるディスクをサポートしていません。

    解決策: ディスクをMBRからGPTに変換してから、ディスク上のパーティションを拡張します。 詳細については、「MBRパーティションをGPTパーティションに変換」をご参照ください。

  5. 質問: Wmkdir: がディレクトリを作成できないのはなぜですか... growpartコマンドを実行してパーティションを拡張すると、デバイスのエラーメッセージが表示されるスペースがありませんか?

    原因: ディスク容量が不足しており、growpartコマンドで一時ディレクトリを作成できません。

    解決策: 不要になったファイルを削除して、もう一度お試しください。

  6. 質問: CentOS 6にgrowpartユーティリティをインストールすると、エラー: リポジトリメタデータを取得できませんエラーメッセージが表示されるのはなぜですか。

    原因: CentOS6がEOLに達しました。 CentOS 6パッケージは、デフォルトのリポジトリを使用してインストールできません。

    解決策:

    1. CentOS 6のYUMリポジトリアドレスを変更します。 詳細については、「CentOS 6ソースアドレスの変更」をご参照ください。

      説明

      CentOS6はEOLに到達しました。 YUMを使用してCentOSソフトウェアパッケージをインストールするには、CentOS 6のYUMリポジトリアドレスを変更する必要があります。

    2. 次のコマンドを実行してgrowpartユーティリティをインストールします。

      type growpart | | sudo yum install -y cloud-utils-growpart
    3. 問題が解決しない場合は、「オフライン拡張パーティションとLinuxインスタンスのデータディスク上のファイルシステム」に記載されている手順を実行して、パーティションを拡張します。

  7. 原因: 名前が /dev/mapperで始まるデバイスのパーティションの拡張に失敗しました。

    原因: 通常、名前が /dev/mapperで始まるデバイスは、Logical Volume Manager (LVM) によって管理されます。

    解決策: LVMを使用して論理ボリューム (LV) を拡張し、ファイルシステムを拡張する必要があります。 詳細については、「LVMを使用したLVの拡張」をご参照ください。

  8. 質問: growpartコマンドを実行してパーティションを拡張すると、NOCHANGE: partition 1を2015 [fudge=2048] エラーメッセージが表示されるのはなぜですか?

    原因: パーティションを拡張するときに使用できるスペースがありません。 ほとんどの場合、これは、ECSコンソールでインスタンスを再起動しなかったか、ECSコンソールでディスクのサイズをオフラインで変更した後に新しいディスクサイズを有効にするAPI操作を呼び出したためです。

    解決策: ディスクのサイズをオフラインで変更した後、ECSコンソールでインスタンスを再起動するか、APIを呼び出して新しいディスクサイズを有効にする必要があります。 rebootコマンドを実行してインスタンス内からインスタンスを再起動した場合、新しいディスクサイズは有効になりません。 詳細については、「インスタンスの再起動」および「RebootInstance」をご参照ください。

resize2fsに関するFAQ

  1. 質問: resize2fsコマンドを実行してファイルシステムを拡張すると、次の情報が表示されるのはなぜですか。

    resize2fs: /dev/vdaを開こうとしたときにデバイスまたはリソースがビジー
    有効なファイルシステムのスーパーブロックが見つかりませんでした。

    または

    open: /mntを開くときのディレクトリです

    原因: resize2fsコマンドを実行してパーティション上のファイルシステムを拡張する場合、ディスクのデバイス名またはパーティションのマウントディレクトリではなく、パーティション名を指定する必要があります。

    解決策: ファイルシステムを拡張するときに正しいパーティション名を指定します。

  2. 質問: なぜですかファイルシステムはすでに... 長いブロック。 何もしない! resize2fsコマンドを実行してファイルシステムを拡張すると、エラーメッセージが表示されますか?

    原因: ファイルシステムを拡張するためのディスク領域がありません。 これは、無効なパーティション拡張操作によって引き起こされる可能性があります。

    解決策:

    1. growpartコマンドを実行してパーティションを拡張するかどうかを確認します。 そうでない場合は、growpartコマンドを実行してパーティションを拡張します。

    2. growpartコマンドを実行してパーティションを拡張すると、CHANGEDが表示され、resize2fsコマンドを実行しても前述のエラーメッセージが返される場合、インスタンスのオペレーティングシステムは、システムパーティションテーブルをオンラインで更新できない以前のバージョンである可能性があります。 rebootコマンドを実行してインスタンスを再起動し、resize2fsコマンドを実行します。

  3. 質問: resize2fsコマンドを実行してファイルシステムを拡張すると、resize2fs: Permission denied to resize filesystemというエラーメッセージが表示されるのはなぜですか。

    原因: ファイルシステムの不整合が発生する可能性があります。

    解決策:

    1. dmesg -T | grep fsコマンドを実行します。 コマンド出力に次のようなエラーメッセージが表示されると、ファイルシステムにエラーがあります、ファイルシステムの不整合が発生します。

    2. ディスクのデータをバックアップします。 詳細については、「ディスクのスナップショットの作成」をご参照ください。

    3. ビジネスに影響がないという前提で、umountコマンドを実行して、実際の条件に基づいて、マウントされたパーティションまたはディスク全体をマウント解除します。

      説明

      umountコマンドを使用してシステムディスクをアンマウントできない場合は、システムディスクをデタッチしてから、ディスクを別のインスタンスに接続します。 詳細については、「システムディスクのデタッチまたはアタッチ」をご参照ください。

    4. e2fsckコマンドを実行して問題を解決します。 e2fsckコマンドの使用方法については、関連ドキュメントを参照してください。