我目前正在我的实验室里试验linstor。我正在尝试设置compute和storage节点的分离。运行linstor的存储节点,而计算节点运行的是Docker或K8s。在这个测试中,我已经设置了一个linstor节点和一个停靠群节点。成功地配置了Linstor节点。
Linstor节点
DRBD 9.1.2
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
┊ StoragePool ┊ Node ┊ Driver ┊ PoolName ┊ FreeCapacity ┊ TotalCapacity ┊ CanSnapshots ┊ State ┊ SharedName ┊
╞══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╡
┊ DfltDisklessStorPool ┊ instance-2 ┊ DISKLESS ┊ ┊ ┊ ┊ False ┊ Ok ┊ ┊
┊ pd-std-pool ┊ instance-2 ┊ LVM_THIN ┊ vg/lvmthinpool ┊ 199.80 GiB ┊ 199.80 GiB ┊ True ┊ Ok ┊ ┊
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
# linstor node list
╭─────────────────────────────────────────────────────────────╮
┊ Node ┊ NodeType ┊ Addresses ┊ State ┊
╞═════════════════════════════════════════════════════════════╡
┊ instance-2 ┊ COMBINED ┊ 10.100.0.29:3366 (PLAIN) ┊ Online ┊
╰─────────────────────────────────────────────────────────────╯码头节点
在另一个节点上,我让Docker群运行。此节点没有安装任何工具,如drbd、drbdtop、drbdsetup ...etc。从技术上讲,它只运行一个仅够运行Docker以保持其轻量级的最小安装。Docker版本是20.10.3。我也安装了林斯特码头卷写的高丽。
下面是安装在我的码头群节点上的/etc/linstor/docker-volume.conf和码头卷插件
$ docker plugin ls
ID NAME DESCRIPTION ENABLED
6300029b3178 linbit/linstor-docker-volume:latest Linstor volume plugin for Docker true
$ cat /etc/linstor/docker-volume.conf
[global]
controllers = linstor://instance-2
fs = xfs我在尝试使用linstor创建的卷时出错了。我已经确认我可以在instance-2上打开linstor控制器,并在防火墙中打开所有端口。这里是错误和复制的步骤
$ docker volume create -d linbit/linstor-docker-volume:latest --name=first --opt size=20 --opt replicas=1 --opt storage-pool=pd-std-pool
$ docker volume ls
DRIVER VOLUME NAME
local 64f864db31990baa6b790dde34513a7f6fc466ca0c5e72ffab7024365a9f45da
linbit/linstor-docker-volume:latest first
$ docker volume inspect first
[
{
"CreatedAt": "0001-01-01T00:00:00Z",
"Driver": "linbit/linstor-docker-volume:latest",
"Labels": {},
"Mountpoint": "",
"Name": "first",
"Options": {
"replicas": "1",
"size": "20",
"storage-pool": "pd-std-pool"
},
"Scope": "global"
}
]
$ docker run --rm -it -v first:/data alpine sh
docker: Error response from daemon: error while mounting volume '': VolumeDriver.Mount: 404 Not Found.
ERRO[0000] error waiting for container: context canceled 问题
VolumeDriver.Mount 404 Not Found的错误是什么意思?发布于 2021-05-28 07:49:19
LINSTOR通过使用DRDB (分布式复制块设备)在节点间复制数据,从而管理在LVM或ZFS卷(或裸分区)中复制磁盘空间的节点集群中的存储,如官方文档所示:
所以我会说是的,您确实需要在每个要使用驱动程序的节点上都有驱动程序(我确实看到了Docker的存储插件试图在本地挂载DRBD卷)
但是,您不一定需要在计算节点上拥有存储空间本身,因为您可以从在不同节点上复制的卷中挂载无磁盘的DRBD资源,所以我认为您的想法应该有效,除非驱动程序本身存在一些错误,我还没有发现:您的计算节点需要注册为所有所需池的无磁盘节点(我没有尝试过这样做,但请记住,读取它不仅是可能的,而且推荐用于某些类型的数据迁移)。
当然,如果您没有超过一个存储节点,那么使用LINSTOR/drbd不会获得多少好处(节点或磁盘故障将使您没有磁盘)。我的用例是在不同的数据中心中跨不同的服务器复制存储,这样下一次我可以让我的数据和容器在几分钟后运行,而不是几天。
https://stackoverflow.com/questions/67708023
复制相似问题