使用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
/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 <stdio.h>
FILE *popen(const char *cmdstring, const char *type) ;
函数popen 先执行fork,然后调用exec以执行cmdstring,并且返回一个标准I/O文件指针。
如果type是"r", cmdstring进程的输出端从stdout重定向到管道的写端,并返回管道的读端。
如果type是"w", cmdstring进程的输入端从stdin重定向到管道的读端,并返回管道的写端。
|
#gcc -o getspace getspace.c
#./getspace
201720 705178392 //即为逻辑卷的已用空间 和 可用空间
|