Files
tromcho.net/docs/installation/source.en.md
T
Vitaliy Filippov a0cae4c180 Rename "jerasure" to "ec" in pool configuration, function names, fix documentation and Debian build scripts
Old pool configurations with "jerasure" also remain supported as an alias for "ec"
2022-06-03 15:40:00 +03:00

2.7 KiB

Documentation → Installation → Building from Source


Читать на русском

Building from Source

Requirements

  • gcc and g++ 8 or newer, clang 10 or newer, or other compiler with C++11 plus designated initializers support from C++20
  • CMake
  • liburing, jerasure headers and libraries
  • ISA-L, libibverbs headers and libraries (optional)
  • tcmalloc (google-perftools-dev)

Basic instructions

Download source, for example using git: git clone --recurse-submodules https://yourcmc.ru/git/vitalif/vitastor/

Get fio source and symlink it into <vitastor>/fio. If you don't want to build fio engine, you can disable it by passing -DWITH_FIO=no to cmake.

Build and install Vitastor:

cd vitastor
mkdir build
cd build
cmake .. && make -j8 install

QEMU Driver

It's recommended to build the QEMU driver (qemu_driver.c) in-tree, as a part of QEMU build process. To do that:

  • Install vitastor client library headers (from source or from vitastor-client-dev package)
  • Take a corresponding patch from patches/qemu-*-vitastor.patch and apply it to QEMU source
  • Copy src/qemu_driver.c to QEMU source directory as block/block-vitastor.c
  • Build QEMU as usual

But it is also possible to build it out-of-tree. To do that:

  • Get QEMU source, begin to build it, stop the build and copy headers:
    • <qemu>/include<vitastor>/qemu/include
    • Debian:
      • Use qemu packages from the main repository
      • <qemu>/b/qemu/config-host.h<vitastor>/qemu/b/qemu/config-host.h
      • <qemu>/b/qemu/qapi<vitastor>/qemu/b/qemu/qapi
    • CentOS 8:
      • Use qemu packages from the Advanced-Virtualization repository. To enable it, run yum install centos-release-advanced-virtualization.noarch and then yum install qemu
      • <qemu>/config-host.h<vitastor>/qemu/b/qemu/config-host.h
      • For QEMU 3.0+: <qemu>/qapi<vitastor>/qemu/b/qemu/qapi
      • For QEMU 2.0+: <qemu>/qapi-types.h<vitastor>/qemu/b/qemu/qapi-types.h
    • config-host.h and qapi are required because they contain generated headers
  • Configure Vitastor with WITH_QEMU=yes and, if you're on RHEL, also with QEMU_PLUGINDIR=qemu-kvm: cmake .. -DWITH_QEMU=yes.
  • After that, Vitastor will build block-vitastor.so during its build process.
  • This way you can use the driver even with unmodified QEMU, but you'll need to set environment variable LD_PRELOAD=/usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so and Vitastor disks won't work in QAPI and in "new" JSON syntax -blockdev in this case.