在阅读了关于zpool export in man zpool的一节之后,我有点担心:
从系统导出给定的池。所有设备都被标记为导出,但仍被其他子系统考虑使用。只要存在足够数量的设备,设备就可以在系统之间移动(即使是具有不同功能的设备)并导入。
“但仍在被其他子系统使用”意味着什么?“只要有足够数量的设备存在”意味着什么?
背景:
我有一个相当复杂的备份脚本,它基于ZFS快照将生产服务器上的VM存储复制到备用服务器(准确地说,它是一个由主机和VM中的各种脚本组成的系统,它们一起工作以冻结VM中的文件系统,获取ZFS快照,解冻VM中的文件系统,并将快照复制到备用服务器上)。这部分很有魅力。
但实际上,除了复制之外,我还需要一种备份。也就是说,我想将VM存储备份到磁盘上,然后我可以将它从连接到的盒中删除,并将其安全地存储在另一个位置。
我已经仔细考虑了最佳的方法,并得出了以下的想法:
**这是我感到不舒服的一步(在阅读了上述一节之后)。一方面,在导出ZPOOL (其唯一的设备)之后移除HDD应该没有问题,因为文件系统在导出之前会被卸载(因此会被刷新)。另一方面,手册上说,即使在导出池之后,这个HDD仍将“被其他子系统考虑使用”,这使我认为在这种情况下删除它是个坏主意。
因此,我想知道这句话到底意味着什么,以及如何使HDD不再被其他子系统考虑使用。
*我知道我必须为此付出一些努力。其计划是创建一个脚本和一个适当的udev规则,让备用服务器在插入硬盘时识别并导入现有的ZPOOL ( HDD将通过SATA-3或SAS12g直接连接,而不是通过USB)。但这不是这个问题的一部分。
概括地说:
zpool export到底是做什么的,或者换句话说,我需要执行哪些步骤,然后才能安全地移除作为ZPOOL中唯一的设备的HDD,在ZPOOL导出之后?
发布于 2020-12-16 08:11:20
我所做的事情与您所描述的类似,我认为您在使用zpool导出时可能有点混在一起。
从系统中移除整个池..。快照之类的。这不是你想要的。
要做你想做的事情,第一步就是了解我们要处理的是哪种类型的聚水池。特别是,您可能需要一个简单的镜像池。至少有三个驱动器。
在我的例子中,我有一个有3面镜子的聚光池。当我想把数据放在离地保存时,我“离线”了我想要离开的驱动器,然后从数组中删除它。这看起来像是:
pool: pool_09
state: ONLINE
scan: resilvered 1000G in 2h15m with 0 errors on Sun Nov 22 19:49:53 2020
config:
NAME STATE READ WRITE CKSUM
pool_09 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t5000C500B0BCFB13d0 ONLINE 0 0 0
c0t5000C500B0889E5Bd0 ONLINE 0 0 0
c0t5000C500B09F0C54d0 ONLINE 0 0 0
logs
mirror-1 ONLINE 0 0 0
c0t5F8DB4C095690612d0s3 ONLINE 0 0 0
c0t5F8DB4C095691282d0s3 ONLINE 0 0 0
# zpool offline pool_09 c0t5000C500B0BCFB13d0这将使池中有两个镜像驱动器,这样我仍然可以承受本地故障。对我来说,我不把驱动器导入另一个系统,但我不明白为什么你不能。我只是把我的驱动器带到另一栋大楼。
当我准备重新同步镜像时,我将删除的驱动器放回数组中,并“联机”它:
zpool online pool_09 c0t5000C500B0BCFB13d0ZFS会在联机后自动重新启动驱动器,然后您可以重复这个过程。
我不认为你想用一堆旋转的驱动器来做这个。我甚至不确定那会不会奏效。我想如果你有10倍镜像集什么的话。请记住,删除的驱动器(S)离开阵列的时间越长,重新获得银牌所需的时间就越长。
另一种选择是创建另一个池,zfs将所有数据发送给它,然后导出该池并将其带离站点。我没那么做,但应该管用.不过,可能要慢很多。
。
https://unix.stackexchange.com/questions/624612
复制相似问题