Chinaunix首页 | 论坛 | 博客
  • 博客访问: 374021
  • 博文数量: 87
  • 博客积分: 2810
  • 博客等级: 少校
  • 技术积分: 825
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 22:34
文章分类

全部博文(87)

文章存档

2010年(25)

2009年(43)

2008年(19)

分类: LINUX

2010-09-23 13:23:14

LVM基本管理
背景:对磁盘的管理,Linux下面一般分区采用两种方式,一是直接分区,二是借助于LVM,LVM的优势是对磁盘的管理更灵活,对分区的扩容更简单。
思路:建立LVM,对LVM进行扩容及减容操作
 
步骤:建立LVM、扩大LVM容量、减少LVM容量
 
一、建立LVM逻辑卷
 
1.LVM相关命令及图解
正常系统下面:
 
Scan 查看 pvscan  vgscan   lvscan
Create 创建 pvcreate vgcreate lvcreate 
Display 显示 pvdisplay vgdisplay  lvdisplay 
Remove 还原 pvremove  vgremove  lvremove 
Extend 扩展 pvextend  vgextend  lvextend 
Change 改变 lvchange   -a -n  -a -y
 
 
急救模式下面:
Scan 查看
lvm pvscan
lvm vgscan
lvm lvscan
 
 
 
 
Display 显示
lvm pvdisplay
lvm vgdisplay
lvm lvdisplay
Change 改变状态
lvm lvchange
-a -n
-a -y
 
 
改状态为非活动
激活逻辑卷
 
 
 
2.LVM关系模型图
官方:

网友提练(借用一下,呵呵)

 
3.建立PV,物理卷
A、建立以分区为基础的物理卷
先使用fdisk分区,
命令:
fdisk /dev/sdb 
fdisk /dev/sdc
如图:

 
建立物理卷
命令:
 pvcreate /dev/sdb1 /dev/sdc1
如图:

 
B、直接建立以硬盘为基础的物理卷
命令:
pvcreate /dev/sdd
如图:

C、查看物理卷信息
使用pvscan查看基本信息
命令:pvscan
 
 
这里查看到的PV /dev/sdb1 /dev/sdc1 已经加入VG xeam里面了。/dev/sdd还是独立的PV,没有加入任何VG组
 
使用pvdisplay查看详细信息
如图:

直接用pvdisplay查看所有的PV,如上图 也可以在后面跟参数,如:pvdisplay /dev/sdb1
如下图:

这两图里有些区别,就是加入组的PV,在VG Name那里会显示VG的名称,而没有加入VG组的,VG Name那里则是空着的,而且Allocateble那里也是no,而加入的则是yes
 
 
4.建立VG
A、使用vgcreate建立VG
命令:
vgcreate vgname pv
如: vgcreate exam /dev/sdb1 /dev/sdc1  这条命令就是把/dev/sdb1 /dev/sdc1 加入exam为名称的VG里面
如下图:

B、使用vgdisplay查看
命令:
vgdisplay  #查看所有

这里查看到了两个VG,一个是我们创建的exam,一个是系统本身的VolGroup00
 
使用vgdisplay 参数  查看单个VG
如:vgdisplay /dev/exam
 
 
C、使用vgscan查看简单信息

5.建立LV逻辑卷
A、使用lvcreate
命令:
lvcreate -L 800 -n data0 exam ----> 从VG:exam里建立名称为data0 容量为800M的逻辑卷
如图:

如果使用的是 -l  那么大小应该如下:
命令:
lvcreate -l 10 -n data1 exam ---->从VG:exam里建立名称为data1 容量为40M的逻辑卷
如图:

这里的容量为什么是40M?
-l 10:生成的逻辑卷使用10个扩展块,逻辑卷大小=10*PE(默认是4M) 则为40M
 
如下图:

 
B、使用lvdisplay查看地逻辑卷信息
查看单独的逻辑卷:
命令:
lvdisplay /dev/exam/data0
如图:

 
6.格式化逻辑卷,以备使用
命令:
mkfs.ext3 /dev/exam/data0
如图

 
7.挂载
建立挂载点 挂载 查看挂载分区
命令:
mkdir /data0
mount /dev/exam/data0 /data0
df -h
如图:

向/data里写入一个文件
命令:
touch /data0/1.txt
echo abcdeseflkdslke > /data0/1.txt
cat /data0/1.txt
如图:

到此为止,新建一个LVM逻辑卷就完成了。
 
 
二、扩容LVM
 
下面对LVM进行一些基本的管理,如:扩大LVM逻辑卷容量,减少LVM逻辑卷容量
 
1.在开始之前,讲述一下基本原因,以一个比喻为例子:
 
我们把LVM逻辑卷比喻成一个水桶,文件系统为水桶里面的水,水桶由木材制成,木材由树木制成
 
图解:

 
这里不知道我有没有说明白,呵呵  
重点:两个顺序
A、建立LV的时候 考虑的顺序是从下到上
B、扩容LV的时候,考虑的顺序要从上到下
 
扩容:
检查VG容量是否有可用容量---- 有 ----> 扩容LV--->检查文件系统--->扩容文件系统
                    |                ^
                    |                |<--------------------------|
                    |                                            |
                    |--- 无 --->增加PV(块设备或者分区)--->扩容VG-->扩容LV
 
 
2.扩容LV至1.5G
A、检查VG
命令:
vgdisplay exam

从图片上看,VG的总容量是984M,已使用840M(Alloc PE /Size) 可用144M(Free PE / Size)
这对于我们要扩容到1.5G的容量来说,可用的容量太少,我们要增加VG的容量,就要增加PV
 
B、增加PV
使用fdisk /dev/sdb  fdisk /dev/sdc 增加两个512M的分区
命令:
fdisk /dev/sdb
fdisk /dev/sdc
如图:

这里就只贴一张图了,fdisk /dev/sdb是一样的做法
查看:
命令: fdisk -l

 
建立PV
命令:
pvcreate /dev/sdb2 /dev/sdc2  # 把分区 /dev/sdb2 /dev/sdc2制作成PV,以供VG使用

出现这个错误是因为刚才的分区没有被内核识别到,可以用cat /proc/partitions查看,使用partprobe更新分区信息
命令:
cat /proc/partitions      #  查看系统分区信息
partprobe                 #  更新系统分区信息
如图:

可以使用cat /proc/partitions再次检查,再次使用pvcreate

可以使用pvdisplay查看,这两个PV暂时不属于任何VG,
 
C、扩容VG
现在我们要使用vgextend来扩展VG的容量,并使用vgdisplay exam查看 VG容量
命令:
vgextend exam /dev/sdb2 /dev/sdc2  #  扩容VG exam
vgdisplay exam                     #  查看VG exam 信息
如图:

从图片看,VG的容量已经扩大至1.92G了,这对于我们把LV扩容至1.5G,有足够的可用容量了。
 
D、扩容LV
使用lvextend命令,并使用lvdisplay查看
命令:
lvextend -L 1.5G /dev/exam/data0   # 扩容
lvdispaly /dev/exam/data0          # 检查
如图:

从图片上看 LV的容量已经扩大至1.5G(LV Size 1.5GB)
 
E、检查文件系统完整性
使用e2fsck
命令:
e2fsck -f /dev/exam/data0  #检查文件系统的完整性
如图:

正常,如果有问题,会报错误信息
 
F、扩容文件系统
使用resize2fs
命令:resize2fs -p /dev/exam/data0  # 扩容文件系统 -p 是指在线扩容
如图:

在线扩容成功
使用df -h查看

命令:df -h

已经扩容到1.5G了,上面所有的操作都是离线操作的,也就是说/dev/exam/data0是没有挂载的,在线也是可以扩容的,只是会有几个警告信息,如下图,我在线扩容了/dev/exam/data1
其中lvextend我使用了另一种方式  就是: -L +40M 意思是说在原来的容量基础上增加40M
如图:

上图中,在检查文件系统的完整性的时候会有一个警告信息,其它都差不多。
 
三、减少LV容量
1.这里还是借用前面的那个比喻:
图解(跟上面的图是同一个)

重点:
要减少LV的容量,必须先减少文件系统的容量(要减少水桶的容量,首先得减少水的体积,不然水就溢出来了)
 
减少容量:
 
检查LV的容量-->umount文件系统-->检查文件系统-->减少文件系统-->使用lvscan -a查看LV状态-------> 变LV的状态为非活动状态--->减少LV容量---变LV的状态为活动状态---挂载
 
 
2.减少LV容量,这里我们要把它减少到1G,也就是说减少500M的容量
A、查看LV容量
命令:
lvdisplay /dev/exam/data0
如图:

从上图看到 LV的容量是1.5G
 
B、umount文件系统,并使用df -h
命令:
umount /data0  # umount /dev/exam/data0
df -h          # 查看挂载情况
如图:

从图上看到,/dev/exam/data0已经umount了
 
C、检查文件系统
命令:
e2fsck /dev/exam/data0
如图:

 
D、减少文件系统
命令:
e2fsck -f /dev/exam/data0
resize2fs /dev/exam/data0 1G   #将 LV的容量减少至1G
如图

 
E、变LV的状态为非活动状态
命令:
lvscan -a                       # 查看LV状态
lvchange -a n /dev/exam/data0   # 把LV状态变为非活动状态
如图:

从上图看 /dev/exam/data0的状态已为 inactive
 
 
F、减少LV容量
命令:
lvreduce -L 1G /dev/exam/data0
如图

G、激活LV,并挂载
命令:
lvchange -a y /dev/exam/data0  #激活LV
lvscan -a                      #查看LV状态
mount /dev/exam/data0 /data0   #挂载LV
df -h                          #查看挂载是否正常
touch /data0/test.txt          #写操作
echo "abcdef" > /data0/test.txt#写操作
cat /data0/test.txt            #读操作
如图:

上图所示,一切正常
 
到此为止,LVM的基本管理已经全部完成。
 
 
 
 
 
阅读(1502) | 评论(0) | 转发(0) |
0

上一篇:企业应用之NIS-Server

下一篇:没有了

给主人留下些什么吧!~~