Date: Mon, 9 Mar 2020 11:31:43 +0100 From: Willem Jan Withagen <wjw@digiware.nl> To: "freebsd-virtualization@freebsd.org" <virtualization@freebsd.org>, FreeBSD Hackers <freebsd-hackers@freebsd.org>, "ports@freebsd.org" <ports@freebsd.org> Subject: [RFC] Adding a Rados block driver to bhyve Message-ID: <9c7a8dea-ac8a-4d17-ed33-b6c4e882add8@digiware.nl>
next in thread | raw e-mail | index | archive | help
Hi all, And sorry for crosspoing three groups, but the answer can/could be a mix of things to do in these three areas. I have a prototype of bhyve running on Rados/Ceph working: https://github.com/freebsd/freebsd/pull/426 But there are a few catches on how to get it in the FreeBSd sources... 1) Easiest would be to just compile it in with the code of the current bhyve. That will require librados/librbd libraries... Ceph of this purpose is LGPL2/3 and could go into contrib. In this case bhyve will hold the rbd-driver by default and a user does not need to do anything by himself But I have the feeling that this is the most unwanted scenario 2) User first installs a Ceph package and FreeBSD sources, and then recompiles bhyve with the option BHYVE_RBD. And then reinstalls this new version as bhyve or bhyve-rbd in /usr/sbin 3) Create a bhyve-rbd port. Problem with that is that it will require the FreeBSD source tree for the bhyve sources, but there is no Ports option for that? Or bhyve sources are manually copied into the port. And then try to keep these sources up to date. Then compile and install a bhyve-rbd into /usr/local/sbin 4) Create a bhyve-blockrbd port. This is much like 3) but instead of building a bhyve-rbd executable, it delivers a libblockrbd.so that is dynamically loadable by the standaard bhyve that comes with base. For this bhyve needs to be extended with dynamic loadable driver modules. This is reasonably doable, but is this acceptable for the bhyve maintainers? For building the port, the bhyve-blockrbd code will only need a limited set of files from /usr/src/usr.bin/bhyve thus limiting the chance of running out sequence with the bhyve from base. Looking over these 4 options, I think that 4 is the most desirable one? But 2 would parhaps be workable for users as well, but the project might think otherwise. Are there other options? And/or is 4 the best way to go, with 2 as a nice intermediate? Thanx, --WjW
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9c7a8dea-ac8a-4d17-ed33-b6c4e882add8>