小编Tho*_*ing的帖子

使用快照的 ZFS 可以使用同步协议 A 替换 DRBD 吗?

这个问题与以前的更通用的问题有关,但这次我想更具体地询问 ZFS 是否可以在像我这样的用例中替换 DRBD。即两台服务器,都托管自己的 VM 或其他服务,同时将 VM 或其他一些数据相互复制,以缩短硬件故障或维护时的停机时间。此设置符合预期,我想要首选的本地读/写,并且可以在任意时间范围内承受潜在的数据丢失。

DRBD 支持这种具有不同镜像协议的场景,其中复制协议 A是异步的,因为我需要它。DRBD 在我的设置中的主要好处是切换到更同步的协议很容易,只需配置和重新启动即可。此外,可以将 dm-crypt 放在 DRBD 块设备的顶部,并将文件系统放入 dm-crypt 中,以便对每个数据进行加密。

另一方面,DRBD 的问题是它需要块设备,并且必须使用其他技术(如 RAID 和 LVM 等)关心它们的可用性和大小。尤其是调整大小的事情似乎很有趣,因为我的服务器有空闲插槽可以在将来连接更多磁盘。为了支持调整大小,我需要在 DRBD 下使用 LVM,首先使用 LVM 添加存储,然后调整 DRBD 的大小以考虑新的存储。比我还需要处理 dm-crypt,文件系统本身等。这读起来非常复杂,而且我容易出错。

另一方面,像 ZFS 这样的文件系统已经提供了自己的 LVM,并且能够发送/接收增量快照。所以理论上 ZFS 应该能够实现相同的协议 像 DRBD 这样的方法不需要使用 RAID、LVM 等。只需将存储添加到服务器,将其放入 ZFS 池中,它就可以立即用于托管更多/更大的虚拟机或其他。发送/接收快照听起来与 DRBD 所做的任何事情一样有效,因为它只是增量二进制数据,需要任何开销来描述要在接收 ZFS 中理解的更改。我读过人们使用无睡眠时间的无限循环发送/接收 ZFS 快照,然后再次直接在源中删除它们,因为它们只用于短期复制。

不过,加密对 ZFS 来说似乎是一个问题。dm-crypt 可能适用于 zvols 之类的东西,将来它可能会直接支持加密,但目前不支持。此外,发送/接收快照似乎总是异步的,如果需要,没有办法实现像 DRBD 提供的更多同步协议。不过,这可能是可以接受的,因为不需要使用 LVM 并使整体设置更容易。

或者我错了,除了发送/接收快照之外,还有其他方法 ZFS 如何将数据转发到开箱即用的其他主机和仅 ZFS?

与 DRBD 镜像协议相比,您是否看到在短时间内使用 ZFS 频繁发送/接收快照的一些基本性能差异或限制?后者可能会更有效一点,因为我猜只有块级别。 …

zfs replication drbd zfsonlinux

9
推荐指数
1
解决办法
2382
查看次数

systemd 加密设置过程中失败的依赖项是什么?

我在一台虚拟机中使用 Ubuntu 16.04 LTS 服务器,其中一个未加密的硬盘用于存储某些任意数据,/另一个 LUKS 加密的硬盘用于存储某些任意数据。系统正确启动并登录后,加密磁盘将在 shell 中手动打开并使用密码安装。这按预期工作。

问题在于,systemd 在启动期间已尝试对这个加密驱动器执行某些操作,但失败、遇到超时并随后继续前进,这会花费一分钟多的启动时间。

在以前版本的 Ubuntu 中,它会自动要求输入密钥来解锁驱动器,但这对于 UB 14.04 来说已经无法正常工作,现在也同样如此。systemd 没有打印任何我应该输入密码的文本,没有提示或其他。它只是识别出它想做的事情中的错误,并在一段时间后继续。

我不明白的是问题实际上是什么以及为什么 systemd 想要做任何事情,即使它不提示输入密码等。如果有人能给我指明正确的方向,让我知道如何让 systemd 正确提示输入密码,或者让它根本不对我的设备执行任何操作,那就太好了。不确定我目前更喜欢什么。;-)

systemd 打印错误:

May  1 01:28:23 example.org systemd[1]: dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device: Job dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device/start timed out.
May  1 01:28:23 example.org systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device.
May  1 01:28:23 example.org systemd[1]: Dependency failed for Cryptography Setup for mnt_luks_crypt.
May  1 01:28:23 example.org systemd[1]: Dependency failed for dev-mapper-mnt_luks_crypt.device.
May  1 01:28:23 example.org systemd[1]: dev-mapper-mnt_luks_crypt.device: Job dev-mapper-mnt_luks_crypt.device/start failed with result …
Run Code Online (Sandbox Code Playgroud)

fstab luks systemd ubuntu-16.04

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

ZFS“自动替换”何时生效?

背景

autoreplace记录如下

自动替换=开| off 控制自动设备更换。如果设置为“关闭”,则管理员必须使用“zpool Replace”命令启动设备更换。如果设置为“on”,则在与先前属于池的设备位于同一物理位置的任何新设备都会自动格式化和替换。默认行为是“关闭”。该属性也可以通过其缩短的列名称“replace”来引用。

以下是我感兴趣的池中该设置的当前状态:

root@[...]:/# zpool get autoreplace zfs-pool
NAME      PROPERTY     VALUE    SOURCE
zfs-pool  autoreplace  on       local
Run Code Online (Sandbox Code Playgroud)

所以看来是可以启用的。

观察结果

由于 SMART 相关错误,一个磁盘已被移除,并且 ZFS 正确识别该设备不再可用。已使用磁盘的镜像改为DEGRADEDetc。因为我有多个备用磁盘,所以我曾经zpool replace zfs-pool FAULTY_DISK SPARE_DISK临时放置一个备用磁盘。这是必要的,因为对于我正在使用的 UB 16.04,自动使用备件无法正常工作,甚至根本无法工作

镜像再次同步并且新磁盘已物理连接后,我重新启动了系统,因为否则使用的控制器将阻止访问新磁盘。在启动过程中,控制器会识别新磁盘,询问是否应启用这些磁盘,在前一种情况下,新磁盘随后可供操作系统使用。该磁盘已初始化,已创建分区等,并且与之前在同一物理插槽中出现故障的磁盘一样完全可用。重要的是操作系统也像以前一样对磁盘使用相同的命名:/dev/sdf并且/dev/disk/by-path/pci-0000:15:00.0-scsi-0:1:0:1-part*

尽管如此,ZFS 并没有自动使用新磁盘来替换以前的磁盘。尽管池的状态输出提到旧磁盘的序列号丢失以及它过去的路径,这与新磁盘同时获得的路径相同。我需要使用 手动更换新磁盘zpool replace zfs-pool pci-0000:15:00.0-scsi-0:1:0:1-part3。这使得 ZFS 将新磁盘放入正确的镜像中,因为路径相同,并且在重新同步后,备用磁盘也已自动删除。

NAME                                         STATE     READ WRITE CKSUM
zfs-pool                                     DEGRADED     0     0     0
  mirror-0                                   ONLINE       0     0     0
    pci-0000:05:00.0-scsi-0:1:0:0-part3      ONLINE       0     0     0
    pci-0000:15:00.0-scsi-0:1:0:0-part3      ONLINE       0     0     0 …
Run Code Online (Sandbox Code Playgroud)

zfs hard-drive ubuntu-16.04

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

哪种技术允许具有首选本地读写的集群共享存储?

我有两到三台较旧的 HP ProLiant DL380 G6/7 服务器,只有 x * 1 GBit 以太网,但 CPU 功率、RAM 和本地存储容量相当可观。我有兴趣构建一个由两个甚至三个节点组成的小型集群式设置,其中所有节点都提供服务,这与我目前对“超融合”流行语的理解非常相似。这些服务特别托管 VM,这些 VM 本身为不同的 Web 应用程序、一些守护程序、数据库等托管 Web 服务器。在应用程序级别上非常不同的东西,一些 I/O 绑定,一些不是。

这些服务器目前正在使用 Synology 的一些入门/中端 NAS,但事情不再那么好用了。我在让 NAS 在繁重的 I/O 负载下可靠工作时遇到了问题,除了一些基准测试之外,日常性能也不是很好。所以我正在研究不同的选项,比如集群文件系统、DRBD、即用型解决方案,比如 Proxmox 等等。

我目前问自己的主要问题是,是否有某种方法可以通过构建更喜欢本地读取和写入的“东西”来使网络成为一些可能的瓶颈。例如,DRBD 提供了复制协议 A,这正是我想到的。可能的数据丢失的时间跨度可能是某人认为可以接受的风险,查看每台服务器的冗余硬件等。此外,人们可能根本不需要在所有给定时间在所有节点上托管应用程序的可能性,但在节点更新和重启等情况下,仅在节点上移动应用程序可能是可以接受的。这样的事情可能会完成手动,经过一些准备步骤或其他什么。

重要的一点是,如果节点在大部分时间都托管自己的应用程序,则可以通过之后的异步写入通信来进行大量本地读取和写入。这也正是DRBD 文档所说的

无论如何,在双主模式下使用 DRBD 作为 GFS 的复制存储设备是完全可能的。由于 DRBD 通常从本地存储读取和写入本地存储,而不是 GFS 通常配置为运行的 SAN 设备,因此应用程序可能会受益于减少的读/写延迟。

在块级别是否有没有 DRBD 的可比技术?也许一些集群文件系统自己已经提供了这样的东西?此外,如果所建议的内容仅适用于开箱即用的当前 Ubuntu 发行版,那将是有益的,因为这是我目前为服务器选择的操作系统。

networking cluster drbd failovercluster shared-storage

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