如果收到檔案系統上沒有剩餘空間的錯誤,如何增加 EBS 磁碟區的大小?

3 分的閱讀內容
0

我想要增加 Amazon Elastic Block Store (Amazon EBS) 磁碟區的大小。但是,我收到我的檔案系統上沒有剩餘空間的錯誤。

簡短描述

在嘗試擴增 EBS 磁碟區上的根分割區或根檔案系統時,您可能會收到儲存設備上沒有剩餘空間的錯誤。若要避免此錯誤,請使用虛擬記憶體中的暫存檔案系統 (tmpfs)。在 /tmp 掛載點下掛載 tmpfs 檔案系統,然後擴增您的根分割區或根檔案系統。

下列範例會顯示根 EBS 磁碟區區塊型儲存設備 (/dev/nvme0n1) 為 9 GiB,而根分割區 (分割區 1) 則已有 8 GiB:

$ lsblkNAME          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 1CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=18870239 end=18874335
FAILED: failed: sfdisk --list /dev/nvme0n1

**注意事項:**繼續之前,最佳實踐是建立執行個體的 Amazon Machine Image (AMI) 備份。或者,建立連接至執行個體的根 EBS 磁碟區快照。備份可讓您在發生預料之外的問題時復原資料。

解決方案

  1. 使用 SSH 連線至 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體

  2. 使用 df-h 命令驗證 / 下掛載的根分割區是否已滿 (100%)。在下列範例中,/dev/nvme0n1p1 會使用其 100% 的空間:

    $ df -hFilesystem      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

    若要收集關於已連接的區塊型儲存設備和根 / 掛載點的詳細資訊,請執行下列命令:

    $ lsblkNAME          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 -fNAME          FSTYPE LABEL           UUID                                 MOUNTPOINT
    nvme0n1
    ├─nvme0n1p1   xfs    /               afcf1342-1d40-41bd-bde9-e4ea5d87e3b6 /
    └─nvme0n1p128

    在此範例輸出中,根 EBS 磁碟區的總空間為 9 GiB。但是,根分割區 (/dev/nvme0n1p1) 或分割區 1 僅為 8 GiB。檔案系統類型為 XFS。

  3. 若要避免區塊型儲存設備上沒有剩餘空間的錯誤,請將暫存檔案系統 tmpfs 掛載至 /tmp 掛載點。這會建立掛載至 /tmp 的 10 M tmpfs

    $ sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
  4. 若要增加根分割區或分割區 1 的大小,請執行 growpart 命令。將 /dev/nvme0n1 取代為您的根分割區:

    $ sudo growpart /dev/nvme0n1 1 CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=18870239 end=18874335
  5. 若要驗證您是否將分割區的 1 Gib 擴增到 9 GiB,請執行 lsblk 命令:

    $ lsblkNAME          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 命令來驗證作業系統是否可以查看額外的空間:

    $ df -hFilesystem      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. 若要卸載 tmpfs 檔案系統,請執行 unmount 命令:

    $ sudo umount /tmp
AWS 官方
AWS 官方已更新 8 個月前