lvm 系统函数API应用

来源:互联网 发布:淘宝的主营业务有哪些 编辑:程序博客网 时间:2024/06/05 03:39

   前些天做了一些关于系统磁盘管理的应用,针对多磁盘逻辑化,动态内存操作等功能应用了lvm,因为需要使用相关的api所以下载了lvm2app.h,lvm2cmd.h.在ubuntu下安装这些库还是比较容易的。

   #apt-get install liblvm2-dev

              有一个ubuntu下比较好用的关于库搜索的方式,记录一下#apt-cache search ***

         下面是一个小demo,查看是否存在一个名叫'peipei'的逻辑卷组,不存在则创建,文件名lvmtest.c

        

#include <stdio.h>#include <errno.h>#include <fcntl.h>#include <unistd.h>#include <lvm2app.h>int main(int argc,char **argv){vg_t vg;const char *vgname;struct dm_list *vgnames;struct lvm_str_list *strl;int state  = 0;lvm_t libh = lvm_init(NULL);      vgnames = lvm_list_vg_names(libh);dm_list_iterate_items(strl, vgnames) {       vgname = strl->str;if(strcmp(vgname,"peipei") == 0){              vg = lvm_vg_open(libh, vgname, "w",0);long long int size  = lvm_vg_get_free_size(vg);printf("%lld\n",size/1024);state = 1;              lvm_vg_remove(vg);lvm_vg_write(vg);     //这个函数需要在执行卷组操作之后执行,目的是写入disk// do something with vg        lvm_vg_close(vg);      }              }if(!state){vg = lvm_vg_create(libh,"peipei" );if(NULL == vg)printf("vg create error!\n");else{lvm_vg_extend(vg,"/dev/sdb1");long long int size  = lvm_vg_get_free_size(vg);printf("%lld\n",size/1024);int ret = lvm_vg_write(vg);printf("ret:%d\n",ret);lvm_vg_close(vg); }}lvm_quit(libh);return 0;}

在对这库的学习时遇到一些困惑,主要还是逻辑卷组操作后未见效果,原来是未执行写入操作,主要还是自己没认真看函数介绍,只知道找自己需要的诶,以后需要注意了

0 0
原创粉丝点击