Linux中國

使用 LVM 升級 Fedora

大多數用戶發現使用標準流程升級從一個 Fedora 版本升級到下一個很簡單。但是,Fedora 升級也不可避免地會遇到許多特殊情況。本文介紹了使用 DNF 和邏輯卷管理(LVM)進行升級的一種方法,以便在出現問題時保留可引導備份。這個例子是將 Fedora 26 系統升級到 Fedora 28。

此處展示的過程比標準升級過程更複雜。在使用此過程之前,你應該充分掌握 LVM 的工作原理。如果沒有適當的技能和細心,你可能會丟失數據和/或被迫重新安裝系統!如果你不知道自己在做什麼,那麼強烈建議你堅持只使用得到支持的升級方法。

準備系統

在開始之前,請確保你的現有系統已完全更新。

$ sudo dnf update
$ sudo systemctl reboot # 或採用 GUI 方式

檢查你的根文件系統是否是通過 LVM 掛載的。

$ df /
Filesystem              1K-blocks   Used        Available   Use%    Mounted on
/dev/mapper/vg_sdg-f26  20511312    14879816    4566536     77%     /

$ sudo lvs
LV        VG            Attr        LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
f22       vg_sdg        -wi-ao----  15.00g
f24_64    vg_sdg        -wi-ao----  20.00g
f26       vg_sdg        -wi-ao----  20.00g
home      vg_sdg        -wi-ao---- 100.00g
mockcache vg_sdg        -wi-ao----  10.00g
swap      vg_sdg        -wi-ao----   4.00g
test      vg_sdg        -wi-a-----   1.00g
vg_vm     vg_sdg        -wi-ao----  20.00g

如果你在安裝 Fedora 時使用了默認值,你可能會發現根文件系統掛載在名為 root 的邏輯卷(LV)上。卷組(VG)的名稱可能會有所不同。看看根卷的總大小。在該示例中,根文件系統名為 f26,大小為 20G

接下來,確保 LVM 中有足夠的可用空間。

$ sudo vgs
VG      #PV #LV #SN Attr    VSize   VFree
vg_sdg  1   8   0   wz--n-  232.39g 42.39g

該系統有足夠的可用空間,可以為升級後的 Fedora 28 的根卷分配 20G 的邏輯卷。如果你使用的是默認安裝,則你的 LVM 中將沒有可用空間。對 LVM 的一般性管理超出了本文的範圍,但這裡有一些情形下可能採取的方法:

1、/home 在自己的邏輯卷,而且 /home 中有大量空閑空間。

你可以從圖形界面中註銷並切換到文本控制台,以 root 用戶身份登錄。然後你可以卸載 /home,並使用 lvreduce -r 調整大小並重新分配 /home 邏輯卷。你也可以從 現場鏡像 Live image 啟動(以便不使用 /home)並使用 gparted GUI 實用程序進行分區調整。

2、大多數 LVM 空間被分配給根卷,該文件系統中有大量可用空間。

你可以從現場鏡像啟動並使用 gparted GUI 實用程序來減少根卷的大小。此時也可以考慮將 /home 移動到另外的文件系統,但這超出了本文的範圍。

3、大多數文件系統已滿,但你有個已經不再需要邏輯卷。

你可以刪除不需要的邏輯卷,釋放卷組中的空間以進行此操作。

創建備份

首先,為升級後的系統分配新的邏輯卷。確保為系統的卷組(VG)使用正確的名稱。在這個例子中它是 vg_sdg

$ sudo lvcreate -L20G -n f28 vg_sdg
Logical volume "f28" created.

接下來,創建當前根文件系統的快照。此示例創建名為 f26_s 的快照卷。

$ sync
$ sudo lvcreate -s -L1G -n f26_s vg_sdg/f26
Using default stripesize 64.00 KiB.
Logical volume "f26_s" created.

現在可以將快照複製到新邏輯卷。當你替換自己的卷名時,請確保目標正確。如果不小心,就會不可撤銷地刪除了數據。此外,請確保你從根卷的快照複製,而不是從你的現在的根卷。

$ sudo dd if=/dev/vg_sdg/f26_s of=/dev/vg_sdg/f28 bs=256k
81920+0 records in
81920+0 records out
21474836480 bytes (21 GB, 20 GiB) copied, 149.179 s, 144 MB/s

給新文件系統一個唯一的 UUID。這不是絕對必要的,但 UUID 應該是唯一的,因此這避免了未來的混淆。以下是在 ext4 根文件系統上的方法:

$ sudo e2fsck -f /dev/vg_sdg/f28
$ sudo tune2fs -U random /dev/vg_sdg/f28

然後刪除不再需要的快照卷:

$ sudo lvremove vg_sdg/f26_s
Do you really want to remove active logical volume vg_sdg/f26_s? [y/n]: y
Logical volume "f26_s" successfully removed

如果你單獨掛載了 /home,你可能希望在此處製作 /home 的快照。有時,升級的應用程序會進行與舊版 Fedora 版本不兼容的更改。如果需要,編輯根文件系統上的 /etc/fstab 文件以在 /home 上掛載快照。請記住,當快照已滿時,它將消失!另外,你可能還希望給 /home 做個正常備份。

配置以使用新的根

首先,安裝新的邏輯卷並備份現有的 GRUB 設置:

$ sudo mkdir /mnt/f28
$ sudo mount /dev/vg_sdg/f28 /mnt/f28
$ sudo mkdir /mnt/f28/f26
$ cd /boot/grub2
$ sudo cp -p grub.cfg grub.cfg.old

編輯 grub.conf 並在第一個菜單項 menuentry 之前添加這些,除非你已經有了:

menuentry 'Old boot menu' {
  configfile /grub2/grub.cfg.old
}

編輯 grub.conf 並更改默認菜單項以激活並掛載新的根文件系統。改變這一行:

linux16 /vmlinuz-4.16.11-100.fc26.x86_64 root=/dev/mapper/vg_sdg-f26 ro rd.lvm.lv=vg_sdg/f26 rd.lvm.lv=vg_sdg/swap rhgb quiet LANG=en_US.UTF-8

如你看到的這樣。請記住使用你系統上的正確的卷組和邏輯卷條目名稱!

linux16 /vmlinuz-4.16.11-100.fc26.x86_64 root=/dev/mapper/vg_sdg-f28 ro rd.lvm.lv=vg_sdg/f28 rd.lvm.lv=vg_sdg/swap rhgb quiet LANG=en_US.UTF-8

編輯 /mnt/f28/etc/default/grub 並改變在啟動時激活的默認的根卷:

GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_sdg/f28 rd.lvm.lv=vg_sdg/swap rhgb quiet"

編輯 /mnt/f28/etc/fstab,將掛載的根文件系統從舊的邏輯卷:

/dev/mapper/vg_sdg-f26 / ext4 defaults 1 1

改為新的:

/dev/mapper/vg_sdg-f28 / ext4 defaults 1 1

然後,出於參考的用途,只讀掛載舊的根卷:

/dev/mapper/vg_sdg-f26 /f26 ext4 ro,nodev,noexec 0 0

如果你的根文件系統是通過 UUID 掛載的,你需要改變這個方式。如果你的根文件系統是 ext4 你可以這樣做:

$ sudo e2label /dev/vg_sdg/f28 F28

現在編輯 /mnt/f28/etc/fstab 使用該卷標。改變該根文件系統的掛載行,像這樣:

LABEL=F28 / ext4 defaults 1 1

重啟與升級

重新啟動,你的系統將使用新的根文件系統。它仍然是 Fedora 26,但是是帶有新的邏輯卷名稱的副本,並可以進行 dnf 系統升級!如果出現任何問題,請使用舊引導菜單引導回到你的工作系統,此過程可避免觸及舊系統。

$ sudo systemctl reboot # or GUI equivalent
...
$ df / /f26
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_sdg-f28 20511312 14903196 4543156 77% /
/dev/mapper/vg_sdg-f26 20511312 14866412 4579940 77% /f26

你可能希望驗證使用舊的引導菜單確實可以讓你回到掛載在舊的根文件系統上的根。

現在按照此維基頁面中的說明進行操作。如果系統升級出現任何問題,你還會有一個可以重啟回去的工作系統。

進一步的考慮

創建新的邏輯卷並將根卷的快照複製到其中的步驟可以使用通用腳本自動完成。它只需要新的邏輯卷的名稱,因為現有根的大小和設備很容易確定。例如,可以輸入以下命令:

$ sudo copyfs / f28

提供掛載點以進行複製可以更清楚地了解發生了什麼,並且複製其他掛載點(例如 /home)可能很有用。

via: https://fedoramagazine.org/use-lvm-upgrade-fedora/

作者:Stuart D Gathman 選題:lujun9972 譯者:wxy 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國