我已将 Ubuntu 从 13.04 版更新到 13.10 版,结果发现 SATA 磁盘 ID 已更改,并且我的 ZFS 池现在出现故障。
在新的 Ubuntu 13.10 上,磁盘 ID 现在是 ata-* 而不是 scsi-SATA_*。
这是更新后的池状态:
pool: nestpool
state: UNAVAIL
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
nestpool UNAVAIL 0 0 0 insufficient …Run Code Online (Sandbox Code Playgroud) 这是关于 Linux (CentOS 7) 上的 zfs 的问题。我的设置非常简单,有两个 8 TB 磁盘,一个磁盘镜像另一个磁盘。
zpool create -f -o ashift=12 $zpoolName 镜像 $disksById
根据 zpool 手册页,如果需要更换其中一个磁盘,则替换磁盘的大小必须等于或大于配置中两个磁盘中最小磁盘的大小。据我了解,不同品牌和型号(以及型号修订版)的驱动器之间的确切大小通常略有不同,即使它们都标记为 8 TB,这是很常见的。但是,我希望能够将其替换为任何其他 8 TB 磁盘,不一定是相同品牌和型号的。
我该如何实现这一目标?
我本来期望 zpool create 命令有一个选项,这样就不会将整个磁盘用于池,而是留下一些余量,但是我找不到这样的选项。我看到的唯一建议是在创建池之前对磁盘进行分区,创建一个“池”分区和一个“松弛”分区,但我读过这会影响磁盘性能,因为磁盘缓存无法正确使用zfs,所以我想我想避免这种情况。
我目前正在为无盘启动设置 SAN。我的后端由通过 iSCSI 共享的 ZFS-Vol 组成。到目前为止,除了 TRIM/UNMAP 之外,一切正常。为了测试目的,我在 VirtualBox 中设置了两个运行 Ubuntu20.04 的虚拟机,这些虚拟机通过具有静态 IPv4 地址的内部网络联网在一起。在目标 (tgt) 上有第二个用 ZFS 格式化的虚拟驱动器。在这个 zpool 上,我创建了一个 zVol 并使用 GPT 和 ext4 对其进行了格式化。
/etc/tgt/conf.d/iscsi.conf
<target example.com:lun1>
<backing-store /dev/zvol/tank/iscsi_share>
params thin_provisioning=1
</backing-store>
initiator-address 192.168.0.2
</target>
Run Code Online (Sandbox Code Playgroud)
在启动器 (open-iscsi) 上,我使用此命令来引发 TRIM 操作:
sudo mount /dev/sdb1 /iscsi-share
sudo dd if=/dev/zero of=/iscsi-share/zero bs=1M count=512
sudo rm /iscsi-share/zero
sudo fstrim /iscsi-share
Run Code Online (Sandbox Code Playgroud)
但外壳以“fstrim:/iscsi-share:不支持丢弃选项”作为响应。如果我在目标机器上发出这些命令,zVol 的“REFER”属性会按预期减少。
由于我在搜索网络时一无所获,因此我没有发现任何关于为什么这不起作用或者这是否可行的提示。
编辑:因为我得到了使用选项Thin_provisioning的建议。
在我重新分区驱动器并将其安装在启动器上后,我收到blk_update_request: critical target error, dev sdb, sector 23784 op 0x9:(WRITE_ZEROES) flags 0x800 phys_seg 0 prio …
昨天,我将一个新磁盘放入我的服务器。可悲的是,在出现故障之前我没有检查磁盘。
我使用命令将它添加到我的池中 zpool add nas /dev/disk/by-id/scsi-SATA_ST31500341AS_9VS27Z4M-part1
不久之后,服务器的 CPU 负载几乎达到无穷大,我什至无法重新登录。
所以我执行了硬重启(Alt + SysRq + b),但服务器无法启动。(在 GRUB 出现后,大约 5 分钟内没有发生任何事情。然后,我将其关闭并取出新磁盘。我启动并工作。
但是现在,我遇到了问题,我无法访问所谓的“nas”池,因为最后一个(新)磁盘显示为状态“UNAVAIL”,并且因为它不是镜像池,所以整个池都在状态 UNAVAIL。
如果我再次放入磁盘并执行操作,zpool online nas /dev/disk/by-id/scsi-SATA_ST31500341AS_9VS27Z4M-part1则它不起作用并告诉我“找不到磁盘”。
因此,我尝试了从 oracle-docs 中读取的一些可能性,并使用zpool export nas. 现在,我什至无法导入池。
zpool import nas -f
cannot import 'nas': one or more devices is currently unavailable
Run Code Online (Sandbox Code Playgroud)
如果我查看zpool import,它会告诉我:
pool: nas
id: 3366469163144781663
state: UNAVAIL
status: One or more devices are missing from the system.
action: The pool cannot be imported. Attach the missing
devices and try …Run Code Online (Sandbox Code Playgroud) 我有一台运行 4 年版 Ubuntu 12.04 LTS 的服务器,机器上安装了zfsonlinux ,并具有 1.5TB 镜像驱动器设置。Ubuntu 16.04 LTS 没有升级路径,因此我必须重新映像引导驱动器,但它具有对 ZFS 的本机支持。
在升级过程中我需要做什么来确保在升级后的计算机上仍然可以访问池?
我有 2x3TB 的 GPT 磁盘和 zpool,在第一个磁盘 (sda4) 上使用 2.7TB 分区,在第二个磁盘 (sdb4) 上使用 1TB。
\n\n原因是最初两个磁盘都只有 1TB,我随后将它们都替换为 3TB。但在我拥有 1x1TB 和 1x3TB 期间,我将剩余的 3TB 用于另一个分区,现在我想删除该分区。
\n\n我在 Linux 上使用最新的 ZFS (0.6.5.7-8-wheezy)。将池大小调整为完整 2.7TB 的正确方法是什么?
\n\nautoresize目前已关闭。lsblk这是和的当前输出zpool status:
# lsblk\nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\nsda 8:0 0 2,7T 0 disk\n\xe2\x94\x9c\xe2\x94\x80sda1 8:1 0 1M 0 part\n\xe2\x94\x9c\xe2\x94\x80sda2 8:2 0 14,5G 0 part\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80md0 9:0 0 14,5G 0 raid1 /\n\xe2\x94\x9c\xe2\x94\x80sda3 8:3 0 4,2G 0 part\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80md2 9:2 0 4,2G 0 …Run Code Online (Sandbox Code Playgroud) 我有一个 Arch linux ZFS 备份系统,它很长时间没有更新,因为它运行良好,没有理由打扰。但是,在最近升级之后,我的 ZFS 数据集在我重新启动时不再自动挂载。不幸的是,这些服务没有指示任何错误消息,我可以运行
# zfs mount -a
Run Code Online (Sandbox Code Playgroud)
系统启动后没有问题。一些细节:
[root@elephant etc]# uname -a
Linux elephant 4.16.11-1-ARCH #1 SMP PREEMPT Tue May 22 21:40:27 UTC 2018 x86_64 GNU/Linux
[root@elephant etc]# pacman -Q | grep spl
spl-dkms 0.7.9-1
spl-utils 0.7.9-1
[root@elephant etc]# pacman -Q | grep zfs
zfs-dkms 0.7.9-1
zfs-utils 0.7.9-1
root@elephant etc]# zfs get mountpoint backup/www
NAME PROPERTY VALUE SOURCE
backup/www mountpoint /backup/www default
[root@elephant etc]# zfs get mountpoint backup/data
NAME PROPERTY VALUE SOURCE
backup/data mountpoint /backup/data default …Run Code Online (Sandbox Code Playgroud) 我在 VM 中运行 Debian 10(使用 KVM),并且想以非 root 用户身份使用 ZFS。这就是我所做的。
我将此行添加到我的sources.list 文件中
deb http://deb.debian.org/debian buster-backports main contrib non-free
Run Code Online (Sandbox Code Playgroud)
这是我完整的sources.list 文件
deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free
deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb-src http://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb http://deb.debian.org/debian buster-updates main contrib non-free
deb-src http://deb.debian.org/debian buster-updates main contrib non-free
deb http://deb.debian.org/debian buster-backports main contrib non-free
Run Code Online (Sandbox Code Playgroud)
我安装了ZFS
sudo apt install zfs-dkms zfsutils-linux -y
Run Code Online (Sandbox Code Playgroud)
然后在安装过程中出现以下错误
Failed to start Mount ZFS filesystems
Run Code Online (Sandbox Code Playgroud)
我通过运行解决了我的问题
sudo /sbin/modprobe zfs
sudo …Run Code Online (Sandbox Code Playgroud) 我想转换 (Ubuntu 20.04) 服务器上的大量 ZFS 数据集(大约 3 TB 数据)。我已经对此进行了一些测试,到目前为止我一直在做的是:
zfs create -o encryption=on -o keyformat=passphrase -o mountpoint=/mnt/encrypted tank/encryptedrsync来自(已安装的)未加密数据集的所有数据,即/opt/stuff加密数据集的安装 ( /mnt/encrypted)/mnt/encrypted为/opt/stuff。上面的方法是有效的,但也许 ZFS 中有一些东西可以让它变得更容易,甚至可能让我保留我的快照并加密它们(ZFS 论坛对最后一点说不)。
首先,我对 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
Run Code Online (Sandbox Code Playgroud)
mirror-2当稍后使用更多磁盘扩展 zpool 时,继续添加,mirror-3每个磁盘配对是否有意义?
zfsonlinux ×10
zfs ×9
linux ×3
ubuntu ×2
arch-linux ×1
centos7 ×1
filesystems ×1
fstab ×1
linux-kernel ×1
mount ×1
open-iscsi ×1
raid ×1
ubuntu-13.04 ×1
zpool ×1