{"id":37354036,"url":"https://github.com/kubeservice-stack/local-cloud-csi-driver","last_synced_at":"2026-01-16T04:08:48.773Z","repository":{"id":65197450,"uuid":"549338365","full_name":"kubeservice-stack/local-cloud-csi-driver","owner":"kubeservice-stack","description":"local csi driver  iops\u0026bps","archived":false,"fork":false,"pushed_at":"2023-12-26T07:33:14.000Z","size":9487,"stargazers_count":28,"open_issues_count":1,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-06-19T05:40:49.060Z","etag":null,"topics":["csi","csi-driver","kubernetes"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kubeservice-stack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-11T03:13:16.000Z","updated_at":"2023-12-21T03:16:04.000Z","dependencies_parsed_at":"2024-06-19T05:18:20.368Z","dependency_job_id":"989ad50c-cb17-4051-9561-30ec4bd9c229","html_url":"https://github.com/kubeservice-stack/local-cloud-csi-driver","commit_stats":{"total_commits":54,"total_committers":3,"mean_commits":18.0,"dds":0.2962962962962963,"last_synced_commit":"98dd12d146e21336f27d91bda1f454cdf575a85f"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/kubeservice-stack/local-cloud-csi-driver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeservice-stack%2Flocal-cloud-csi-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeservice-stack%2Flocal-cloud-csi-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeservice-stack%2Flocal-cloud-csi-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeservice-stack%2Flocal-cloud-csi-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubeservice-stack","download_url":"https://codeload.github.com/kubeservice-stack/local-cloud-csi-driver/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeservice-stack%2Flocal-cloud-csi-driver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477207,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:13:13.607Z","status":"ssl_error","status_checked_at":"2026-01-16T03:11:47.863Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csi","csi-driver","kubernetes"],"created_at":"2026-01-16T04:08:47.919Z","updated_at":"2026-01-16T04:08:48.765Z","avatar_url":"https://github.com/kubeservice-stack.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 本地磁盘限速: 带宽限流BPS 和 请求限速 IOPS\n\n## 背景\n\nLVM CSI 插件可用于帮助简化存储管理. 使用 csi 配置创建 pv，并且 pvc、pod 像往常一样定义。\n\nLvm 是基于主机的，而不是您的应用程序的高可用性解决方案。使用 lvm 应该接受主机关闭的效果。\n\n## 支持版本\n\nkubernetes 1.16+\n适配：阿里云ACK、华为云CCE、腾讯云TKE、移动云KCS\n\n## 配置要求\n\n- 具有所需 RBAC 权限的服务帐户\n- kubernetest version \u003e= 1.20.0 , `apiserver`需要开启`- --feature-gates=RemoveSelfLink=false` 特性\n\n## 功能状态\n\n编译打包 `local.csi.ecloud.cmss.com` 可以编译成容器的形式。\n\n构建容器：\n\n```bash\n$ docker build -f hack/local/Dockerfile .\n```\n## 用法\n\n### 先决条件\n使用localdisk 或者 挂载clouddisk方式，挂载或生成 `lvm pvcreate` 或 `lvm vgcreate` \n\n```bash\n$ fdisk -l\nDisk /dev/sdc: 68.7 GB, 68719476736 bytes, 134217728 sectors\nUnits = sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\n\n$ fdisk /dev/sdc\nCommand (m for help): p\n\nDisk /dev/sdc: 68.7 GB, 68719476736 bytes, 134217728 sectors\nUnits = sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\nDisk label type: dos\nDisk identifier: 0x72a4d30c\n\n   Device Boot      Start         End      Blocks   Id  System\n\nCommand (m for help): n\nPartition type:\n   p   primary (0 primary, 0 extended, 4 free)\n   e   extended\nSelect (default p): p\nPartition number (1-4, default 1): 1\nFirst sector (2048-134217727, default 2048): \nUsing default value 2048\nLast sector, +sectors or +size{K,M,G} (2048-134217727, default 134217727): 64217727        \nPartition 1 of type Linux and of size 30.6 GiB is set\n\nCommand (m for help): t\nSelected partition 1\nHex code (type L to list all codes): 8e\nChanged type of partition 'Linux' to 'Linux LVM'\n\nCommand (m for help): w\nThe partition table has been altered!\n\n$ lsblk \nNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\nsdb      8:16   0  100G  0 disk \n|-sdb4   8:20   0   25G  0 part \n`-sdb2   8:18   0   75G  0 part \nsr0     11:0    1  506K  0 rom  \nsdc      8:32   0   64G  0 disk \n`-sdc1   8:33   0 30.6G  0 part \nsda      8:0    0  100G  0 disk \n`-sda1   8:1    0  100G  0 part /\n\n$ pvcreate /dev/sdc1 \n  Physical volume \"/dev/sdc1\" successfully created.\n$ vgcreate volumegroup1 /dev/sdc1\n  Volume group \"volumegroup1\" successfully created\n$ vgdisplay \n  --- Volume group ---\n  VG Name               volumegroup1\n  System ID             \n  Format                lvm2\n  Metadata Areas        1\n  Metadata Sequence No  2\n  VG Access             read/write\n  VG Status             resizable\n  MAX LV                0\n  Cur LV                1\n  Open LV               1\n  Max PV                0\n  Cur PV                1\n  Act PV                1\n  VG Size               \u003c30.62 GiB\n  PE Size               4.00 MiB\n  Total PE              7838\n  Alloc PE / Size       512 / 2.00 GiB\n  Free  PE / Size       7326 / \u003c28.62 GiB\n  VG UUID               V6TVTh-AcIi-hLmR-bozc-9QeA-EBnU-Mhhd6y\n```\n\n### 执行步骤\n第 1 步：创建 `CSI Provisioner`\n\n```bash\n$ kubectl create -f ./deploy/local/provisioner.yaml\n```\n第 2 步：创建 `CSI` 插件\n\n```bash\n$ kubectl create -f ./deploy/local/plugin.yaml\n```\n\n第 3 步：创建存储类\n\n```bash\n$ kubectl create -f ./examples/storageclass.yaml\napiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n   name: csi-lvm\nprovisioner: local.csi.ecloud.cmss.com\nparameters:\n    vgName: volumegroup1\n    fsType: ext4\n    pvType: localdisk\n    nodeAffinity: \"false\"\n    readIOPS: \"2000\"\n    writeIOPS: \"1000\"\n    readBPS: \"10000\"\n    writeBPS: \"5000\"\nreclaimPolicy: Delete\n```\n\n用法：\n\n* `vgName`：定义存储类的卷组名；\n* `fsType`：默认为`ext4`，定义lvm文件系统类型，支持`ext4`、`ext3`、`xfs`；\n* `pvType`：可选，默认为云盘。定义使用的物理磁盘类型，支持`clouddisk`、`localdisk`；\n* `nodeAffinity`：可选，默认为 `true`。决定是否在 `PV` 中添加 `nodeAffinity`。\n\t* `true`：默认，使用 `nodeAffinity` 配置创建 `PV`；\n\t* `false`：不配置`nodeAffinity`创建`PV`，`pod`可以调度到任意节点\n* `volumeBindingMode`：支持 `Immediate` 和 `WaitForFirstConsumer` \n\t* `Immediate`：表示将在创建 `pvc` 时配置卷，在此配置中 `nodeAffinity` 将可用；\n\t* `WaitForFirstConsumer`：表示在相关的`pod`创建之前不会创建`volume`；在配置中，`nodeAffinity` 将不可用；\n\n第 4 步：使用 `lvm` 创建 `nginx` 部署\n\n```bash\n$ kubectl create -f ./examples/pvc.yaml\n$ kubectl create -f ./examples/deploy.yaml\n```\n\n第 5 步：检查 PVC/PV 的状态\n\n```bash\n$ kubectl get pvc\nNAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE\nlvm-pvc   Bound    lvm-29def33c-8dae-482f-8d64-c45e741facd9   2Gi        RWO            csi-lvm        3h37m\n\n$ kubectl get pv\nNAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   REASON   AGE\nlvm-29def33c-8dae-482f-8d64-c45e741facd9   2Gi        RWO            Delete           Bound    default/lvm-pvc   csi-lvm                 3h38m\n```\n\n第 6 步：检查 pod 的状态\n\n6.1 检查 pod 中的目录 \u0026 csi 日志\n\n```bash\n$ kubectl get pod | grep deployment-lvm\ndeployment-lvm-57bc9bcd64-j7r9x   1/1     Running   0          77s\n\n$ kubectl exec -ti deployment-lvm-57bc9bcd64-j7r9x   sh\nkubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.\n# df -h | grep data\n/dev/mapper/volumegroup1-lvm--9e30e658--5f85--4ec6--ada2--c4ff308b506e  2.0G  6.0M  1.8G   1% /data\n\n$ kubectl logs csi-lvm-plugin-97j9w  -n kube-system -c csi-lvmplugin\n\nI1018 06:04:43.278422  178966 utils.go:98] GRPC request: {\"staging_target_path\":\"/var/lib/kubelet/plugins/kubernetes.io/csi/pv/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e/globalmount\",\"target_path\":\"/var/lib/kubelet/pods/5a9403b9-b1ba-4ffe-acf0-2414086c5cf9/volumes/kubernetes.io~csi/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e/mount\",\"volume_capability\":{\"AccessType\":{\"Mount\":{\"fs_type\":\"ext4\"}},\"access_mode\":{\"mode\":1}},\"volume_context\":{\"fsType\":\"ext4\",\"nodeAffinity\":\"false\",\"pvType\":\"localdisk\",\"readBPS\":\"10000\",\"readIOPS\":\"2000\",\"storage.kubernetes.io/csiProvisionerIdentity\":\"1665995111679-8081-local.csi.ecloud.cmss.com\",\"vgName\":\"volumegroup1\",\"writeBPS\":\"5000\",\"writeIOPS\":\"1000\"},\"volume_id\":\"lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e\"}\ntime=\"2022-10-18T06:04:43Z\" level=info msg=\"Mount /dev/volumegroup1/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e to /var/lib/kubelet/pods/5a9403b9-b1ba-4ffe-acf0-2414086c5cf9/volumes/kubernetes.io~csi/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e/mount with fsType ext4, the command is mount [-t ext4 -o rw /dev/volumegroup1/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e /var/lib/kubelet/pods/5a9403b9-b1ba-4ffe-acf0-2414086c5cf9/volumes/kubernetes.io~csi/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e/mount]\"\ntime=\"2022-10-18T06:04:43Z\" level=info msg=\"Seccessful Set Volume(lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e) IO Limit: readIOPS(2000), writeIOPS(1000), readBPS(10000), writeBPS(5000)\"\ntime=\"2022-10-18T06:04:43Z\" level=info msg=\"NodePublishVolume:: mount successful devicePath: /dev/volumegroup1/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e, targetPath: /var/lib/kubelet/pods/5a9403b9-b1ba-4ffe-acf0-2414086c5cf9/volumes/kubernetes.io~csi/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e/mount, options: [rw]\"\n\n```\n\n6.2 检查主机中的目录：\n\n```bash\n$ kubectl describe pod deployment-lvm-57bc9bcd64-j7r9x | grep Node:\nNode:         kcs-cpu-test-m-8mzmj/172.16.0.67\n\n$ ifconfig | grep 172.16.0.67\n        inet 172.16.0.67  netmask 255.255.0.0  broadcast 172.16.255.255\n  \n$ mount | grep volumegroup\n/dev/mapper/volumegroup1-lvm--9e30e658--5f85--4ec6--ada2--c4ff308b506e on /var/lib/kubelet/pods/c06d5521-3d9c-4517-bdc2-e6df34b9e8f1/volumes/kubernetes.io~csi/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e/mount type ext4 (rw,relatime,data=ordered)\n/dev/mapper/volumegroup1-lvm--9e30e658--5f85--4ec6--ada2--c4ff308b506e on /var/lib/paascontainer/kubelet/pods/c06d5521-3d9c-4517-bdc2-e6df34b9e8f1/volumes/kubernetes.io~csi/lvm-9e30e658-5f85-4ec6-ada2-c4ff308b506e/mount type ext4 (rw,relatime,data=ordered)\n```\n\n6.3 检查pod disk iops和bps设置，是否生效：\n\n```bash\n$ pwd\n/sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-podc06d5521_3d9c_4517_bdc2_e6df34b9e8f1.slice\n\n$ cat blkio.throttle.read_bps_device \n253:1 10000\n$ cat blkio.throttle.write_bps_device \n253:1 5000\n$ cat blkio.throttle.write_iops_device \n253:1 1000\n$ cat blkio.throttle.read_iops_device \n253:1 2000\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubeservice-stack%2Flocal-cloud-csi-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubeservice-stack%2Flocal-cloud-csi-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubeservice-stack%2Flocal-cloud-csi-driver/lists"}