AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 859216
Accepted
Greg
Greg
Asked: 2017-07-04 22:21:25 +0800 CST2017-07-04 22:21:25 +0800 CST 2017-07-04 22:21:25 +0800 CST

如何在 zfs 中“重新平衡”数据?(确保数据分布在所有条带镜像中)

  • 772

以条带镜像(Raid 10)为例,如果将两个磁盘扩展为四个,如何将两个磁盘的数据在两个镜像之间“重新平衡”(分散)?

也就是说,如何将写入一个镜像的文件写入两个镜像以利用条带磁盘?

linux
  • 2 2 个回答
  • 10039 Views

2 个回答

  • Voted
  1. Best Answer
    user121391
    2017-07-04T23:21:44+08:002017-07-04T23:21:44+08:00

    只有新写入(附加)的数据会在所有当前活动的 vdev 之间拆分,ZFS 中没有显式的重新平衡操作。

    两种可能的解决方案:

    1. 等到所有旧数据被再次写入(因为 CoW,这可能需要很长时间,在最坏的情况下,是完全写入磁盘所需时间的两倍)。
    2. 删除所有数据并重新写入(zfs send/recv 有助于将所有数据从池中取出并返回而不会丢失任何内容)。这不必一次性完成,可以在同一个池中完成。

    更准确地说,我会选择第二种解决方案,并在系统负载较低的时候(例如晚上)分别传输每个文件系统:

    • 拍摄一个zfs snapshot -r大小合适的文件系统(以及递归文件系统)的快照 ( )
    • 使用zfs send | zfs recv适当的选项将快照发送到新创建的临时文件系统(如果空间允许,可以在同一个池中);此文件系统应与旧文件系统位于层次结构中的同一位置
    • 复制完成后(可能需要一些时间,因为磁盘要读写),zfs destroy旧快照和旧文件系统
    • zfs rename旧名称的临时系统
    • 检查和更改挂载点zfs mount,重新安排替换文件系统的先前情况
    • 重复直到所有文件系统都被移动
    • 12
  2. jason_uruguru
    2019-10-30T14:04:40+08:002019-10-30T14:04:40+08:00

    可能的第三种解决方案(如 SirMaster 在此 FreeNAS 论坛帖子中提到的):

    • 将新磁盘添加到 zpool
    • 将许多文件复制到另一个新的 /mnt/pool/temp/ 目录
    • 删除原始文件:rm -rf original/
    • 重命名目录:mv temp/ original/

    这是有效的,因为 ZFS 将按比例将写入写入具有最多可用空间的 vdev,在这种情况下是空的全新驱动器。(从 0.7 开始,zfs 将倾向于使用更快的驱动器进行写入,但假设您的 2 个新驱动器与原始驱动器具有相同或更高的性能)

    它可能比 慢zfs send | zfs recv,但更简单,因为您不必创建/销毁快照。

    您可以在zpool list -v前后运行以查看每个 vdev 利用率。

    此外,找到了一个 php脚本,它可以逐个文件地执行复制/删除/重命名过程。这与几年前类似(但 zvol)问题的答案相关联。(没有亲自测试这个脚本)

    • 6

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve