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 / 问题

问题[zfsonlinux](server)

Martin Hope
user489879
Asked: 2023-11-13 04:20:07 +0800 CST

Linux 上的 ZFS 磁盘替换最佳实践

  • 9

我有一个运行 Fedora 29(内核版本 4.20.8)和 zfs 版本 0.7.12 的 8 盘位 NAS。所有驱动器托架均用于名为“tank”的 zfs 池。这是 zpool 布局:

tank
  mirror-0
    sda
    sdb
  mirror-1
    sdc
    sdd
  mirror-2
    sde
    sdf
  cache
    sdg
  spare
    sdh

其中一个驱动器 (sdb) 由于未更正的脱机重新分配扇区而未能通过 SMART 测试,但“zpool 状态”仍显示为“在线”。我想用新驱动器 (sdi) 物理替换 sdb。

由于没有可用的物理托架,我计划使用以下内容来更换驱动器:

 zpool offline tank sdb
 zpool replace tank sdb sdh
 zpool detach tank sdb
 echo 1 | sudo tee /sys/block/sdb/device/delete
 # Remove the physical hard drive associated with sdb and plug in new physical drive mapped to sdi

我不知道如何最好地从这里开始。是否更好:(a) 仅添加 sdi 作为新的备用驱动器(留下 sdh 作为 sdb 的永久替代品) zpool add tank spare sdi (b) 用 sdi 替换 sdh 并使 sdh 返回备用驱动器池?

 zpool replace tank sdi sdh
 zpool detach tank sdh

在这种情况下,“更好”意味着未来管理复杂性会降低(例如,如果 sdh 在应用选项 (a) 时出现故障,“分离”或其他命令是否会失败或产生意外结果,因为 sdh 曾经是备用设备?)?另外,我不确定选项(b)下的步骤是否遗漏/不正确。

笔记:

  1. 简化的池名称(例如 vdev 是映射的 ID)
  2. 知道内核/ zfs 很古老,但在升级之前解决此故障驱动器
  3. 控制卡和托架支持热插拔
  4. 搜索并阅读了有关 ZoL 磁盘替换的主题以及 Oracle 文档,但没有看到有关最佳实践的主题(如果我错过了,抱歉)
zfsonlinux
  • 2 个回答
  • 854 Views
Martin Hope
Srujan Deshpande
Asked: 2022-02-15 22:15:56 +0800 CST

从另一台机器的磁盘快照导入 ZFS 池

  • 0

我在 Azure 上有一台服务器,其中安装了一个包含 ZFS 文件系统的磁盘。我还有一个要挂载到新服务器的磁盘快照(取自 Azure,而不是 zfs 快照)。

从快照创建的磁盘在新服务器上可见,带有lsblk.

sdc      8:32   0  256G  0 disk
├─sdc1   8:33   0    8G  0 part
└─sdc2   8:34   0  248G  0 part

/dev/sdc2 是我想在 zfs 中挂载并包含数据的内容。

跑步zpool import -a说no pools available to import。

第一次使用 zfs,所以我不知道从这里做什么。可以做些什么来挂载 ZFS 磁盘?

zpool export在拍摄快照之前未在原始服务器上运行。这是必需的还是可以解决的?

原始服务器操作系统:CentOS Linux 版本 7.7.1908(核心)
新服务器操作系统:CentOS Linux 版本 7.9.2009(核心)
不同的操作系统版本会导致问题吗?

zfs centos7 zfsonlinux
  • 1 个回答
  • 163 Views
Martin Hope
sherpaurgen
Asked: 2021-11-29 20:28:28 +0800 CST

由于磁盘/控制器速度慢而导致冻结启动

  • 2

我在戴尔 r740xd 上运行 ubuntu 20.04,其中一个磁盘控制器似乎在服务器启动时显示磁盘(用于 openzfs 池的多路径磁盘)速度很慢。如果服务器从“恢复模式”->“恢复正常启动”启动,则检测到慢速控制器磁盘并正常导入。直到现在我已经尝试通过编辑文件 /etc/default/grub 在 grub cmdline 选项中添加 rootdelay=300 选项

GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=300"
update-grub
update-initramfs -u

但是我没有观察到任何延迟并且启动卡住了

如果控制器插槽从 BIOS 中禁用,服务器将正常启动而不使用恢复模式(但它不是一个选项)。

在此处输入图像描述

linux zfs grub zfsonlinux
  • 2 个回答
  • 73 Views
Martin Hope
soulmerge
Asked: 2021-11-11 01:38:13 +0800 CST

从缺少设备的 zpool 中恢复数据

  • 1

我有一个由两个镜像驱动器组成的 zpool,用于存储我的所有个人数据。我想添加另一个镜像驱动器,因为其他驱动器已经使用了好几年了。相反,我设法削弱了池,无法再导入它。

这是在我做任何事情之前池(称为“保险库”)的原始布局:

vault
  mirror-0
    sdd
    sdh

我尝试通过发出来添加另一个驱动器zpool add vault /dev/sdc,并从 zpool 收到警告(关于期待 vdev,但 scd 是磁盘)。我忽略了警告,并强制操作-f(是的,这很愚蠢......)

我最终得到了以下池配置:

vault
  mirror-0
    sdd
    sdh
  sdc

注意到 sdc 不是镜像的一部分,我尝试再次将其从池中删除,并意识到这是不可能的。我忽略了额外的驱动器并重新启动,并假设我的数据在 mirror-0 中已经是安全的,并决定使用重新利用 sdc 并改用另一个驱动器,用零覆盖前 100MB 的 sdc:(dd if=/dev/zero of=/dev/sdc bs=1MB count=100是的,我今天特别愚蠢... )

现在,当我尝试导入我的 zpool 时,我收到以下错误:

root@atlas:~# zpool import                                                                                                                         
   pool: vault                                                                                                                                     
     id: 3553551207657826252                                                                                                                       
  state: UNAVAIL                                                                                                                                   
 status: One or more devices are missing from the system.                                                                                          
 action: The pool cannot be imported. Attach the missing                                                                                           
        devices and try again.                                                                                                                     
   see: http://zfsonlinux.org/msg/ZFS-8000-6X                                                                                                      
 config:                                                                                                                                           
                                                                                                                                                   
        vault        UNAVAIL  missing device                                                                                                       
          mirror-0   ONLINE                                                                                                                        
            sdd      ONLINE                                                                                                                        
            sdh      ONLINE                                                                                                                        
                                                                                                                                                   
        Additional devices are known to be part of this pool, though their                                                                         
        exact configuration cannot be determined.                                                                                                  

这些驱动器上镜像中的数据对我来说非常重要,我真的希望有一种方法可以从“部分”池中恢复数据。由于我在虚假操作后几分钟重新启动add,我假设文件系统的元数据已被擦除,并且有一种方法可以以某种方式访问​​原始数据。但我不知道从哪里开始。

谁能帮我这个?

linux debian zfs data-recovery zfsonlinux
  • 1 个回答
  • 350 Views
Martin Hope
joaerl
Asked: 2021-11-08 23:28:08 +0800 CST

zfs zfs recv 是否验证校验和?

  • 0

似乎 zfs send 包含所有包含数据的校验和(例如此处说明)。这个校验和是否由 zfs recv 自动验证?我认为是这样,但我找不到任何证实。我打算使用 zfs send/recv 将 zpool 迁移到另一个磁盘,并希望在销毁原始池之前 100% 确定数据正常。

zfs data-integrity zfsonlinux openzfs
  • 1 个回答
  • 137 Views
Martin Hope
MechMK1
Asked: 2021-10-02 01:22:52 +0800 CST

创建一个包含大量镜像 vdev 的 zpool 有意义吗?

  • 3

作为前缀,我对 ZFS 比较陌生。我的目标是创建一个内部 NAS 系统,并尽量减少丢失所有数据的可能性。

我目前已经购买了四个 4TB 磁盘,我计划在一个带有两个镜像 vdev 的 zpool 中运行它们,如下所示:

  pool: data
 state: ONLINE
  scan: none requested
config:

    NAME                STATE     READ WRITE CKSUM
    data                ONLINE       0     0     0
      mirror-0          ONLINE       0     0     0
        <disk 0>        ONLINE       0     0     0
        <disk 1>        ONLINE       0     0     0
      mirror-1          ONLINE       0     0     0
        <disk 2>        ONLINE       0     0     0
        <disk 3>        ONLINE       0     0     0

稍后使用更多磁盘扩展 zpool 时,继续添加 是否有意义,mirror-2每个mirror-3磁盘有两个配对磁盘?

zfs zfsonlinux
  • 2 个回答
  • 1750 Views
Martin Hope
Josh
Asked: 2021-03-15 11:23:03 +0800 CST

ZFS 快照真的“免费”吗?

  • 2

我多次听说 ZFS 快照是“免费的”,因为 ZFS 的写时复制设计快照不占用任何磁盘空间,除非数据发生更改,然后才将空间使用限制在实际的块改变了。Stack Exchange 上的许多答案以及整个互联网上的帖子都提出了这种说法或说使用的空间“可以忽略不计”

这些陈述的准确性如何?ZFS 快照实际使用了多少磁盘空间?

zfs zfsonlinux
  • 1 个回答
  • 931 Views
Martin Hope
tango
Asked: 2021-02-16 23:22:34 +0800 CST

ZFS:设备 vdev 徘徊,导致 zpool 故障

  • 4

我有一个 zpool,在断电重新启动服务器和设备名称后,它现在显示为 FAULTED 状态。我知道我通过设备名称添加 vdev 搞砸了,但不知道它可以在创建和填充池后更改。目前,池正在寻找“/dev/sde”(而不是“/dev/sdc”),而“/dev/sde”是 root fs 所在的设备,我不确定如何在没有潜在风险的情况下进行任何恢复更糟糕。

希望有一种方法可以简单地将 zpool 重新配置为使用“sdc”,以便能够使用“by-id”命名导出和重新导入,以避免将来出现这种情况。

root@boxey:~# zpool status
  pool: data
 state: FAULTED
status: One or more devices could not be used because the label is missing
        or invalid.  There are insufficient replicas for the pool to continue
        functioning.
action: Destroy and re-create the pool from
        a backup source.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        data        UNAVAIL      0     0     0  insufficient replicas
          raidz1-0  UNAVAIL      0     0     0  insufficient replicas
            sda     ONLINE       0     0     0
            sde     UNAVAIL      0     0     0
            sdd     FAULTED      0     0     0  corrupted data
            sdb     FAULTED      0     0     0  corrupted data


root@boxey:~# lsblk --output=NAME,FSTYPE,LABEL,SIZE,UUID
NAME   FSTYPE     LABEL        SIZE UUID
sda                            2.7T
├─sda1 zfs_member data         2.7T 166412156792699288
└─sda9                           8M
sdb                            2.7T
├─sdb1 zfs_member data         2.7T 166412156792699288
└─sdb9                           8M
sdc                            2.7T
├─sdc1 zfs_member data         2.7T 166412156792699288
└─sdc9                           8M
sdd                            2.7T
├─sdd1 zfs_member data         2.7T 166412156792699288
└─sdd9                           8M
sde                           55.9G
├─sde1 ext4                   53.6G f2d9733a-846d-48c2-bb63-c7f4e0345ad5
├─sde2                           1K
└─sde5 swap                    2.3G 6c34cadd-db42-4e14-a647-733e021c018e

root@boxey:~# zpool export -f data
cannot export 'data': one or more devices is currently unavailable

root@boxey:~# zdb
data:
    version: 5000
    name: 'data'
    state: 0
    txg: 23300202
    pool_guid: 166412156792699288
    errata: 0
    hostid: 8323329
    hostname: 'boxey'
    com.delphix:has_per_vdev_zaps
    vdev_children: 1
    vdev_tree:
        type: 'root'
        id: 0
        guid: 166412156792699288
        children[0]:
            type: 'raidz'
            id: 0
            guid: 1294813595973345307
            nparity: 1
            metaslab_array: 34
            metaslab_shift: 36
            ashift: 12
            asize: 12002313371648
            is_log: 0
            create_txg: 4
            com.delphix:vdev_zap_top: 39
            children[0]:
                type: 'disk'
                id: 0
                guid: 4873892069497714664
                path: '/dev/sda1'
                whole_disk: 1
                DTL: 101
                create_txg: 4
                com.delphix:vdev_zap_leaf: 40
            children[1]:
                type: 'disk'
                id: 1
                guid: 16241503886070383904
                path: '/dev/sde1'
                whole_disk: 1
                DTL: 100
                create_txg: 4
                com.delphix:vdev_zap_leaf: 41
            children[2]:
                type: 'disk'
                id: 2
                guid: 1910545688695459106
                path: '/dev/sdd1'
                whole_disk: 1
                DTL: 99
                create_txg: 4
                com.delphix:vdev_zap_leaf: 42
            children[3]:
                type: 'disk'
                id: 3
                guid: 2766829802450425996
                path: '/dev/sdb1'
                whole_disk: 1
                DTL: 98
                create_txg: 4
                com.delphix:vdev_zap_leaf: 43
    features_for_read:
        com.delphix:hole_birth
        com.delphix:embedded_data
zfs zfsonlinux zpool
  • 1 个回答
  • 432 Views
Martin Hope
magikid
Asked: 2021-02-04 10:56:29 +0800 CST

在 snapd 启动之前挂载 ZFS 池

  • 1

我有一个安装点位于的 zpool /var。当我启动我的服务器时,该snapd服务总是抛出一堆错误并且无法启动,因为它尝试从 to 安装一堆东西/var,/snap但它在安装之前尝试zpool安装,所以还没有任何东西/var。

安装 zpool 后如何snapd尝试这些安装?

systemd zfsonlinux snap
  • 1 个回答
  • 170 Views
Martin Hope
NikoNyrh
Asked: 2021-01-16 06:03:52 +0800 CST

两个 HDD 上的 ZFS 慢速擦除

  • 2

该池由配置中的两个 HDD(WD Red 3 TB,5200 RPM?,最大传输速率 147 MB​​/s 和 Verbatim (Toshiba) 3 TB,7200 RPM)组成raidz1-0。它有 2.25 TB 的数据,复制到两个磁盘,因此总量为 4.5 TB。创建池时,我没有指定ashift值。

zpool status显示“扫描:在 2021 年 1 月 3 日星期日 13:58:54 的 32h43m 中以 0 个错误修复了 0”。这意味着扫描速度只有4.5e6 / (32.717 * 60 * 60) = 38.2 MB / s. 我预计至少 2 x 100 或高达 2 x 200 MB/s,尽管 WD 磁盘比另一个磁盘慢一些。

磁盘的 SMART 数据显示一切正常。它们有 6.5 - 7 年的通电时间,但启停次数仅为 200 次左右。

所以主要问题是:什么可以解释糟糕的读取性能?

奇怪zdb的是,池使用路径/dev/disk/by-id/ata-WDC_WD30EFRX-xyz-part1而不是/dev/disk/by-id/ata-WDC_WD30EFRX-xyz. fdisk -l /dev/disk/by-id/ata-WDC_WD30EFRX-xyz提到“分区 1 不是从物理扇区边界开始”,但我读到它只会损害写入性能。我可能会尝试通过删除设备并使用正确的全磁盘路径将其添加回来来解决此问题,因为数据是重复的(并已备份)。

该池有 710 万个文件。我sha1sum在通过 清除缓存后测试了在 14276 MB 文件上运行/proc/sys/vm/drop_caches,花了 2 分 41 秒将读取速度设置为 88.5 MB/s。

dd bs=1M count=4096 if=/dev/disk/by-id/ata-WDC_WD30EFRX-xyz of=/dev/null报告了 144 MB/s 的速度,使用它ata-WDC_WD30EFRX-xyz-part1报告了 134 MB/s 和ata-TOSHIBA_DT01ACA300_xyz报告了 195 MB/s。

我的 NAS 运行相当旧的软件版本:

$ modinfo zfs
filename:       /lib/modules/3.11.0-26-generic/updates/dkms/zfs.ko
version:        0.6.5.4-1~precise
license:        CDDL
author:         OpenZFS on Linux
description:    ZFS
srcversion:     5FC0B558D497732F17F4202
depends:        spl,znvpair,zcommon,zunicode,zavl
vermagic:       3.11.0-26-generic SMP mod_unload modversions 

它有 24 GB 的 RAM,其中 8 GB 是为 JVM 保留的,其余的可以免费使用。虽然似乎没有多少是免费的:

$ free -m
             total       used       free     shared    buffers     cached
Mem:         23799      21817       1982          0        273       1159
-/+ buffers/cache:      20384       3415
Swap:         7874         57       7817

编辑 1:

我bonnie++使用 RAIDZ 上的单个 4 GB 文件进行了一些测试:写入 75.9 MB/s、重写 42.2 MB/s 和读取 199.0 MB/s。我假设我从“千字符/秒”正确地进行了转换。

啊,刚才我意识到并行擦洗所需的时间与最慢的 5400 RPM 磁盘一样长,7200 RMP(可能)擦洗得更快并不重要。

编辑 2:

我将池中的文件数量从 710 万个减少到 450 万个(-36.6%),清理时间从 32.72 小时减少到 16.40 小时(-49.9%)。数据量是相同的,因为我只是将这些小文件放入低压缩的 ZIP 中。

我还将recordsize从 128k 增加到 512k,不知道这在这种情况下是否有所不同。其他预先存在的数据没有被触及,因此它们保留了原始recordsize. 哦,/sys/module/zfs/parameters/zfs_scan_idle被设置为2。

zfs zfsonlinux
  • 1 个回答
  • 532 Views

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