我的工作系统空间不足。所以我在磁盘末尾添加了空间。
从 gparted ISO 启动
启动 gparted 将第 3 个分区(共 3 个)移至右侧。调整第 2 个分区(共 3 个分区)的大小以声明未使用的空间。
错误:大约 100 个文件存在 csum 错误。
btrfs 检查 --repair /dev/sda2
错误仍然存在
好的,清除 crc --init-csum-tree
错误仍然存在,并且无法扩展分区
问题我应该如何解决这个问题?
所以我添加了一个硬盘,创建了一个新分区,并使用 cp -r -p /source/* /destination/ (安装文件夹的实际名称并不重要)
由于修复原始分区失败,并且我认为我已经备份了所有内容,因此我格式化了源分区。
现在分区修复后,将数据放回去。
cp -r -p /目标/* /源
必须解决一些 grub 错误和 fstab 中的 UUID。
因此它启动了,但出现错误,抱怨 /usr/local 和其他几个位置。
研究表明这些位置是子卷。
其中大多数相对无害,因为我可以重新安装它们。然而,变量里面有一些mysql数据库。
我的数据消失了吗?为什么没有CP复制吗?最重要的是,如何将所有文件复制到另一个分区,以便我可以格式化(文件系统损坏超出--repair)原始文件,并将文件复制回来而不会因子卷等原因丢失数据?
答案1
当你移动隔板的那一刻我的心就停止了。
此类磁盘操作是危险的。特别是如果您没有经过验证的备份。
校验和错误是 BTRFS 告诉您文件已损坏的方式。尝试让 BTRFS 相信文件没问题可能不是您想要的。
cp
不复制子卷。相反,它将它们复制为目录。我不知道你是如何备份所有内容的,但听起来它没有备份你的子卷。我建议使用btrfs-send
和btrfs-receive
进行备份。
至于您的数据库,如果您格式化了源分区,不幸的是,我认为它们已经消失了。
提示。如果您打算使用 BTRFS,阅读 BTRFS wiki 是一个不错的选择必须。它不是普通的文件系统。您必须熟悉它的功能才能有效地使用它:https://btrfs.wiki.kernel.org/