免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 957 | 回复: 0
打印 上一主题 下一主题

lvm2 & popen [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-29 21:55 |只看该作者 |倒序浏览
使用lvm2整合系统磁盘资源

1, 如果是逻辑分区,先在其上创建新的分区
fdisk /dev/sdc   …     //新建的分区为sdc6
2, 创建物理卷  
pvcreate /dev/sdc6
pvdisplay显示物理卷信息
3, 创建卷组
vgcreate  dnfs   /dev/sdc6
如果卷组已经存在,可使用vgextend将/dev/sdc6加入。
vgextend dnfs /dev/sdc6
4,创建逻辑卷
   lvcreate –n osd –L 500G dnfs //在dnfs逻辑卷中创建osd逻辑卷,大小为200G
   可使用lvextend动态改变逻辑卷的容量
   lvextend –L +200G /dev/dnfs/osd  //将osd的空间增加200G
5, 创建文件系统
   在osd逻辑卷上使用mkfs创建文件系统
   mkfs –t ext3 /dev/dnfs/osd
   或 mkfs.ext3 /dev/dnfs/osd
6, 挂载文件系统
   mount –t ext3 /dev/dnfs/osd /mnt/osd

系统开机自动挂载,在/etc/fstab中加入
/dev/dnfs/osd   /mnt/osd  ext3 defaults  0 0

df /mnt/osd 即可查看挂载的逻辑卷的信息
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/dnfs-osd 743128848    201720 705178392   1% /mnt/osd


这样DNFS系统就能使用/dev/dnfs/osd的空间作为实际文件数据的存储空间,可以灵活的加入磁盘扩展容量。


改变ext3文件系统大小
# resize2fs /dev/dnfs/osd
这样会改变osd逻辑卷上的ext3文件系统的大小到osd逻辑卷的总大小,resize2fs也可以指定大小, resize2fs支持在线改变ext3文件系统大小,不需卸载即可调整大小。

删除操作
如果不想用逻辑卷管理器了,可以从LV,VG到PV逐层删除
# lvremove /dev/dnfs/osd
把dnfs转为休眠状态:
# vgchange -an dnfs
# lvremove dnfs
# pvremove /dev/sdc6


由于osd需要获取磁盘信息(可用空间,可用空间),这可以通过
df /mnt/osd完成,而popen可以帮助我们在C程序中获取shell命令的输出。

#include
FILE *popen(const char *cmdstring, const char *type) ;
函数popen 先执行fork,然后调用exec以执行cmdstring,并且返回一个标准I/O文件指针。
如果type是"r",则文件指针连接到cmdstring的标准输出;
如果type是"w",则文件指针连接到cmdstring的标准输入。


// getspace.c
#include
#include
#include
#include
#define LV  "/dev/mapper/dnfs-osd"
/* used space used K   
* available space used K
*/
typedef struct space
{
uint64_t used;
uint64_t avail;
}space;
int spaceinfo(space *sinfo)
{
FILE *fp;
if((fp = popen("df /mnt/osd", "r")) == NULL)
{
  perror("popen failed");
  return -1;
}
char buf[256];
int i;
for(i = 0; i used, &sinfo->avail);
if(pclose(fp) == -1)
{
  perror("pclose error");
  return -1;
}
return 0;
}
int main()
{
space s;
spaceinfo(&s);
printf("%u %u\n", s.used, s.avail);
return 0;
}

#gcc -o getspace getspace.c
#./getspace
201720 705178392  //即为逻辑卷的已用空间 和 可用空间




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/87570/showart_2041226.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP