lvm的使用

 

lvm是很有用的,在一个生产系统中,如果空间不够用,在没有用lvm之前,要想扩容是很不方便的
要找一个想扩大到你想要容量的存储,然后要把原有数据导入到新的设备中,对原有设备也是一种
浪费,有了lvm就不一样了,我可以在不改变原有系统的条件下,直接对对系统怎加存储空间

 

下面是我146的硬盘的分区情况,我这个服务器计划用户oracle数据库

 

一些空间变化不大的分区我还是采用ext3格式,但一些0空间变化很大的分区,我采用了lvm
这样对于以后的扩展做充分的准备

 

[root@dbolap ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             981M  202M  730M  22% /
none                 1004M     0 1004M   0% /dev/shm
/dev/sda8             2.0G   36M  1.8G   2% /tmp
/dev/sda6             3.9G  2.0G  1.8G  53% /usr
/dev/sda7             2.0G  115M  1.8G   7% /var
/dev/mapper/vg_home-lv_home
                      9.6G   54M  9.1G   1% /home
/dev/mapper/vg_u01-lv_u01
                      110G   92M  105G   1% /u01
[root@dbolap ~]#


一.lvm的使用步骤:

1).建立LVM类型的分区  (8e) 
2).建立LVM物理巻PV 
3).建立LVM巻组VG 
4).建立LVM逻辑巻LV 
5).建立文件系统 
6).挂接文件系统 
7).使用文件系统

 


二.lvm开机自动挂载

fstab文件的作用 :

文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount /directoryname"命
令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount
、umount的等命令都利用该程序。

lvm开机自动mount,可以修改/etc/fstab 文件,然后重新启动机器即可

eg:
                 
[root@dbolap ~]# vi /etc/fstab

# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/                 /                       ext3    defaults        1 1
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /dev/shm                tmpfs   defaults        0 0
none                    /proc                   proc    defaults        0 0
none                    /sys                    sysfs   defaults        0 0
LABEL=/tmp              /tmp                    ext3    defaults        1 2
LABEL=/usr              /usr                    ext3    defaults        1 2
LABEL=/var              /var                    ext3    defaults        1 2
LABEL=SWAP-sda5         swap                    swap    defaults        0 0
/dev/vg_home/lv_home    /home                   ext3    defaults        1 0
/dev/vg_u01/lv_u01      /u01                    ext3    defaults        1 0
/dev/hda                /media/cdrom            auto    pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
/dev/scd0               /media/cdrecorder       auto    pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
~
~
下面简单介绍下fstab文件的格式说明:

 

下面是/etc/fatab文件的一个示例行:

 

fs_spec fs_file fs_type fs_options fs_dump fs_pass 
/dev/hda1 / ext2 defaults 1 1

 

fs_spec - 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:
IDE设备一般描述为/dev/hdaXN,X是IDE设备通道(a, b, or c),N代表分区号;SCSI设备一描述为/dev/
sdaXN。对于NFS情况,格式一般为:

,例如:`knuth.aeb.nl:/'。对于procfs,使用`proc'来定义。

fs_file - 该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包
含空格的情况,用40来表示空格。

fs_type - 定义了该设备上的文件系统,一般常见的文件类型为ext2 (Linux设备的常用文件类型)、vfat
(Windows系统的fat32格式)、NTFS、iso9600等。

codepage国家语言代码页

iocharset字符集

fs_options - 指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于
大多数系统使用"defaults"就可以满足需要。其他常见的选项包括: 
选项 含义 
ro 以只读模式加载该文件系统 
sync 不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度 
user 允许普通用户加载该文件系统 
quota 强制在该文件系统上进行磁盘定额限制 
noauto 不再使用mount -a命令(例如系统启动时)加载该文件系统

fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0

fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,
其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0

 

三.lvm的lv在线扩容方法

 

通常我们操作pvextend之后,必须执行resize的相关命令才可以。通常安全起见,都是offline下,也就是umount之后才做的。
但是有时候我们是不可以让某些生产系统offline的。所以必须保证online的前提下来extend相应的LV。

以下就是在Online情况下,对于以下的文件系统类型所应执行的命令。


1:ext3
ext2online  /dev/foovg/lvbar

2:reiserfs
resize_reiserfs   /dev/foovg/lvbar

3:xfs
xfs_growfs /dev/foovg/lvbar

4:jfs
mount -o remount,resize /dev/foovg/lvbar
严格来说,jfs这个不能算作online操作。如果恰好这个mounting的分区正存在IO操作,恐怕这样执行会出问题。所以这个保留,稍后我再查找一下。


四.lvm常用命令

 

LVM创建和使用收藏
A、概念:
1).PV(Physical Volume):物理巻,处于LVM最底层,可以是物理硬盘或者分区。


2).VG(Volume Group):巻组,建立在PV之上,可以含有一个到多个PV。 
3).LV(Logical Volume):逻辑巻,建立在PV之上,相当于原来分区的概念。不过大小可动态改变。 
4).PE(Physical Extend):物理区域,PV中可以用于分配的最小存储单位,可以在建立PV时指定,如1,2,4,8... ...64M,同一VG中的所有PV的PE应该相同。 
5).LE(Logical Extend):逻辑区域,LV中可以用于分配的最小存储单元,取决于LV所在PV中PE的大小,是PE的整数倍。 
6).VGDA(Volume Group Descriptor Area):巻组描述区域,存在于每个PV中,用于描述该PV本身、PV所含VG、VG中的LV以及LV中的物理区域分配等信息,在使用pvcreate命令建立PV时建立。  
B、步骤:
1).建立LVM类型的分区 
2).建立LVM物理巻PV 
3).建立LVM巻组VG 
4).建立LVM逻辑巻LV 
5).建立文件系统 
6).挂接文件系统 
7).使用文件系统
 
C、命令
1).PV(物理巻)相关
<1>pvdisplay:显示PV属性
<2>pvscan:在系统所有硬盘上查找PV 
<3>pvcreate:创建PV(在PV上初始化VGDA)
  例如:为/dev/hda1创建了PV
  [root@mylinux]# pvcreate /dev/hda1
 
<4>pvdata:显示某个PV的详细信息
  例如:
  [root@mylinux]# pvdata /dev/hda1 
<5>pvchange:改变PV属性 
<6>pvmove:在PV间移动PE/LE 
2).VG相关
<1>vgdisplay:显示VG巻组属性 
<2>vgscan:查找系统现有VG巻组 
<3>vgcreate:创建VG巻组(在VG上初始化VGDA)
  例如:创建包含物理巻hda1和hdb1的逻辑巻组demoVG1
  [root@mylinux]# vgcreate demoVG1 /dev/hda1 /dev/hdb1 
<4>vgdata:显示VG巻组上的VGDA信息 
<5>vgchange:改变VG巻组属性
  此命令有两个常用的参数:
  -a:,--available{y|n}:在操作VG时,控制一个VG的可使用性,换句话说控制一个VG能否被系统内核识别。 
  -x,--allocation{y|n}:控制一个VG能否被扩充或者缩减(控制一个VG内的PV能否被分配)。 
<6>vgmove:在VG巻组间移动PE/LE 
<7>vgextend:用于向VG中添加新的PV
  例如:[root@mylinux]# vgextend demoVG1 /dev/hdd1 
<8>vgreduce:用于从VG中删除PV
  例如:[root@mylinux]# vgreduce demoVG1 /dev/hdd1 
<9>vgmerge:用于合并巻组。待合并的VG必须处于非活动状态。
  例如:将demoVG21和 demoVG2合并到demoVG1中并显示结果:
  [root@mylinux]# vgmerge demoVG1 demoVG2
  vgmerge --ERROR:volume group "demoVG2" must be inactive 
  [root@mylinux]# vgchange -a n demoVG2
  vgchange --volume group "demoVG2" successfully deactivated 
  [root@mylinux]# vgmerge demoVG1 demoVG2
   vgmerge --doing automatic backup of volume group "demoVG1"
   vgmerge --volume group "demoVG2" successfully merged into "demoVG1"

<10>vgsplit:用于拆分已经存在的VG,VG必须处于活动状态。
  例如:
  [root@mylinux]# vgchange -a y demoVG2
  [root@mylinux]# vgsplit demoVG2 demoVG4 /dev/hdd2 /dev/hdd5 /dev/hdd6 /dev/hdd7 
<11>vgremove:用于删除VG,要求待删除的VG必须处于非激活状态。
  例如:
  [root@mylinux]# vgchange -a n demoVG1
  [root@mylinux]# vgremove demoVG1 
<12>vgrename:用于重命名VG,不要求VG处于非激活状态。
  例如:
  [root@mylinux]# vgrename demoVG2 demoVG3 
<13>vgck:用于检测VG中VGDA的一致性。 
<14>vgcfgbackup:备份系统所有VG中各物理巻的VGDA信息到/etc/lvmconf
  [root@mylinux]# vgcfgbackup 
<15>vgcfgrestore:用于从/etc/lvmconf恢复系统所有VG中各物理巻的VGDA信息。VG必须处于非激活状态。 
<16>vgmknodes:用于vgcfgrestore后,重建节点信息,重建已有巻组的巻组目录和其中的设备文件。
  例如:
  [root@mylinux]# vgchange -a n demoVG3
  [root@mylinux]# vgmknodes   
<17>vgexport:用于输出巻组。待输出巻组必须为非激活状态。巻组中的物理巻需要被转移到其它系统中使用时,就需要使用这个命令。
  例如:
  [root@mylinux]# vgchange -a n demoVG3
  [root@mylinux]# vgexport demoVG3
<18>vgimport:用于输入巻组。
  例如:
  [root@mylinux]# vgimport demoVG1 /dev/hdd1 
3).LV相关
<1>lvdisplay:显示LV的属性 <2>lvscan:查找系统现有LV 
<3>lvcreate:创建LV 
<4>lvdata:显示LV上的LVDA信息 
<5>lvchange:改变LV属性
  例如:
  [root@mylinux]# lvchange -a n /dev/demoVG1/demoLV11 
<6>lvmove:在LV间移动PE/LE 
<7>lvextend:扩展LV容量。LVM的最突出特点就是随时动态的调整LV空间大小。
  例如:
  [root@mylinux]# lvscan|grep LV11
  lvscan --ACTIVE  "/dev/demoVG1/demoLV11" [200MB]
  [root@mylinux]# lvextend -L +10m /dev/demoVG1/demoLV11 (为demoLV11增加10MB的空间) 
<8>lvreduce:减小LV容量。
  例如:
  [root@mylinux]# lvextend -L -10m /dev/demoVG1/demoLV11 (为demoLV11减少10MB的空间) 
<9>lvrename:LV重命名
  例如:
  [root@mylinux]# lvrename /dev/demoVG1/demoLV11 /dev/demoVG1/demoLV01 
<10>lvremove:删除LV(逻辑巻)
  例如:
  [root@mylinux]# lvremove /dev/demoVG1/demoLV01  <11>resize2fs/e2fsadm/resize_reiserfs:类似于extend命令。 
4).创建文件系统
<1>使用命令mkfs在demoLV31上创建ext3类型的分区:
  [root@mylinux]# mkfs -t ext3 /dev/demoVG3/demoLV31
 
<2>使用命令mkfs.ext3在demoLV31上创建ext3分区:
  [root@mylinux]# mkfs.ext3 /dev/demoVG3/demoLV31  
<3>使用命令mkreiserfs在demoLV31上创建reiserfs分区:
  [root@mylinux]# mkreiserfs /dev/demoVG3/demoLV31  
<4>使用命令mkjfs在在demoLV31上创建jfs分区:
  [root@mylinux]# mkfs.jfs /dev/demoVG3/demoLV31  
5).挂接文件系统
先建立四个目录:
 [root@mylinux]# mkdir /mnt/mnt_lv11 /mnt/mnt_lv12 /mnt/mnt_jfs /mnt/mnt_reiserfs
挂接命令:
<1>mkfs挂接:
 [root@mylinux]# mount -t ext3 /dev/demoVG3/demoLV31 /mnt/mnt_lv11 
<2>mkfs.ext3挂接:
 [root@mylinux]# mount /dev/demoVG3/demoLV31 /mnt/mnt_lv12 
<3>mkjfs挂接:
 [root@mylinux]# mount -t jfs /dev/demoVG3/demoLV31 /mnt/mnt_jfs 
<4>mkreiserfs挂接:
 [root@mylinux]# mount -t reiserfs /dev/demoVG3/demoLV31 /mnt/mnt_reiserfs 
6).使用
 ***略*** 
7).LVM相关命令
<1>lvmdiskscan:检测硬盘和分区中的逻辑巻管理信息
<2>lvmsadc:收集逻辑巻的读写统计信息
<3>lvmsar:查看LVM的日志文件信息
<4>lvmchange:复位LVM组件

 


参考文档:
一份非常内行的Linux LVM HOWTO
http://www.3800hk.com/Article/os/Linux/xtgllu/2005-08-06/Article_42306.html

 LVM创建和使用
http://blog.csdn.net/luoduyu/archive/2008/04/25/2328446.aspx