跳到主要内容

数据恢复

Understanding data protection is important when managing your Unraid server. While Unraid offers strong protection against common hardware failures, no system can guarantee complete immunity to data loss. This section provides guidance on best practices for safeguarding your data, recognizing potential issues, and recovering data when problems occur.

有效的数据恢复从稳固的数据保护策略开始,包括定期备份、主动监控以及对驱动器和阵列配置的谨慎处理。


备份策略基础

Even though Unraid offers protection against various hardware failures, having reliable backups of your crucial data is vital. Backups are your last defense against catastrophic failures, ransomware, or accidental deletion.

  • **评估重要数据:**识别不可替代或必需的文件,例如个人文档、照片和重要视频。
  • 多个备份副本: 遵循3-2-1规则:保留至少三份数据副本在两种不同的媒体类型上,其中一份副本存储在异地或云中。这将最大限度降低物理灾害(如火灾或盗窃)的风险。
  • 备份频率: 安排定期备份以减少数据丢失的可能性。
  • 勒索软件保护: 至少一个备份副本应离线或不可接触,以防止潜在的损坏。
  • 备份工具: 对于Unraid 7.0及以上版本,建议使用Unraid Connect进行闪存和配置的自动云备份。其他流行的备份解决方案包括:
    • Duplicati: 一个多功能开源备份工具,提供重复数据删除和加密,支持云端、本地、USB 和远程目的地。
    • rclone: 一个强大的用于同步和备份云存储提供商的解决方案。
    • rsync: 一种用于本地或远程备份的高效选择。
    • borgbackup: 适合对重复数据删除和加密备份有需求的高级用户。

用户应该评估他们的风险承受能力和备份需求,但利用云集成和自动化对大多数 Unraid 用户来说是一个良好的起点。

Modern 备份策略

对于Unraid 7.0及以上版本,启用Unraid Connect来自动备份您的闪存设备和配置到云中。使用Duplicati、rclone或类似工具为重要文件和共享创建对本地、远程或云目标地的计划备份。始终测试您的还原过程,以确保在需要时备份能正常工作。

Proactive 监控和支持
  • 启用通知:设置 → 通知中设置通知以接收有关系统问题的即时警报。
  • 寻求专家指导: 如果您不确定恢复步骤,请在采取任何动作前咨询 Unraid 论坛
  • 定期健康检查: 密切关注您驱动器的 SMART 数据,并定期执行文件系统检查。

修复文件系统

注意

严格按照这些说明用于修复文件系统损坏的数据驱动器。不要将它们应用于奇偶校验驱动器、硬件问题或缺失的驱动器。

  • 文件系统修复工具仅用于修复具有文件系统或挂载错误的数据或缓存驱动器。
  • 奇偶校验驱动器没有文件系统。对奇偶校验驱动器运行任何修复工具会导致损坏,可能导致不可逆转的数据丢失。

设备命名:路径和符号

使用**WebGUI时,设备路径会自动管理。如果选择通过命令行修复,始终确保使用正确的分区路径**:

标签典型路径使用奇偶校验保护吗?
磁盘 7/mnt/disk7Unraid 挂载点是 (如果是 %%array
%%Array阵列%% 分区/dev/md7p1Unraid 管理的设备
原始分区/dev/sdj1直接设备访问没有
警告

切勿在整个驱动器(如 /dev/sdj)上运行文件系统修复工具;要始终使用分区路径(如 /dev/sdj1 或 Unraid 管理的 /dev/mdXp1)。

  • 对于 array 驱动器,始终使用 Unraid 管理的设备(如 /dev/md5p1)以保留 parity 保护
  • 使用原始分区(例如,/dev/sdj1)不会更新 parity,会使其无效。
  • 始终使用 /dev/mdXp1 对于 array 驱动器以保持有效的 parity
  • For non-array drives (like cache-only devices), use the direct partition path, e.g., /dev/sdj1.

选择正确的修复方法

v6.0.0 以来的所有 Unraid 版本都支持通过 WebGUIXFSBTRFS 进行文件系统修复。

对于大多数用户,推荐的方法是:

  1. 打开 WebGUI
  2. 导航到 选项卡。
  3. 点击适当的 arraycache 设备。
  4. 按照提示运行内置的文件系统检查和修复。

如果您更喜欢使用命令行,请始终:

  • 识别适用于 array 驱动器的正确 Unraid 管理分区(/dev/mdXp1)。
  • 使用适合您文件系统的修复工具:
    • XFS: xfs_repair
    • BTRFS: btrfs scrub
Know 您的文件系统

使用错误的修复工具可能会造成进一步的损害。在开始修复前,验证您的磁盘是否格式化为**XFSBTRFS**或其他受支持的文件系统类型。


在 WebGUI 中检查和修复驱动器

This section covers how to diagnose and repair file system corruption on data drives using Unraid's built-in tools. File system issues can occur after unclean shutdowns, power failures, or hardware problems, but Unraid provides safe repair methods that maintain your parity protection while fixing the underlying problems.

准备测试

文件系统启动模式需要维护模式?备注
XFS维护模式阵列必须在维护模式下启动(驱动器未挂载)以进行检查/修复。
BTRFS正常模式对于擦洗/检查,阵列必须正常启动,不要在维护模式下。
  • 为目标驱动器确定文件系统: 选项卡 → 点击驱动器名称 → 检查 文件系统类型
  • 从主要界面,点击要测试或修复的磁盘。

进行测试

  1. 大多数文件系统(如XFS)的默认设置是只读检查(无更改),通常使用-n(不修改)选项。(对于更详细的输出与XFS,增加-v(详细)选项,生成-nv。)
  2. BTRFS 使用 scrub 命令,而不是进行 balance 操作。
  3. 点击 检查 开始操作;如有需要,使用 刷新 按钮监控进度。
  4. 如未发现损坏,请继续进行 测试和修复后

进行修复

从 Unraid 7.0 开始,通过 WebGUI 完全自动化 XFS 文件系统修复:

  1. 初始检查: 点击 CHECK 按钮(无需输入选项)
  2. 检查结果:
    • 未检测到损坏:显示“未检测到文件系统损坏”,CHECK 按钮保持不变
    • 检测到损坏:显示“检测到文件系统损坏”,出现 FIX 按钮
  3. 修复过程: 点击 FIX 自动修复文件系统
  4. 其他操作: 如有需要,可能会出现 ZERO LOG 按钮
  5. 完成: 过程完成后显示“文件系统已修复”

此自动系统消除了用户手动输入修复选项的需求,并确保了正确的修复顺序。

备注
  • 修复保持 parity 保护,并可能需要相当长的时间。
  • 对于 XFS 修复,支持 WebGUI 和命令行选项(如下所示的命令)。

测试和修复后

如果您使用了 维护模式,请停止阵列并重新启动至正常模式以恢复操作。

What 修复后的期望
  • 修复和检查操作可能需要长达半小时或更长时间,具体取决于您文件系统的大小和状态。
  • 严重的损坏可能会产生一个lost+found文件夹,其中包含恢复的文件和文件夹碎片。根据需要检查并恢复这些碎片;完成后删除。
  • 这类似于在Windows上运行chkdsk或scandisk,并处理重命名为File0000.chk等的文件。在查看lost+found内容时要花些时间。

XFS 检查和修复

  1. 使用 WebGUI 对于格式化为 XFSarray 驱动器。
  2. Maintenance Mode(未挂载)启动 array
  3. 从主选项卡中选择磁盘并打开 检查文件系统状态
  4. 默认情况下,检查使用 -n(非修改);想要更多输出,请在 nv 上添加 -v
  5. 要修复,请删除 -n 标志以允许修复。

WebGUI 过程在修复期间保持 parity


不可挂载磁盘

如果一个以前功能正常的磁盘无法挂载,通常表明文件系统损坏,通常是由于非清洁关机或写入故障引起的。

Critical 行动

恢复程序

当一个以前运行正常的磁盘突然变得无法挂载时,自然会对数据感到担忧。这类问题通常是由文件系统损坏引起的,可能在非正常关机、断电或写入操作失败后发生。记住的最重要的事情是:如果由WebGUI提示,请不要格式化驱动器。格式化会删除所有现有数据,并使恢复变得困难,甚至不可能。

Instead, your first step should be to attempt a file system repair. Unraid provides built-in tools for this, and following the correct procedure can often restore access to your data with minimal risk.

以下是操作方法:

  1. 查看文件系统修复部分。本指南将为您特定的文件系统逐步介绍这一过程。

  2. 对于使用 XFS 文件系统的磁盘(大多数 Unraid 设置的默认设置),运行:

    xfs_repair -v /dev/mdXp1

    X替换为正确的磁盘号。-v标志提供详细的进度信息。此命令检查并尝试修复特定磁盘上的文件系统。

  3. 对于格式化为 BTRFS 的磁盘,首先运行只读检查:

    btrfs check /dev/mdXp1

    X替换为正确的磁盘号。仅在绝对必要的情况下并在了解风险后使用修复模式:

    btrfs check --repair /dev/mdXp1
危险

The --repair option is extremely dangerous and can cause further data loss. Always backup or image the disk first. Review the documentation and consider seeking additional advice if you’re unsure.

If these repair attempts do not resolve the issue or if you encounter errors you don’t understand, it’s best to pause and ask for help on the Unraid forums. Many experienced users and moderators are available to help guide you through the next steps, and getting a second opinion before proceeding further is always safer.


丢失阵列配置

Losing your array configuration can be stressful, but it doesn't mean your data is gone. The array configuration file (located at config/super.dat on your flash device) tells Unraid how your drives are assigned and which ones serve as parity. If you've lost your flash drive or don’t have a recent backup, you can recover your array by carefully reassigning the drives.

如果您发现自己处于这种情况,请按以下步骤操作:

  1. In the WebGUI, assign all available drives as data drives. Don't assign any as parity yet.
  2. Start the array. Drives previously used for parity will appear as unmountable because they don't contain a file system.
  3. 记下或对这些无法挂载的驱动器拍摄其序列号截图——这些是您的 parity 驱动器。
  4. 停止array
  5. 转到工具 → 新配置 然后选择保留当前分配的选项。
  6. 勾选确认要继续的复选框并点击应用
  7. 返回到选项卡,并使用您记下的序列号正确分配 parity 驱动器。
  8. 启动 array 以根据您的正确分配重建 parity

使用 ddrescue 恢复数据

当标准 Unraid 恢复方法(如 更换磁盘 过程)由于多个磁盘故障或 parity 无效不可行时,像 ddrescue 这样的专业工具可以帮助您从失败的驱动器中拯救尽可能多的数据。

Best 数据恢复实践

在开始之前,记住数据恢复是一个微妙的过程。尽可能从故障磁盘的副本工作,避免将新数据写入源磁盘。如果您的数据不可替代,请在尝试高级恢复之前考虑专业恢复服务。记录您的操作并花时间——仓促处理增加了永久性数据丢失的风险。

推荐通过 Nerd Tools 插件安装ddrescue(该插件在2022年取代了已弃用的NerdPack)。

要启用 ddrescue:

  1. 从 Unraid WebGUI应用程序选项卡中安装 Nerd Tools
  2. 打开 设置 → Nerd Tools 并启用 ddrescue

克隆故障磁盘

您需要一个健康的目标磁盘,它的大小至少与故障源磁盘一样大。确保在此过程中,无论是目标磁盘还是源磁盘都未挂载。开始前请仔细检查设备分配;错误的目标将覆盖并破坏其数据。

要克隆整个磁盘,请打开终端或 SSH 会话并运行以下命令:

ddrescue -f /dev/sdX /dev/sdY /boot/ddrescue.log
  • X 替换为你的源磁盘的字母,Y 替换为你的目标磁盘的字母。
  • /boot/ddrescue.log 文件将跟踪进度并允许你在进程被中断时恢复。

如果您希望在保持parity的同时直接克隆到array磁盘上,请使用md#设备并在维护模式下启动array

ddrescue -f /dev/sdX1 /dev/md\# /boot/ddrescue.log
  • 用您的源磁盘字母替换X(注意分区使用1)。
  • 替换 # 为你的目标磁盘编号。
注意

在运行ddrescue前请始终验证设备分配。使用错误的目标可能导致该磁盘上的数据完全丢失。

翻译 ddrescue 输出

在恢复过程中,ddrescue将显示实时进度。

以下是你可能在第一次通过时看到的示例:

GNU ddrescue 1.27
ipos: 926889 MB, non-trimmed: 1695 kB, current rate: 95092 kB/s
opos: 926889 MB, non-scraped: 0 B, average rate: 79236 kB/s
non-tried: 1074 GB, bad-sector: 0 B, error rate: 0 B/s
rescued: 925804 MB, bad areas: 0, run time: 3h 14m 44s
pct rescued: 46.28%, read errors: 54, remaining time: 3h 18m
time since last successful read: 0s
Copying non-tried blocks... Pass 1 (forwards)
What 这是什么意思?
  • ipos/opos:源和目标磁盘上的当前读写位置。
  • rescued:成功复制的数据量。
  • 坏区域/读取错误:遇到的问题区域和读取错误的数量。
  • 恢复百分比:到目前为止恢复的磁盘百分比。
  • 剩余时间:估计完成时间。
  • 正在复制未尝试的块...: ddrescue 正在首次尝试读取所有扇区。

在初始复制后,ddrescue将通过多次传递和有时以两种方向读取块来恢复坏扇区中的数据。这一阶段可能需要更长的时间,尤其是在磁盘严重损坏的情况下。

这是此阶段的示例输出:

GNU ddrescue 1.27
ipos: 17878 MB, non-trimmed: 0 B, current rate: 0 B/s
opos: 17878 MB, non-scraped: 362496 B, average rate: 74898 kB/s
non-tried: 0 B, bad-sector: 93696 B, error rate: 102 B/s
rescued: 2000 GB, bad areas: 101, run time: 7h 25m 8s
pct rescued: 99.99%, read errors: 260, remaining time: 25m
time since last successful read: 10s
Scraping failed blocks... (forwards)
What's 正在发生?
  • 刮取失败的块...: ddrescue正在重复尝试恢复不可读的扇区。
  • 坏区域/读取错误:随着 ddrescue 发现更多损坏,这些数字可能会增加,但目标是尽量减少无法恢复的数据。

挂载和检查已恢复的磁盘

ddrescue完成后,您可以尝试挂载目标磁盘。使用未分配的设备插件WebGUI中轻松挂载。如果磁盘无法挂载,请运行适当的文件系统修复工具,如xfs_repairbtrfs check。即使磁盘挂载了,运行文件系统检查以确保完整性也是一个好主意。

Once you have recovered the files, copy them to a safe location on your array. Be mindful that some files may be corrupt, especially if the disk had many unreadable sectors. Using checksums (or BTRFS with built-in checksumming) can help you identify damaged files.

没有校验和识别损坏文件

如果你没有校验和,你仍然可以使用 ddrescue 的填充模式识别受坏区影响的文件:

  1. 创建包含唯一字符串的临时文件:

    printf "Unraid " > ~/fill.txt
  2. 用该字符串填充克隆磁盘上的坏块:

    ddrescue --fill-mode='-' ~/fill.txt /dev/sdY /boot/ddrescue.log

    替换 Y 为目标磁盘并使用现有的 ddrescue 映射文件。