自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何將你的文件系統(tǒng)轉(zhuǎn)換為 Btrfs

系統(tǒng) Linux
這篇概述文章將告訴你為何以及如何遷移你的當(dāng)前分區(qū)到 Btrfs 文件系統(tǒng)。如果你對(duì)此感興趣,請(qǐng)閱讀這篇分步指南來完成。

引言

這篇概述文章將告訴你為何以及如何遷移你的當(dāng)前分區(qū)到 Btrfs 文件系統(tǒng)。如果你對(duì)此感興趣,請(qǐng)閱讀這篇分步指南來完成。

從 Fedora 33 開始,新安裝的 Fedora 操作系統(tǒng)默認(rèn)文件系統(tǒng)為 Btrfs。我確信大部分用戶現(xiàn)在已經(jīng)聽說了它的優(yōu)勢:寫時(shí)復(fù)制、內(nèi)置校驗(yàn)、靈活的壓縮方式、簡易的快照和回滾方式。它確實(shí)是一個(gè)現(xiàn)代化的文件系統(tǒng),為桌面存儲(chǔ)帶來新的功能。

在升級(jí)到 Fedora 33 后,我想利用 Btrfs 的優(yōu)勢,但對(duì)我個(gè)人來說,我不想因?yàn)椤爸皇菫榱烁淖兾募到y(tǒng)”而去重裝整個(gè)系統(tǒng)。我發(fā)現(xiàn)(只有)寥寥無幾的具體如何做轉(zhuǎn)換的教程,所以我決定在這里分享我的詳細(xì)經(jīng)驗(yàn)。

小心!

這樣做你是在玩火。希望你閱讀以下內(nèi)容時(shí)不要感到驚訝:


在編輯分區(qū)和轉(zhuǎn)換文件系統(tǒng)時(shí),你的數(shù)據(jù)可能會(huì)被破壞和丟失。最終,你可能會(huì)得到一個(gè)不能啟動(dòng)的操作系統(tǒng),并面臨數(shù)據(jù)恢復(fù)的風(fēng)險(xiǎn)。你可能會(huì)無意刪除你的分區(qū),或者以其它方式破壞了你的操作系統(tǒng)。


這些轉(zhuǎn)換過程即使對(duì)于生產(chǎn)系統(tǒng)來說也是安全的 —— 前提是你提前做好了計(jì)劃,對(duì)關(guān)鍵數(shù)據(jù)做好了備份和回滾計(jì)劃。作為一個(gè) 可以執(zhí)行超級(jí)權(quán)限的系統(tǒng)管理員,你可以在沒有限制、沒有任何常規(guī)安全防護(hù)措施的情況下,做任何事情。

安全的方式:重裝 Fedora

重裝操作系統(tǒng)是轉(zhuǎn)換文件系統(tǒng)到 Btrfs 的 “官方” 方式,推薦給大多數(shù)用戶使用。因此,如果在這個(gè)教程中有那么一點(diǎn)不確定,就選擇這種方式。步驟大致如下:


  1. 備份你的主文件夾和你系統(tǒng)中可能會(huì)用到的任何數(shù)據(jù),比如 ??/etc??。(編者按:虛擬機(jī)也是這樣)
  2. 將已安裝的安裝包以列表形式保存到到文件中。
  3. 重新安裝 Fedora,刪除你當(dāng)前的分區(qū),并選擇新的 Btrfs 默認(rèn)分區(qū)方案。
  4. 恢復(fù)主文件夾的內(nèi)容,并使用軟件包列表文件重裝軟件包。

對(duì)于詳細(xì)的步驟和命令,請(qǐng)看一位社區(qū)用戶在 ask.fedoraproject.org 站點(diǎn)的評(píng)論。如果正確完成,你將得到一個(gè)和之前一樣的操作系統(tǒng),使丟失數(shù)據(jù)的風(fēng)險(xiǎn)最小化。

轉(zhuǎn)換的利弊

讓我們快速澄清一下:這種文件系統(tǒng)轉(zhuǎn)換有什么優(yōu)勢和劣勢?

優(yōu)勢:


  • 當(dāng)然,不需要重新安裝!你的系統(tǒng)里的所有文件和之前一模一樣。
  • 技術(shù)上來說,沒有備份的情況下,就地進(jìn)行是可能的。
  • 你會(huì)學(xué)到許多關(guān)于 Btrfs 的知識(shí)!
  • 如果所有都按計(jì)劃進(jìn)行,會(huì)是相當(dāng)快的一個(gè)過程。

劣勢:


  • 你必須熟悉終端環(huán)境和 shell 命令。
  • 你可能會(huì)丟失數(shù)據(jù),參見上文。
  • 如果出了什么問題,你得自己解決。

特別之處:


  • 你需要大約 20% 的可用磁盤空間才能成功轉(zhuǎn)換。但對(duì)于完整的備份和重裝方式,你可能需要的空間更多。
  • 你可以在轉(zhuǎn)換過程中自定義你分區(qū)的所有參數(shù),但如果選擇重裝,你也可以從 Anaconda 自定義。

LVM 怎么辦?

在近期幾次 Fedora 安裝中,LVM 布局一直是默認(rèn)的。如果你有一個(gè)帶有多個(gè)分區(qū)(例如 ??/??? 和 ??/home??)的 LVM 分區(qū)布局,你得以某種方式合并它們,來獲得 Btrfs 所有性能。

如果選擇這樣做,你可以單獨(dú)轉(zhuǎn)換分區(qū)到 Btrfs 文件系統(tǒng),同時(shí)保留卷組。然而,遷移到 Btrfs 文件系統(tǒng)的優(yōu)勢之一是擺脫 LVM 分區(qū)布局強(qiáng)加的限制。你也可以利用 Btrfs 文件系統(tǒng)提供的收發(fā)功能在轉(zhuǎn)換后來合并分區(qū)。

了解 Btrfs

建議閱讀以下內(nèi)容對(duì) Btrfs 文件系統(tǒng)是什么有一個(gè)基礎(chǔ)的了解。如果你沒有把握,只有選擇重裝 Fedora 這種安全的方式。

必須了解的:


  • Fedora Magazine:Btrfs 來到 Fedora 33
  • Btrfs 系統(tǒng)管理指南, 尤其是 關(guān)于子卷和 flat 子卷布局。
  • btrfs-convert 指南

有用的資源:


  • man 8 btrfs – 命令行界面
  • man 5 btrfs – 掛載參數(shù)
  • man btrfs-convert – 要用到的轉(zhuǎn)換工具
  • man btrfs-subvolume – 管理子卷

轉(zhuǎn)換步驟

創(chuàng)建一個(gè)實(shí)時(shí)鏡像

由于不能轉(zhuǎn)換已掛載的文件系統(tǒng),我們將通過 Fedora 實(shí)時(shí)鏡像Live Image進(jìn)行。安裝 Fedora 鏡像寫入工具,然后 “燒錄” Fedora 33 到你的 U 盤中來創(chuàng)建實(shí)時(shí)鏡像。

釋放磁盤空間

??btrfs-convert?? 會(huì)在分區(qū)的剩余空間重新創(chuàng)建文件系統(tǒng)的元數(shù)據(jù),同時(shí)保持所有已有的 ext4 文件系統(tǒng)數(shù)據(jù)還在它當(dāng)前的位置上。

不幸的是,所需的剩余空間的大小無法提前知道:如果沒有足夠的空間,轉(zhuǎn)換將會(huì)失?。ǖ粫?huì)破壞數(shù)據(jù))。這里有一些釋放空間有用的方法:


  • 利用 ??baobab?? 來識(shí)別大容量的文件和文件夾,然后移除。如果可能的話,不要手動(dòng)刪除主文件夾以外的文件。
  • 清理舊的系統(tǒng)日志:??journalctl –vacuum-size=100M??。
  • 如果你正使用 Docker,請(qǐng)小心地使用類似 ??docker volume prune???、??docker image prune -a?? 這樣的工具。
  • 清理 GNOME Boxes 之類的虛擬機(jī)內(nèi)不用的鏡像。
  • 清理不用的軟件包和 Flatpak 包:??dnf autoremove???、??flatpak remove –unused??。
  • 清理軟件包緩存:??pkcon refresh force -c -1???、??dnf clean all??。
  • 如果你有把握,你可以謹(jǐn)慎的清理 ??~/.cache?? 文件夾。

轉(zhuǎn)換到 Btrfs

備份你所有有價(jià)值的數(shù)據(jù),確保你的系統(tǒng)已完全更新,然后重啟到實(shí)時(shí)鏡像。運(yùn)行 ??gnome-disks??? 工具找到你所擁有的設(shè)備的路徑,比如 ??/dev/sda1??(如果你在使用 LVM,它可能看起來有所不同)。檢查文件系統(tǒng)然后執(zhí)行轉(zhuǎn)換:(編者按:以下命令使用 root 用戶運(yùn)行,謹(jǐn)慎使用?。?/p>

$ sudo su -
# fsck.ext4 -fyv /dev/sdXX (請(qǐng)?zhí)鎿Q為你的具體的設(shè)備路徑)
# man btrfs-convert (閱讀它)
# btrfs-convert /dev/sdXX (請(qǐng)?zhí)鎿Q為你的具體的設(shè)備路徑)

這將會(huì)花十幾分鐘甚至幾個(gè)小時(shí),依據(jù)分區(qū)的大小和是機(jī)械硬盤還是固態(tài)硬盤。如果你看到錯(cuò)誤,你可能需要更多剩余空間。作為最后的手段,你可以嘗試 ??btrfs-convert -n??。

怎樣回滾?

如果因?yàn)槟承┰蜣D(zhuǎn)換失敗,你的分區(qū)將保持在 ext4 文件系統(tǒng)或者它之前的狀態(tài)。如果你想在成功轉(zhuǎn)換之后回滾,簡單如下:

# btrfs-convert -r /dev/sdXX


警告! 如果你做了以下這些事情之一,你將永久失去回滾的功能:碎片整理、均衡或者刪除 ??ext2_saved?? 子卷。


由于 Btrfs 文件系統(tǒng)的寫時(shí)復(fù)制特性,你可以安全的復(fù)制/移動(dòng)甚至刪除文件、創(chuàng)建子卷,因?yàn)?nbsp;??ext2_saved?? 會(huì)保持引用舊數(shù)據(jù)。

掛載和檢查

現(xiàn)在這個(gè)分區(qū)應(yīng)該已經(jīng)有了 Btrfs 文件系統(tǒng)。掛載它然后查看你的文件……和子卷!

# mount /dev/sdXX /mnt (請(qǐng)?zhí)鎿Q為你的具體的設(shè)備路徑)
# man btrfs-subvolume (閱讀它)
# btrfs subvolume list / (使用 -t 以表格方式查看)

因?yàn)槟阋呀?jīng)閱讀了 ??相關(guān)的手冊(cè)頁???,你應(yīng)該知道創(chuàng)建子卷快照是安全的,并且有 ??ext2-saved?? 子卷作為你之前數(shù)據(jù)的簡易備份。

創(chuàng)建子卷

我們希望實(shí)現(xiàn)一個(gè)“扁平”子卷布局,這和 Anaconda 默認(rèn)創(chuàng)建的布局相同:

toplevel (卷根目錄,不能被默認(rèn)掛載)
+-- root (子卷根目錄,被掛載到 /)
+-- home (子卷根目錄,被掛載到 /home)


你可以跳過這個(gè)步驟,或者使用一個(gè)不同的布局。這種特殊結(jié)構(gòu)的優(yōu)勢是你可以輕松的創(chuàng)建 ??/home?? 的快照,并且對(duì)每個(gè)子卷使用不同的壓縮和掛載參數(shù)。

# cd /mnt
# btrfs subvolume snapshot ./ ./root2
# btrfs subvolume create home2
# cp -a home/* home2/


這里我們已經(jīng)創(chuàng)建了兩個(gè)子卷。??root2??? 是一個(gè)完整的分區(qū)快照,而 ??home2??? 開始是一個(gè)空子卷,然后我們往里復(fù)制內(nèi)容。(這個(gè) ??cp?? 命令不會(huì)重復(fù)數(shù)據(jù),所以會(huì)很快。)


  • 在 ??/mnt??? 目錄(頂層子卷),刪除除了 ??root2???、??home2??? 和 ??ext2_saved?? 之外的所有內(nèi)容。
  • 重命名 ??root2??? 和 ??home2??? 子卷為 ??root??? 和 ??home??。
  • 在 ??root??? 子卷里,清空 ??home??? 目錄,以便之后我們能夠掛載 ??home?? 子卷。

如果都做對(duì)了,那就很簡單了!

修改 fstab 分區(qū)表

為了重啟之后掛載新卷,必須要修改 ??fstab??,用新的行來代替舊的 ext4 文件系統(tǒng)掛載行。

你可以使用 ??blkid?? 命令來找到你的分區(qū)的 UUID。

UUID=xx / btrfs subvol=root 0 0 (請(qǐng)?zhí)鎿Q為你的具體 UUID)
UUID=xx /home btrfs subvol=home 0 0 (請(qǐng)?zhí)鎿Q為你的具體 UUID)

(注意如果指向的是同一個(gè)分區(qū),那么這兩個(gè) UUID 是相同的。)

這些都是新安裝的 Fedora 33 的默認(rèn)值。在 ??fstab??? 中,你也可以選擇自定義壓縮和添加類似 ??noatime?? 這樣的參數(shù)。


可以查看 ??關(guān)于壓縮參數(shù)的維基頁面??? 和 ??man 5 btrfs?? 了解所有相關(guān)的參數(shù)。


chroot 到系統(tǒng)

如果你曾經(jīng)做過系統(tǒng)恢復(fù),我想你肯定知道這些命令。這里,我們將得到一個(gè) 基本上 在你系統(tǒng)里的 shell 提示符,可以訪問網(wǎng)絡(luò)。

首先,我們必須重新掛載 ??root??? 子卷到 ??/mnt??? 目錄,然后掛載 ??/boot??? 和 ??/boot/efi?? 分區(qū)(它們可能有所不同,這取決于你的文件系統(tǒng)布局):

# umount /mnt
# mount -o subvol=root /dev/sdXX /mnt (請(qǐng)?zhí)鎿Q為你的具體的設(shè)備路徑)
# mount /dev/sdXX /mnt/boot (請(qǐng)?zhí)鎿Q為你的具體的設(shè)備路徑)
# mount /dev/sdXX /mnt/boot/efi (請(qǐng)?zhí)鎿Q為你的具體的設(shè)備路徑)


然后我們繼續(xù)掛載系統(tǒng)設(shè)備:

# mount -t proc /proc /mnt/proc
# mount --rbind /dev /mnt/dev
# mount --make-rslave /mnt/dev
# mount --rbind /sys /mnt/sys
# mount --make-rslave /mnt/sys
# cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.chroot
# cp -L /etc/resolv.conf /mnt/etc
# chroot /mnt /bin/bash
$ ping www.fedoraproject.org


重裝 GRUB 及內(nèi)核

最容易的方法就是重裝 GRUB 和 內(nèi)核,因?yàn)樗瓿闪怂斜匾呐渲?—— 現(xiàn)在我們可以訪問網(wǎng)絡(luò)了。所以,在 chroot 環(huán)境內(nèi)部:

# mount /boot/efi
# dnf reinstall grub2-efi shim
# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
# dnf reinstall kernel-core
...或者干脆重新生成 initramfs:
# dracut --kver $(uname -r) --force


如果你是支持 UEFI 的系統(tǒng),這里是適用的。如果你是 BIOS 的系統(tǒng),請(qǐng)查看下面的文檔。重啟之前,讓我們查看是否一切正常:

# cat /boot/grub2/grubenv
# cat /boot/efi/EFI/fedora/grub.cfg
# lsinitrd /boot/initramfs-$(uname -r).img | grep btrfs


你應(yīng)該在 ??grubenv??? 和 ??grub.cfg??? 有正確的分區(qū) UUID 或指向(??grubenv??? 可能沒有更新,如有必要可以編輯它),并在 ??grub.cfg??? 中看到 ??insmod btrfs?? 配置和在 initramfs 鏡像中有 btrfs 模塊。


參見: Fedora 系統(tǒng)管理指南中的 ??重裝 GRUB 2??? 和 ??驗(yàn)證初始 RAM 磁盤鏡像?? 。


重啟

現(xiàn)在系統(tǒng)能夠正常啟動(dòng)。如果不能,別慌,回到實(shí)時(shí)鏡像修復(fù)這個(gè)問題。最壞的情況下,你可以從那里重裝 Fedora 。

首次啟動(dòng)之后

檢查你的新 Btrfs 文件系統(tǒng)一切都正常。如果你覺得沒問題,你需要回收舊的 ext4 快照使用的空間,進(jìn)行碎片整理和平衡子卷。后兩者可能要花一些時(shí)間,并且相當(dāng)耗費(fèi)資源。

對(duì)此你必須這樣掛載頂級(jí)子卷:

# mount /dev/sdXX -o subvol=/ /mnt/someFolder
# btrfs subvolume delete /mnt/someFolder/ext2_saved


然后,當(dāng)機(jī)器有空閑時(shí)間時(shí),運(yùn)行這些命令:

# btrfs filesystem defrag -v -r -f /
# btrfs filesystem defrag -v -r -f /home
# btrfs balance start -m /


最后,有一個(gè) “非寫時(shí)復(fù)制” ??屬性??,對(duì)于新系統(tǒng),這個(gè)屬性是為虛擬機(jī)鏡像文件夾自動(dòng)設(shè)置的。如果你使用虛擬機(jī)的話,可以設(shè)置它:

# chattr +C /var/lib/libvirt/images

$ chattr +C ~/.local/share/gnome-boxes/images

這個(gè)屬性只會(huì)對(duì)在這些文件夾里的新文件生效。復(fù)制鏡像并刪除原鏡像,你可以通過 ??lsattr?? 確認(rèn)結(jié)果。

總結(jié)

我真心希望你發(fā)現(xiàn)這個(gè)教程是有用的,并且能夠?qū)κ欠裨谀愕南到y(tǒng)上轉(zhuǎn)換為 Btrfs 做出謹(jǐn)慎而明智的決定。祝你成功轉(zhuǎn)換!

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-05-31 06:10:14

Btrfs文件系統(tǒng)Linux

2009-12-14 13:14:57

2020-01-15 09:10:13

LinuxWindowsmacOS

2011-08-10 09:25:16

BtrfsFedora 16

2014-03-20 15:59:11

OpenSUSE 13Btrfs文件系統(tǒng)

2021-03-28 07:53:05

LinuxWindows虛擬機(jī)

2009-08-27 12:00:45

ibmdwLinux

2021-05-27 15:03:01

Fedora ClouBtrfs文件系統(tǒng)

2022-09-23 09:50:45

Python

2012-11-23 17:20:43

Linux服務(wù)器

2009-07-15 16:56:59

Jython類型Java類型

2011-06-27 10:17:15

EXT4 Btrfs

2011-04-08 10:16:13

文本文件ACCESS數(shù)據(jù)庫

2020-11-25 10:42:57

Python代碼工具

2017-05-10 16:09:12

MySQL數(shù)據(jù)庫查詢

2020-12-17 08:08:15

CentOS

2024-02-19 15:38:08

JsonPython字符串

2017-05-25 15:14:36

2014-09-01 09:49:24

github

2021-08-31 08:32:40

開源項(xiàng)目開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)