Giter Club home page Giter Club logo

curve-qemu-block-driver's Introduction

Curve Support for Qemu

概述

CURVE是网易自主设计研发的高性能、高可用、高可靠分布式存储系统,具有非常良好的扩展性。当前基于CURVE已经实现了高性能块存储系统,支持快照克隆和恢复,支持QEMU虚拟机和物理机NBD设备两种挂载方式,在网易内部作为高性能云盘使用。

NBD挂载方式已经在Curve代码中提供,当前仓库提供了Qemu挂载Curve块设备的支持。

Qemu挂载Curve块设备提供了两种方式:通过Curve-Client方式挂载、通过NEBD挂载。两种方式的区别可以参考NEBD文档

注意事项:

使用之前需要部署一个Curve集群,以及创建一个Curve卷,具体步骤参考使用 CurveAdm 部署 CurveBS 集群

目前提供了基于 QEMU v2.8.0 v4.2.0 v5.2.0 v6.2.0 版本的 patch.

使用方式(以 QEMU v2.8.0 版本为例)

通过Curve-Client挂载

  1. 安装Curve-SDK,参考Curve手动部署sdk

  2. 修改/etc/curve/client.confmds.listen.addr配置项的值,指向Curve集群的MDS地址,多个地址用,分隔

  3. curve-client-qemu-v2.8.0.patch应用到Qemu v2.8.0版本的代码上,然后编译

    参考步骤:

    git clone https://github.com/opencurve/curve-qemu-block-driver
    git clone https://github.com/qemu/qemu.git
    cd qemu
    git checkout v2.8.0
    patch -p1 < ../qemu-block-driver/qemu/curve-client-qemu-v2.8.0.patch
    mkdir build && cd build
    ../configure --target-list=x86_64-softmmu
    make -j`getconf _NPROCESSORS_ONLN`
  4. 启动Qemu,并添加挂载Curve盘参数,例如:

    ./x86_64-softmmu/qemu-system-x86_64 -L pc-bios/ \
        -smp 8 \
        -m 8192 \
        -drive format=raw,file=/root/Debian_7_x86_64-flat.vmdk.img,cache=none,if=virtio \
        -drive format=raw,file=cbd:pool//qemu0_qemu_:/etc/curve/client.conf,if=virtio \
        -boot c \
        -net nic,model=virtio,macaddr=66:66:66:66:66:0a -net tap,ifname=brostub,script=no \
        -rtc base=localtime \
        -vnc :3 \
        -enable-kvm

    具体启动参数比如系统镜像路径、网卡等需要根据不同配置进行修改,挂载Curve盘相关参数在第5行,file中的参数格式为cbd:存储池/卷名_用户名_[密码]:client配置文件路径,对应上述参数:

    • cbd:表示挂载Curve卷
    • pool:Curve卷所属的存储池,当前未使用
    • /qemu0_curve_:/qemu0为提前创建的Curve卷,qemu为卷所属的用户,密码可选,如果创建卷时未指定,可以省略
    • /etc/curve/client.conf:client配置文件路径
  5. 进入Qemu虚拟机,并进行fio测试

通过NEBD挂载

(待补充)

libvirt支持

libvirt 目录下的 patch 提供了对libvirt的支持,目前支持了 v2.4.0 v5.10.0 v6.10.0 v7.10.0,其他版本可能需要相应的修改

curve-qemu-block-driver's People

Contributors

wu-hanqing avatar opencurveadmin avatar aspirer avatar zyb521 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.