记一次 ext4 转 Btrfs 的经历

发布于 2024-09-09  10984 次阅读


这篇文章流程来自 https://xuanwo.io/2018/11/15/record-for-btrfs-conversion/ ,这是我在发现问题之后查看这篇文章之后的补充

这几天脑子抽了,想折腾着把自己 NAS 的主硬盘换成 NTFS (看了sy笔记本换 Btrfs 开透明压缩多,羡慕)。

先进行例行检查避免带病上阵

fsck.ext4 /dev/sda1

之后使用 btrfs-convert /sda1 进行转换,如果提示没有该命令,可以通过

sudo apt install btrfs-progs

安装。

由于这块盘并不是系统盘,所以我并需要更改过多的东西。我使用 systemctl 挂载,修改一下挂载的 DATA.mount 文件

[Unit]
 
Description = mount disk
 
[Mount]
 
What = /dev/disk/by-partuuid/YOUR_PARTUUID
 
Where = /DATA

Type = btrfs

Options = defaults

[Install]

WantedBy = local-fs.target

检查一下文件没有啥问题,这个盘上的服务也没怎么报错后,我按照以下方法删除了之前的备份

sudo btrfs subvolume delete /DATA/ext2_saved
sudo btrfs filesystem sync /DATA

之前还以为参考的 Xuanwo 出问题是因为开启了透明压缩,没想到,明明使用 sudo btrfs check --readonly /dev/sda1 进行检查没有什么问题,在 blance 时候还是出问题了。根据 Xuanwo 的记录,我进行 sudo btrfs scrub start /dev/sda1 时候并不能直接定位到错误的文件。问过 ChatGPT 后,我使用

sudo btrfs scrub start -B -d /dev/sda1
dmesg | grep "checksum error"

定位到错误的文件是备份的一张照片,还有一个不知道在哪的 image 文件夹。我将照片直接删除后再 scrub ,没问题了,可以正常使用 btrfs balance start /DATA 来 balance。

之后将 DATA.mount 文件改成如下启用了透明压缩

[Unit]
 
Description = mount disk
 
[Mount]
 
What = /dev/disk/by-partuuid/YOUR_PARTUUID
 
Where = /DATA

Type = btrfs

Options = defaults,compress=zstd

[Install]

WantedBy = local-fs.target

使用 sudo systemctl restart data.mountmount | grep /DATA 来验证是否启用透明压缩

删除的那张照片在其他地方的备份

一个敢于为了自己梦想而奋斗的人
最后更新于 2024-09-09