非 LVM 管理的 Linux 系統(tǒng)盤擴(kuò)容案例

LVM 簡介

LVM 是 Linux 系統(tǒng)上一個(gè)磁盤映射工具,為 Linux 內(nèi)核提供虛擬卷宗管理, 原理如圖所示,LVM 主要的一個(gè)優(yōu)勢就是可以將多個(gè)物理磁盤(或分區(qū))合并為一個(gè)超大邏輯分區(qū),以滿足類似超大數(shù)據(jù)庫文件等存儲需求。

image (2).png

LVM 有個(gè)局限性就是在將磁盤(或分區(qū))納入 LVM 管理的時(shí)候需要對磁盤或分區(qū)進(jìn)行格式化操作, 這就導(dǎo)致我們無法直接將已經(jīng)存儲了數(shù)據(jù)的磁盤納入 LVM 管理。

本案例系統(tǒng)版本

Ubuntu 22.04.3 LTS

具體問題

系統(tǒng)盤上裝了 Docker ,Docker 目錄迅速膨脹,導(dǎo)致系統(tǒng)磁盤空間不足,購買一塊新硬盤安裝后發(fā)現(xiàn)無法將新增硬盤空間添加到系統(tǒng)盤所在的卷宗,因?yàn)榘惭b系統(tǒng)時(shí)沒有使用 LVM 管理系統(tǒng)盤。

解決方案

  1. 將新增硬盤使用 LVM 管理,并創(chuàng)建邏輯卷宗

  2. 將原系統(tǒng)文件全部 copy 到 LVM 管理的邏輯卷宗

  3. 引導(dǎo)系統(tǒng)從 LVM 邏輯卷宗啟動

  4. 確認(rèn)新卷宗啟動正常

  5. 將原系統(tǒng)所在硬盤格式

  6. 將原系統(tǒng)盤納入 LVM 管理

  7. 使用 LVM 對系統(tǒng)邏輯卷宗擴(kuò)容

image (3).png

方案難點(diǎn)

該方案難點(diǎn)是遷移系統(tǒng),Linux 系統(tǒng)雖然是基于文件的系統(tǒng),但是文件中涉及到文件軟硬鏈接, mount 目錄, 虛擬目錄,socket 文件等,并不是簡單的 copy 操作; 還有就是遷移后的系統(tǒng)的啟動引導(dǎo)流程需要處理,在處理的過程中要格外小心,稍有不慎就可能導(dǎo)致系統(tǒng)無法啟動、文件丟失等嚴(yán)重后果。

方案操作過程

該方案是從虛擬機(jī)上多次嘗試最終驗(yàn)證成功所得;

在操作時(shí)務(wù)必確認(rèn)清楚當(dāng)前命令在做什么,命令參數(shù)需要根據(jù)實(shí)際情況調(diào)整。

一. 新磁盤操作

  1. 添加磁盤

  2. fdisk -l

查看新增磁盤名稱 假如新磁盤為 “/dev/nvme1n1”

  1. fdisk /dev/nvme1n1

fdisk 命令進(jìn)入操作模式按 m 鍵可以展示幫助說明

新建 gpt 分區(qū)表, 然后 new 兩個(gè)分區(qū),一個(gè) EFI ,另一個(gè) linux 系統(tǒng)分區(qū)

使用 fdisk -l 查看新分區(qū),假如為 /dev/nvme1n1p1 和 /dev/nvme1n1p2

  1. apt install lvm2

安裝 lvm2 工具套件

  1. pvcreate /dev/nvme1n1p2

將新磁盤的第二分區(qū)使用 lvm 管理,使用 pvdisplay 命令查看新增的物理磁盤名(一般與原名相同 /dev/nvme1n1p2), pvs 命令也可以查看

  1. vgcreate vg0 /dev/nvme1n1p2

創(chuàng)建 volume group (名稱vg0) 可以使用 vgs 或 vgdisplay 命令查看創(chuàng)建結(jié)果

  1. lvcreate -n lv0 -L 15G vg0

創(chuàng)建 logic volume (名稱 lv0, 大小 15G 按需指定)之后使用 lvs 或 lvdisplay 命令可以查看創(chuàng)建的邏輯分區(qū)

  1. fdisk -l

查看新建的邏輯卷 id (假如新邏輯卷為 /dev/mapper/vg0-lv0 )

  1. mkfs.ext4 /dev/mapper/vg0-lv0

設(shè)置文件格式為 ext4

  1. mkfs.fat -F32 /dev/nvme1n1p1

給 EFI 系統(tǒng)分區(qū)設(shè)置文件格式 fat32

二. 遷移系統(tǒng)

  1. mkdir /root2

創(chuàng)建分區(qū)掛載點(diǎn)

  1. mount /dev/mapper/vg0-lv0 /root2

掛載新分區(qū)

  1. tar -cf - --one-file-system / | tar -xf - -C /root2

copy 系統(tǒng)文件到目標(biāo) 新分區(qū), 提示刪除開頭的 / 是安全警告可以忽略,提示忽略套接字也正常

  1. mount /dev/nvme1n1p1 /root2/boot/efi

將新的 EFI 引導(dǎo)分區(qū)掛載到新系統(tǒng)的 /boot/efi 目錄

  1. mount 必要節(jié)點(diǎn)

sudo mount --bind /dev /root2/dev

sudo mount --bind /proc /root2/proc

sudo mount --bind /sys /root2/sys

  1. chroot /root2

切換到新系統(tǒng)盤

  1. 修改 mount 映射

vi /etc/fstab

修改 / 對應(yīng)的 uuid 為 /dev/mapper/vg0-lv0 分區(qū)的 id,

修改 boot/efi 的 uuid 為 /dev/nvme1n1p1 EFI 分區(qū)的 id,

blkid 命令可以查看 id

  1. grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu

安裝引導(dǎo)程序,并創(chuàng)建系統(tǒng)引導(dǎo)配置 ubuntu (ubuntu 名稱不可隨意指定)

可能會彈出警告: 提示 EFI 變量無法設(shè)置在當(dāng)前系統(tǒng),需要手動完成 GRUB 設(shè)置, 可忽略

  1. grub-mkconfig -o /boot/grub/grub.cfg

更新新系統(tǒng)下的 grub 配置

  1. grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --removable

重新安裝引導(dǎo)程序,并創(chuàng)建系統(tǒng)引導(dǎo)配置

  1. grub-mkconfig -o /boot/grub/grub.cfg

再次更新新系統(tǒng)下的 grub 配置

21 . 重啟系統(tǒng)到固件,選擇啟動磁盤為新增磁盤

三. 處理舊的系統(tǒng)盤

  1. pvcreate /dev/nvme0n1

整個(gè)磁盤創(chuàng)建lvm物理盤

  1. vgextend vg0 /dev/nvme0n1

將新物理盤符添加到磁盤組 vg0

  1. lvextend -l +100%FREE /dev/mapper/vg0-lv0

將邏輯盤擴(kuò)容到 vg0 的最大可用空間

  1. resize2fs /dev/mapper/vg0-lv0

將文件系統(tǒng)擴(kuò)容到邏輯盤符的最大空間

操作失誤遇到的問題

如果磁盤 已經(jīng)被 lvm 管理, 然后你又手動的對磁盤進(jìn)行分區(qū)操作,那么對應(yīng)的 lvm 邏輯分區(qū)不會自動消失, 導(dǎo)致 /dev/mapper/ 下有個(gè) lv 的映射一直 lvremove 刪不掉

可使用 dmsetup ls 查看映射信息,然后使用 dmsetup remove 刪除對應(yīng)的邏輯映射。

設(shè)置面板無法打開

過了幾天發(fā)現(xiàn)系統(tǒng)設(shè)置面板無法打開,不確定是不是由于系統(tǒng)擴(kuò)容引起的,解決辦法如下

apt install gnome-control-center 按轉(zhuǎn)完即可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容