Code Monkey home page Code Monkey logo

eosphoros-ai / liteio Goto Github PK

View Code? Open in Web Editor NEW
289.0 8.0 45.0 1.03 MB

LiteIO is a cloud-native block device service that uses multiple storage engines, including SPDK and LVM, to achieve high performance. It is specifically designed for Kubernetes in a hyper-converged architecture, allowing for block device provisioning across the entire cluster.

License: Apache License 2.0

Makefile 0.66% Go 98.30% Shell 1.04%
block-device cloud-native hyper-converged lvm2 spdk storage-management storage-pools storage-service

liteio's People

Contributors

csunny avatar iamazy avatar silentred avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

liteio's Issues

how to use multiple devices for SpdkLVStore engine

  1. with aioBdev type, it can only add one device. how to set multi devices to a storage pool?
  2. with raidBdev type, it makes raid0 for all of nvme devices. can i use partly nvme disks to make raid0 and create a storage pool?
  3. if i use multi disks in one storage pool, if one disk is damaged, dose it mean that the storage pool is unavaliable?

Unmatched NVMe-CLI command running in CSI Node Driver

As described in quick-start.md and 800-csi-node.yaml, currently the nvme cmd used in csi-node-driver is installed inside the compute server node, and availabe to csi-node-driver through mounted volume /home/admin/nvmeof/bin.

This might not be a good choice. Since it implicitly add limitation that the host server and container pod keep consistency with each other on shared libraries, like glibc. If not, then when csi-node-driver calls the nvme cmd shared from host server, it fails on error like "not found specific GLIBC version".

$/home/admin/nvmeof/bin/nvme
/home/admin/nvmeof/bin/nvme: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by /home/admin/nvmeof/bin/nvme)
/home/admin/nvmeof/bin/nvme: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by /home/admin/nvmeof/bin/nvme)

How about installing nvme-cli directly inside the image csi node driver is using?

Missing PVs effects creation of LVM-type datacontrol on the same node

description

If any remote PV is disconnected from the target node, the LVM datacontrol will be unable to setup any new VG for the new datacontrol.
This scenario is not rare because the remote target node may have hareware issues that will cause lost connection of the target volume. If this happens, the node-disk-agent will be trapped in getting LVM errors and not able to any thing else.

node-disk-agent logs:

E0425 05:44:25.063070       1 sync_datacontrol.go:213] LVM_PV_LOST stderr=  WARNING: Couldn't find device with uuid nl34r9-swzT-p8b5-vJ5p-Yn8G-GbEh-BUgGN4.
  WARNING: VG obnvmf-pvc-75057105-d76d-41e8-8552-1785d5c4102b is missing PV nl34r9-swzT-p8b5-vJ5p-Yn8G-GbEh-BUgGN4 (last written to /dev/alinvme21n1).
I0425 05:44:25.702268       1 signal.go:42] Got a signal child exited


E0425 05:44:25.702830       1 sync_datacontrol.go:302] LVM_PV_LOST stderr=  WARNING: Couldn't find device with uuid nl34r9-swzT-p8b5-vJ5p-Yn8G-GbEh-BUgGN4.
  WARNING: VG obnvmf-pvc-75057105-d76d-41e8-8552-1785d5c4102b is missing PV nl34r9-swzT-p8b5-vJ5p-Yn8G-GbEh-BUgGN4 (last written to /dev/alinvme21n1).
get vg failed
I0425 05:44:25.826288       1 signal.go:42] Got a signal child exited
I0425 05:44:25.826323       1 cmd.go:126] ListPV out:   {......}
I0425 05:44:25.826532       1 sync_datacontrol.go:331] remove pvs [/dev/alinvme60n1]
I0425 05:44:25.955883       1 signal.go:42] Got a signal child exited
E0425 05:44:25.955924       1 cmd.go:239] err cmd:pvremove [/dev/alinvme60n1 -y], ProcState=exit status 5 StdErr=  PV /dev/alinvme60n1 is used by VG obnvmf-pvc-75057105-d76d-41e8-8552-1785d5c4102b so please use vgreduce first.
  (If you are certain you need pvremove, then confirm by using --force twice.)
  /dev/alinvme60n1: physical volume label not removed.
, exit status 5, output:
E0425 05:44:25.955936       1 sync_datacontrol.go:334] cmd:pvremove [/dev/alinvme60n1 -y], ProcState=exit status 5 StdErr=  PV /dev/alinvme60n1 is used by VG obnvmf-pvc-75057105-d76d-41e8-8552-1785d5c4102b so please use vgreduce first.
  (If you are certain you need pvremove, then confirm by using --force twice.)
  /dev/alinvme60n1: physical volume label not removed.
, exit status 5rm pv failed, retry in 20 sec.

target如何支持热升级过程中nvmf不断连

https://mp.weixin.qq.com/s/t6dXP1_Cx7YBT4bV7odqCA
一文中介绍liteio有提到:
"Target 整体框架如下图所示,在热升级期间必须保持 nvmf 的网络连接不可中断,否则 host 侧会感知并去重连或者删除盘符,热升级采用旧的 target 程序 fork 新的 target 程序并加载新的二进制文件来实现,整个热升级过程中 IO 不可丢失,新旧进程的切换速度要快。基于热升级框架的简单性设计原则,热升期间下图中绿色的 TCP 或 RDMA 连接为必须保持的上下文,其他模块均无需保存上下文状态,网络连接的保持通过父子进程继承文件描述符的方式实现。"

我在liteio开源代码中没有找到这方面的实现,请问这个特性有进行开源吗

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.