Ubuntu Server延伸Disk與LVM的空間

Ubuntu Server延伸Disk與LVM的空間

$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              1.2G  7.7M  1.2G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   97G   76G   17G  82% /

話說,早期自架 Kubernetes 的 Ubuntu Server,不小心由 PoC 轉正之後,各項 Pod 服務陸續上線。但 PoC 的規格沒開到那麼好,近期發現, LVM(Logical Volume Manager)空間使用率已超過 8 成。在 IT 同事擴充 Disk 容量後,不論 Windows 或 Ubuntu 都一樣,還需要在 OS 層級些設定調整。以下學習一下 Ubuntu Server 如何做延伸 Disk 與 LVM 兩者的磁碟容量。

這類磁碟異動有其風險,記得先快照一下再進行以下作業。

parted

一般來說,你查詢到 Linux 的 Disk 管理工具會是 fdisk。不過 fdisk 年事已高,還有 2TB 磁碟容量的限制。現在會建議改用 parted 來進行磁碟區管理。

  • 搜尋 parted 可以找到很全面的指令教學,這裡我就不多介紹指令本身了。
  • 離開輸入 quit
  • 輸入 help 可以看指令說明。
$ sudo parted
[sudo] password for brucechen:
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  2150MB  2147MB  ext4
 3      2150MB  215GB   213GB

(parted)

這是 IT 同事還沒擴充 Disk 時,進入 parted 後執行了 print 的訊息,可以看到就是個 200GB 大小的磁碟。

$ sudo parted
[sudo] password for brucechen:
GNU Parted 3.4
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 209715200 blocks) or continue with the current setting?
Fix/Ignore? Fix
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 322GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  2150MB  2147MB  ext4
 3      2150MB  215GB   213GB

(parted)

這是 IT 同事調整 Disk 後(加 100GB),我們進入 parted 並執行了 print 指令後,parted 自動發現現有磁碟區有被異動過,問你是否要進行修正。輸入 Fix 就完成了 Disk 延伸了。

這裡在 IT 同事調整後,Ubuntu Server (或說 Kubernetes 叢集)需要重開機後,parted 才能發現到 Disk 有異動。

超簡單吧!(如果你看過網路上其他 fdisk 的教學的話)

lvextend + resize2fs

在 Ubuntu 架構下,把 Disk 延伸之後還沒結束,Ubuntu 採用 LVM 來管理,因此,我們必須把剛剛 Disk 延伸拿到的 Free PE / Size 分配給 LVM 來使用。

$ sudo vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <198.00 GiB
  PE Size               4.00 MiB
  Total PE              50687
  Alloc PE / Size       25343 / <99.00 GiB
  Free  PE / Size       25344 / 99.00 GiB
  VG UUID               Pq1Qe9-eVBC-BhCb-aI9q-jRHC-q1rI-4IqCxU
  
$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                rDEyov-xsQC-J6iH-7QE2-PIIV-Mkz3-uaLziz
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2022-10-11 16:24:39 +0800
  LV Status              available
  # open                 1
  LV Size                <99.00 GiB
  Current LE             25343
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

vgdisplay 可以看到 Free PE/Size 25344/99.00 GiB 的延伸容量空間。在 lvdisplay 可以看到,目前 LV 分配到只有 99 GiB 的容量空間。接下來我們利用 lvextend 指令來延伸 LV 容量空間

這裡就不細部討論什麼是 vglv 了。

$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <99.00 GiB (25343 extents) to <198.00 GiB (50687 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
  
$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                rDEyov-xsQC-J6iH-7QE2-PIIV-Mkz3-uaLziz
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2022-10-11 16:24:39 +0800
  LV Status              available
  # open                 1
  LV Size                <198.00 GiB
  Current LE             50687
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

lvextend -l +100%FREE100% 分配容量給 LV 使用,後面帶的是 LV Path。在 lvdisplay 也能發現,LV Size 從 99 GiB 上升到 198 GiB。還沒結束,最後還需要用 resize2fs 延伸 File System。

$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 25
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 51903488 (4k) blocks long.

resize2fs 的路徑可以從一開始的 df 取得。最後比較一下開始與延伸過後的 LV 結果:

# source
$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              1.2G  7.7M  1.2G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   97G   76G   17G  82% /

# extend
$ df -ht ext4
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  195G   76G  110G  41% /
/dev/sda2                          2.0G  242M  1.6G  14% /boot

Avail 從 17G 上升到 110G,Use 也從 82% 下降到 41%。這樣就能確定 Ubuntu Server 的 Disk 與 LVM 磁碟容量延伸有成功。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。