<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://gentoo-zh.org/extern.php?action=feed&amp;tid=702&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Gentoo中文社区 / 从ext4迁移到btrfs]]></title>
		<link>http://www.gentoo-zh.org/viewtopic.php?id=702</link>
		<description><![CDATA[从ext4迁移到btrfs 最近发表的帖子。]]></description>
		<lastBuildDate>Tue, 30 May 2023 13:15:08 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[从ext4迁移到btrfs]]></title>
			<link>http://www.gentoo-zh.org/viewtopic.php?pid=804#p804</link>
			<description><![CDATA[<p>最近扩展 Linux 分区的时候，由于年少轻狂，没有进行全盘备份，导致系统出现了灾难性事故，软件、配置，还有最近学习 Vim，写了快一个星期的配置文件，全部丢失。重装系统后便开始寻找适合备份的文件系统，便有了这篇文章。</p><p>为什么是 Btrfs<br />Btrfs 是 B-tree 文件系统，通常念做 「Butter FS」、「Better FS」或「B-tree FS」。是一种支持写入时复制（CoW）的 Linux 文件系统。相对于 ext4 文件系统有以下几个优点：</p><p>Btrfs 支持快照，方便备份与恢复；<br />Btrfs 支持透明压缩，节省存储空间；<br />Btrfs 支持子卷功能，便于管理；<br />Btrfs 支持数据与元数据校验。<br />这些优点使我产生了向 Btrfs 迁移的念头，幸运的是，Btrfs 支持从 ext4 转换。</p><p>转换步骤<br />以下步骤是在我自用电脑上操作的，磁盘 /dev/nvme0n1p4 挂载为 Linux 根分区，下文命令可能需要调整。由于操作时需要对根分区进行操作，强烈建议操作前进行全盘备份并在 LiveCD 环境下进行操作。</p><p>注意：任何对数据的操作都是充满风险的，如果你不能承受数据丢失的风险，请勿操作。 注意：如果转换中出现任何异样，你都可以使用备份子卷 /ext2_saved 来回滚。请勿强行对转换失败的分区做出更改。使用 btrfs-convert -r /dev/target_partition 命令进行回滚。</p><p>检查文件系统<br />首先使用 fsck 检查磁盘，保证现有分区没有问题。</p><p># fsck.ext4 /dev/nvme0n1p4<br />开始文件系统转换<br />分区检查通过后就可以开始转换。执行以下命令进行转换。</p><p># btrfs-convert /dev/nvme0n1p4<br />待出现 conversion complete 表明转换完成。现在分区的文件系统已经是 Btrfs 了，但是还不能重启，还需要对现有的文件进行修改才能顺利引导进系统。</p><p>挂载分区并修改 fstab<br />首先需要挂载分区，方便我们修改文件。这里我们将分区挂载到 /mnt 目录下。</p><p># mount /dev/nvme0n1p4 /mnt<br />使用磁盘工具检查分区的 UUID，这里使用 lsblk 命令。</p><p>$ lsblk -f<br />NAME&#160; &#160; &#160; &#160; FSTYPE FSVER LABEL&#160; &#160; &#160; UUID&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;FSAVAIL FSUSE% MOUNTPOINT<br />nvme0n1<br />...&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <br />└─nvme0n1p4 btrfs&#160; &#160; &#160; &#160; ...&#160; &#160; &#160; &#160; 82xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxeb&#160; &#160; &#160;xxG&#160; &#160; &#160;xx%&#160; &#160; /mnt<br />使用文本编辑工具修改 /mnt/etc/fstab 文件，修改挂载到根目录的分区类型（type）为 btrfs、文件系统检查顺序（pass）为 0（启动时不进行磁盘检查），并检查转换后的分区 UUID 是否改变，修改挂载分区（file system）。<br />需要重新生成fstab&#160; 建议genfstab -U /&#160; &gt;&gt; /etc/fstab&#160; &#160; &#160;要把全部的系统区挂载上，注意内核需要支持btrfs支持和安装btrfs文件系统支持</p><p>重建初始化内存盘<br />重建初始化内存盘需要在 chroot 环境中进行。首先需要设置对应的挂载点。</p><p># mount -t proc none /mnt/proc<br /># mount -t sysfs none /mnt/sys<br /># mount -o bind /dev /mnt/dev<br />随后使用 chroot 命令进入原系统。</p><p># chroot /mnt bash<br />进入原系统后，使用 mkinitcpio 重建初始化内存盘。这里可能需要替换命令参数，如果提示 Fail to load preset，需要检查 /etc/mkinitcpio.d 目录下是否存在对应的预设文件名。</p><p># mkinitcpio --preset linux</p><br /><br /><br /><p>如果使用 GRUB 启动，还需要重建 GRUB 引导。</p><br /><br /><br /><p>TLP 设置<br />如果使用了 TLP 高级电源管理功能，需要对 TLP 进行设置，防止文件系统损坏。编辑位于 /mnt/etc/tlp.conf 的配置文件，找到 SATA_LINKPWR_ON_BAT 条目，取消注释并在选项中添加 max_performance 参数。</p><p>SATA_LINKPWR_ON_BAT=&quot;med_power_with_dipm max_performance&quot;<br />启用透明压缩<br />为了能够利用 Btrfs 的透明压缩功能，可以对转换好的分区进行压缩并修改 fstab 挂载选项。</p><p>首先需要对转换好的分区进行全盘压缩。</p><p># btrfs filesystem defragment -r -v -czstd /mnt<br />随后需要修改 fstab 文件，在根目录文件系统的挂载选项（options）一栏中增加 compress=zstd 选项，以便系统启动时应用压缩选项。</p><p>使用新文件系统启动及后续操作<br />完成上述步骤后，便可以使用转换后的分区启动。启动后，可以删除 /ext2_saved 子卷完成转换。</p><p># btrfs subvolume delete /ext2_saved<br />最后通过 Balance 来回收数据。</p><p># btrfs balance start /<br /># btrfs balance status /<br />至此，分区文件系统转换就结束了。感受新文件系统所带来的惊喜吧。</p><p>配置文件系统检修<br />在转换结束后，可以配置定时对根目录 / 的检修任务。</p><p># systemctl enable --now btrfs-scrub@-.timer<br />或者你也可以手动执行。</p><p># btrfs scrub start /<br /># btrfs scrub status /</p>]]></description>
			<author><![CDATA[dummy@example.com (semes)]]></author>
			<pubDate>Tue, 30 May 2023 13:15:08 +0000</pubDate>
			<guid>http://www.gentoo-zh.org/viewtopic.php?pid=804#p804</guid>
		</item>
	</channel>
</rss>
