标签: zfsonlinux

ZFS 报告(在 FreeBSD 和 Linux 上通过 ZoL)

作为 mdadm 的长期用户,刚刚遇到磁盘错误并记得我为 mdadm 配置了自动邮件报告磁盘错误。

因此我只需要在/etc/mdadm/mdadm.conf 中插入我的邮件地址

MAILADDR someone@exaplme.org
Run Code Online (Sandbox Code Playgroud)

但是我真的很想念 FreeBSD 上的那个。由于我的 ZFS RAID6 现在运行了半年多,我想如果磁盘出现故障会发生什么?

我从未配置任何外部邮件地址。有没有简单的方法来完成测试这个?

就像在 mdadm 上一样:

sudo mdadm –monitor –scan –test
Run Code Online (Sandbox Code Playgroud)

我将如何使用 ZoL(Linux 上的 ZFS)在 Linux 上执行此操作?

编辑:对不起,我的意思是自动报告。没有预定。

我知道我可以每分钟构建一个脚本并解析 zpool status -X。但我认为这不是完成报告问题的一种非常优雅的方法。最好在磁盘故障时立即得到通知(如 mdadm)

编辑[2]:感谢您的建议,但我没有遇到一些脚本问题,有人可以帮我解决 /bin/sh 中的 for 循环问题 -> PASTEBIN

编辑[3]:得到了我的 for 循环问题。:)(在PSTEBIN 中更新)

对我的脚本还有什么建议吗?

freebsd zfs reporting drive-failure zfsonlinux

5
推荐指数
1
解决办法
2463
查看次数

MongoDB 和 ZFS 性能不佳:磁盘总是忙于读取而只做写入

我在使用 ZFSonlinux 的 MongoDB(我相信它是 mmapped DB)时遇到了巨大的性能问题。

我们的 Mongodb 几乎只写。在没有 ZFS 的副本上,磁盘完全忙于大约 5 秒的峰值,当应用程序每 30 秒写入一次数据库时,并且中间没有磁盘活动,因此我将其作为比较的基准行为。
在具有ZFS副本,盘完全是忙碌所有的时间,与副本有点吃力跟上与MongoDB的主。我在所有副本上都启用了 lz4 压缩,并且节省的空间很大,因此访问磁盘的数据应该少得多

所以在这些 ZFS 服务器上,我首先使用默认的 recordsize=128k。然后我在重新同步 Mongo 数据之前擦除了数据并设置了 recordsize=8k。然后我再次擦拭并尝试recordsize = 1k。我也试过 recordsize=8k 没有校验和

尽管如此,它并没有解决任何问题,磁盘始终保持 100% 忙碌。仅在记录大小= 8k 的一台服务器上,磁盘比任何非 ZFS 副本忙得多,但是在尝试不同的设置并再次尝试记录大小= 8k 后,磁盘为 100%,我看不到以前的良好行为,并且在任何其他副本上也看不到它。

此外,应该几乎只有写入,但看到在不同设置下的所有副本上,磁盘完全忙于 75% 的读取和仅 25% 的写入

(注意,我相信 MongoDB 是 mmapped DB。有人告诉我在 AIO 模式下尝试 MongoDB,但我没有找到如何设置它,并且在另一台运行 MySQL InnoDB 的服务器上,我意识到 ZFSonLinux 无论如何都不支持 AIO。)

我的服务器是 CentOS 6.5 内核 2.6.32-431.5.1.el6.x86_64。spl-0.6.2-1.el6.x86_64 zfs-0.6.2-1.el6.x86_64

#PROD 13:44:55 root@rum-mongo-backup-1:~: zfs list
NAME                     USED  AVAIL  REFER  MOUNTPOINT
zfs                      216G  1.56T …
Run Code Online (Sandbox Code Playgroud)

zfs mongodb zfsonlinux

5
推荐指数
3
解决办法
6271
查看次数

ZFS - 从备份恢复或修复快照中损坏的文件?

池的快照中的文件数据遭受永久性数据损坏。如果文件数据是文件系统的一部分(而不是任何快照的一部分),我可以简单地从合适的备份副本中恢复文件。如何从快照副本或池的(部分1)副本恢复或修复(并清除 ZFS 报告的错误)快照中的文件?

1部分副本至少包含受影响的快照,并且先前的快照也在受影响的池中。

例子

这是一个易于复制的极其人为的示例:

从(bash)shell 提示符:

cd
mkdir zfs-test
for i in {1..2}; do dd if=/dev/zero of=zfs-test/tank-file$i bs=1G count=1 &> /dev/null; done

sudo zpool create tank1 ~/zfs-test/tank-file1
sudo zpool create tank2 ~/zfs-test/tank-file2

sudo zfs snapshot tank1@snapshot1
sudo sh -c 'zfs send tank1@snapshot1 | zfs receive -F tank2'
Run Code Online (Sandbox Code Playgroud)

创建一个文本文件/tank1/test-text-file,其内容可以在十六进制编辑器中轻松找到。这是我使用的:

Lorem ipsum dolor 坐 amet,consectetuer adipiscing 精英。Aenean commodo ligula eget dolor。埃尼马萨。Cum sociis natoque penatibus et magnis disparturient montes, nascetur ridiculus mus. Donec quam felis、ultricies nec、pellentesque …

zfs data-recovery zfsonlinux

5
推荐指数
1
解决办法
5888
查看次数

如何设置 zfs-auto-snapshot 应保留的快照数量?

使用以下zfs-auto-snapshot命令,如何指定保留 52 个每周快照和无限数量的每月快照?

sudo zfs set com.sun:auto-snapshot=true storage
sudo zfs set com.sun:auto-snapshot:weekly=true storage
sudo zfs set com.sun:auto-snapshot:monthly=true storage
Run Code Online (Sandbox Code Playgroud)

当我将它指定为关键字或参数时,它两次都失败了:

sudo zfs set com.sun:auto-snapshot:weekly=true storage keep=52
cannot open 'keep=52': invalid dataset name

sudo zfs set com.sun:auto-snapshot:weekly=true storage --keep=52
cannot open '--keep=52': invalid dataset name
Run Code Online (Sandbox Code Playgroud)

linux ubuntu zfs snapshot zfsonlinux

5
推荐指数
1
解决办法
1万
查看次数

从 zfs-0.6.2-1.el6.x86_64 到 zfs-0.6.3-1.el6.x86_64 的更新使 zpool 无法读取

运行# yum update zfs并重新启动后,我的CentOS 6 ZFS on Linux系统无法再看到它的 zpools 或与其交互。

# zpool status
no pools available
# zpool import
zpool: ../../lib/libzfs/libzfs_import.c:356: Assertion `nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_POOL_GUID, &theguid) == 0' failed.
Aborted
# dmesg | grep -i spl 
SPL: Loaded module v0.6.2-1 
SPL: using hostid 0x43a4c8a0
Run Code Online (Sandbox Code Playgroud)

这是一个金丝雀系统,所以我不担心它的内容,但我有其他机器,我最终希望安全升级。我做错了什么,更重要的是我怎样才能对重要的系统做正确的事?

linux zfs centos6 zfsonlinux

4
推荐指数
2
解决办法
1447
查看次数

ZFS 快照发送增量

我一直很高兴地将zfsnap与 CentOS 和 ZFSonLinux 以类似于网站上描述的脚本方式使用,但遇到了问题。不幸的是,几天前备份没有运行,现在我陷入了一个奇怪的境地。我在主 ZFS 服务器上的备份 ZFS 服务器上有一系列增量备份,在主服务器上有一些较新的快照。不幸的是,由于主服务器上旧快照的丢失和自动销毁,两个系统之间不再有公共快照来执行增量发送。即备份有:

backuppool/x@snap2 
backuppool/x@snap3
backuppool/x@snap4
Run Code Online (Sandbox Code Playgroud)

在主 zfs 服务器上有:

mainpool/x@snap6 
mainpool/x@snap7
mainpool/x@snap8
Run Code Online (Sandbox Code Playgroud)

有没有办法让它们再次同步,或者我是否必须销毁备份中的所有内容并执行完整备份(没有足够的空间进行两次完整备份)?我尝试从主服务器指定一个引用远程备份服务器上 snap4 名称的发送,但由于主服务器没有 snap 4,因此无法计算增量。我还尝试将 snap4 从备份发送到主服务器,但似乎唯一的方法是将其作为完整发送(没有足够的空间)进行,并且我需要清除现有快照。如果快照不匹配,删除所有备份历史记录似乎很不方便,在这种情况下有什么解决方案吗?

linux zfs zfsonlinux centos7

4
推荐指数
1
解决办法
1548
查看次数

如何将常规 LXC 容器迁移到 Proxmox LXC 容器?

如何将常规 LXC 容器(从另一个或同一服务器)迁移到 Proxmox LXC 容器,该容器可以通过 Proxmox Web GUI 访问?

例如,我通过运行创建了一个容器:

lxc-create -n debian8 -t debian -- -r jessie

Proxmox 不会自动提取此容器。我可以看到存储在 中的相关数据/var/lib/lxc,并且这样的容器具有常规的根文件系统,这与 Proxmox LXC 容器创建的原始磁盘不同,后者安装在 ZFS rpool 上。(我使用 ZFS 进行存储,由 Proxmox ISO 安装程序配置。)

另一个区别是,Proxmox 使用自己的 LXC 配置文件。

使用 Proxmox 导入/转换和注册此类容器的最佳程序是什么?

zfs lxc proxmox zfsonlinux

4
推荐指数
1
解决办法
9713
查看次数

如何向镜像 vdev 添加更多物理磁盘(以增加冗余)?

创建 zpool 后,是否可以将更多物理驱动器添加到镜像 vdev?

例如,如果使用以下命令创建 zpool:

zpool create test_pool mirror /dev/sd0 /dev/sd1 mirror /dev/sd2 /dev/sd3
Run Code Online (Sandbox Code Playgroud)

是否可以向 vdev 添加更多驱动器以增加其冗余?即镜像驱动器的数量可以从1增加到2吗?

linux zfs mirror zpool zfsonlinux

4
推荐指数
1
解决办法
3796
查看次数

ZFS 导入后缓存设备不正确

我最近从 Ubuntu 机器迁移到 Arch Linux 机器。

我使用 导入了池zpool import -f tank,它报告我的缓存驱动器出现故障,但我的存储驱动器工作正常。它是一个带有 5 个驱动器的 raidz2。奇怪的是,它报告错误的驱动器作为缓存。它的上市sde,应该是什么时候sdg。请注意,sde它也被列为存储设备。

    ? zpool status
  pool: tank
 state: ONLINE
status: One or more devices could not be used because the label is missing or
    invalid.  Sufficient replicas exist for the pool to continue
    functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: scrub canceled on Tue Dec 29 21:16:30 2020
config:
 
    NAME        STATE     READ …
Run Code Online (Sandbox Code Playgroud)

zfs zfsonlinux

4
推荐指数
1
解决办法
232
查看次数

ZFS:设备 vdev 徘徊故障 zpool

我有一个 zpool 现在在断电重新启动服务器和设备名称后显示为 FAULTED 状态。我知道我通过按设备名称添加 vdevs 搞砸了,但不知道它可以在创建和填充池后更改。目前,池正在寻找“/dev/sde”(而不是“/dev/sdc”),“/dev/sde”是根 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 …
Run Code Online (Sandbox Code Playgroud)

zfs zpool zfsonlinux

4
推荐指数
1
解决办法
285
查看次数