免费注册 查看新帖 |

Chinaunix

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

动态LVM技术 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-07 16:34 |只看该作者 |倒序浏览
动态逻辑磁盘策略
  前些时间由于个人和记忆线的原因.未能做到及时的对网页进行更新.在些期间谢谢如的支持与关爱,我会写下去的,直至我会的全写完!好了,下面切入正题,
  背景:
    LVM是一种动态的分配磁盘空间的策略,传统的分区与格式化后的空间大小是固定不变的,要是用完还要重新格式化挂载等繁锁的操作,当然,如果你空间分的够大的话,或是硬盘够多的话,你可以参考我那篇的作法进行操作,不过像对于"/"这样的分区就很难进行转移了,开机寻址就很难找到,将导致开机失败,,不过将今天讲的LVM将会动态的对一个分区进行随需的放大或变小,不必进行如:分区,格式化,重启,挂载,等操作.
  举例:
    这里以Fedora core 5为平台,以新硬盘为对象进行讲解;
    把这块硬盘分三个区,分销售,科研,备用,其中销售可分给他100M,科研分给他200M,剩下的200M做为后备资源!
   首先对这块硬盘进行分区操作,这里就不再讲解,不懂的可参考我那篇,分的时候就按上面所说的进行划分,其中值的注意的是,要把所分的区必须转换为LVM文件系统格式,保存退出.由于是内核未保存的硬盘,所以不必进重启即可创建lvm文件系统与使用.
  演示:
   
[root@server root]# fdisk /dev/sda      #进行分区,这里我分好了
Command (m for help): p               #查行查看
Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        13    104391   83  Linux
/dev/sda2            14       332   2562367+  83  Linux
/dev/sda3           333       397    522112+  82  Linux swap
/dev/sda4           398       522   1004062+   5  Extended
/dev/sda5           398       410    104391   8e  Linux LVM
/dev/sda6           411       435    200781   8e  Linux LVM
/dev/sda7           436       460    200781   8e  Linux LVM               #其中分区5.6.7都是LVM格式.切记

   下面开始创建LVM逻辑磁盘,要经三步才能,首先创建物理卷,也即是加入LVM的分区,
第二步就是把第一步中加入lvm的三个分区组成一个磁盘组,第三步就是划分空间给销售与科研和备份了,
[root@server root]# pvcreate /dev/sda[5-7]  #在创建前一定要运行vgscn,否则会出错
pvcreate -- ERROR: "/etc/lvmtab" doesn't exist; please run vgscan
[root@server root]# vgscan          #进行探测,无则创建
vgscan -- reading all physical volumes (this may take a while...)
vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created
vgscan -- WARNING: This program does not do a VGDA backup of your volume group
[root@server root]# pvcreate /dev/sda[5-7]  #初识化物理卷,也可理解为加入
pvcreate -- physical volume "/dev/sda5" successfully created
pvcreate -- physical volume "/dev/sda6" successfully created
pvcreate -- physical volume "/dev/sda7" successfully created                    #加载成功
  第二步就是加入卷组,
[root@server root]# pvscan   #加之前进行查看有哪些物理卷未使用
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sda5" is in no VG  [101.94 MB]
pvscan -- inactive PV "/dev/sda6" is in no VG  [196.08 MB]
pvscan -- inactive PV "/dev/sda7" is in no VG  [196.08 MB]
pvscan -- total: 3 [494.09 MB] / in use: 0 [0] / in no VG: 3 [494.09 MB]  #三个物理卷,都没有使用,
[root@server root]# vgcreate test /dev/sda[56] #把物理卷5.6合并为test卷组,
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "test"
vgcreate -- volume group "test" successfully created and activated

   以上是前二步的操作过程,在次重申pvcreate是要把所想成为LVM逻辑磁盘策略的物理卷或分区加入其中并提供与之相关的服务的前提,也即初识化LVM过程,不过在此之前,一定要使用vgscan进行查看系统中是否存在卷组,存在就利用,不存在就自行创建,然后把初识后的物理卷创建一个卷组,这样基本工作就建好了,值的注意的是创建卷组时用的命令是               vgcreate 卷组名  物理卷
   下面即可创建LVM动态的逻辑磁盘了,先创建100M的销售分区,200M的科研分区,还留有200M做后备资源,
  刚忘记把/dev/sda7加入了,没关系,可用vgextend加入新成员,不过一定要是lvm文件系统的才行
[root@server root]# vgextend test /dev/sda7
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "test"
vgextend -- volume group "test" successfully extended          #加入成功
[root@server root]# lvcreate -n sale -L 100M test              #从test卷组分100M给sale
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/sale" successfully created
[root@server root]# lvcreate -n research -l 50 test        #从test中分200M给research
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/research" successfully created
[root@server root]# lvscan   #查看LVM
lvscan -- ACTIVE            "/dev/test/sale" [100 MB]
lvscan -- ACTIVE            "/dev/test/research" [200 MB]
lvscan -- 2 logical volumes with 300 MB total in 1 volume group
lvscan -- 2 active logical volumes #2个活动的LVM
   最终的目的是什么呢?使用.对.上面建的lv如sale,research都可看到一个分区,如下:

[root@server root]# mkfs.ext3 /dev/test/research  #创建
[root@server root]# mkfs.ext3 /dev/test/sale #文件系统
[root@server root]# mount /dev/test/research /mnt/d1
[root@server root]# mount /dev/test/sale /mnt/d2#挂载
[root@server root]# cp /etc/services /mnt/d1  #测试
[root@server root]# cp /etc/services /mnt/d2
[root@server root]# more /mnt/d1/services #成功
[root@server root]# more /mnt/d2/service

   最后讲一下使用中的技巧,如果想要查看现有多少个物理卷,有多少个已使用,还剩余多少没使用,可使用pvscan命令,以下是本机使用pvscan的情况:
[root@server root]# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE   PV "/dev/sda5" of VG "test" [96 MB / 0 free]
pvscan -- ACTIVE   PV "/dev/sda6" of VG "test" [188 MB / 0 free]
pvscan -- ACTIVE   PV "/dev/sda7" of VG "test" [188 MB / 172 MB free]
pvscan -- total: 3 [494.09 MB] / in use: 3 [494.09 MB] / in no VG: 0 [0]
           #由于刚才做实验用光了,所以这里显示共三个物理卷,已使用三个,并且标出了详细的使用情况;
       vgscan是初识化或创建lvm配置文件的一个脚本,创建之前使用,lvscan是查看当前系统中LVM使用的情况,这里按例子默认:
[root@server root]# lvscan
lvscan -- ACTIVE            "/dev/test/sale" [100 MB]            #活动的
lvscan -- ACTIVE            "/dev/test/research" [200 MB]
lvscan -- 2 logical volumes with 300 MB total in 1 volume group    #2个逻辑卷占第一块卷组的300M
lvscan -- 2 active logical volumes  #2个活动的逻辑卷
    还有查看大小的,有pvdisplay,vgdisplay,lvdisplay,都是看大小的,名字就表示了看什么大小的工具,这里只演示vgdisplay,由于系统中只存在一个vg,所以不用加,如果存在多个就要加上你想要查看的逻辑卷名
  

[root@server root]# vgdisplay #我的系统中只有一个vg,
--- Volume group ---
VG Name               test
VG Access             read/write
VG Status             available/resizable
VG #                  0
MAX LV                256
Cur LV                2
Open LV               0
MAX LV Size           255.99 GB#最大支持的逻辑卷大小
Max PV                256
Cur PV                3
Act PV                3
VG Size               472 MB   #test的大小
PE Size               4 MB     #每块的大小为4M
Total PE              118
Alloc PE / Size       75 / 300 MB  #已分配pe/已分配空间
Free  PE / Size       43 / 172 MB  #剩PE/剩空间
VG UUID               kjUWIi-509A-C3ES-z1gv-JuH2-jNN5-XFF2oB
   ######关于MAX LV size#################
在大型企业里,这样的硬盘空间是不行的,有的都用t做单位了,所以要想跟进现代的步伐,我们必须加大MAX LV size所支持的最大逻辑卷,默认的是支持256G的逻辑卷,我们修改一下,用到的命令是vgcreate,加"-s"参数即可,例:这里以新增的一块物理卷为例:
[root@server root]# vgcreate -s 8 vg0 /dev/sda8 #新增vgo卷组,PE大小为8
vgcreate -- INFO: maximum logical volume size is 511.98 Gigabyte
vgcreate -- doing automatic backup of volume group "vg0"
vgcreate -- volume group "vg0" successfully created and activated
[root@server root]# vgdisplay vg0查看vg0大小
--- Volume group ---
VG Name               vg0
VG Access             read/write
VG Status             available/resizable
VG #                  1
MAX LV                256
Cur LV                0
Open LV               0
MAX LV Size           511.98 GB  #vg0所支持的逻辑大小
Max PV                256
Cur PV                1
Act PV                1
VG Size               88 MB
PE Size               8 MB  #PE的大小
Total PE              11
Alloc PE / Size       0 / 0
Free  PE / Size       11 / 88 MB
VG UUID               P4BuRo-wGk4-MieG-CuA0-aZuc-ViaR-X2rr4J

  如果sale,或research的空间即将用光怎么给他加空间呢?如果觉的sale给的空间太多了太浪费想收回收,那又怎么办呢?如果没有这项功能那不和传统的分区一样了吗?对,这里我们使用的命令是e2fsadm;
[root@server root]# df -hT  #进行查看,注意空间大小
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda2     ext3    2.5G 1016M  1.3G  44% /
/dev/sda1     ext3     99M  9.1M   85M  10% /boot
none         tmpfs     62M     0   62M   0% /dev/shm
/dev/test/sale
              ext3     97M  4.1M   88M   5% /mnt/d1
/dev/test/research
              ext3    194M  4.1M  180M   3% /mnt/d2
[root@server root]# umount /dev/test/sale #卸载
[root@server root]# umount /dev/test/research
[root@server root]# df -hT  是否成功
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda2     ext3    2.5G 1016M  1.3G  44% /
/dev/sda1     ext3     99M  9.1M   85M  10% /boot
none         tmpfs     62M     0   62M   0% /dev/shm
[root@server root]# e2fsadm -l +10 /dev/test/research   #注意小l是pe块,"+10"就是在原基础上加10PE,
[root@server root]# e2fsadm -L -50M /dev/test/sale  #大L,在原来的空间上减去50M,
[root@server root]# mount /dev/test/sale /mnt/d1   #进行挂载
[root@server root]# mount /dev/test/research /mnt/d2
[root@server root]# ls /mnt/d?  #查看里面的文件内容
/mnt/d1:
lost+found  services
/mnt/d2:
lost+found  services   #都原在,但有没有破坏啊
[root@server root]# more /mnt/d1
[root@server root]# more /mnt/d2  #查看
[root@server root]# df -hT      #查看是否分配成功
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda2     ext3    2.5G 1016M  1.3G  44% /
/dev/sda1     ext3     99M  9.1M   85M  10% /boot
none         tmpfs     62M     0   62M   0% /dev/shm
/dev/test/sale
              ext3     47M  4.1M   41M  10% /mnt/d1
/dev/test/research
              ext3    233M  4.1M  217M   2% /mnt/d2  #空间有没变化?
   #完成这么多,没有重启,也没格式化,也没分区,好用吧!
  聪明的读者也许看出刚才给sale,research分配空间时用的两个不同的l,那有什么意思呢?在此将新增一个lvm方便讲解;
  
[root@server root]# lvcreate -n example -L 10M test       #从test中新增10M的example空间,用-L指定
lvcreate -- rounding size up to physical extent boundary
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/example" successfully created
[root@server root]# lvdisplay /dev/test/examle
--- Logical volume ---    #查看
LV Name                /dev/test/examle
VG Name                test
LV Write Access        read/write
LV Status              available
LV #                   3
# open                 0
LV Size                12 MB #明明指定的10怎么变成了12M?出现这种情况可参考vgdisplay中的PE值,
Current LE             3
Allocated LE           3
Allocation             next free
Read ahead sectors     1024
Block device           58:2
  #即然pe指定的是4,那给了10M显示是不行的,只能给3给PE块,如果用"l"指定就只须用pe个数,可看分research时用的命令,

         关于配置的问题就讲这么多.下面开始讲一些其它的譬如,腾出一个分区,做另一个分区的境像等..
       从做好的lvm中去掉一个pv,首先用pvmove后跟想要移走的分区名,这里所做的就是把这个分区上的内容转移到其它的lvm上,并告诉vg说请放我走,^_^,接着vg会做出反应,用vgreduce
     
[root@server root]# pvscan  #查看,把sda5给移出来
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE   PV "/dev/sda5" of VG "test" [96 MB / 48 MB free]
pvscan -- ACTIVE   PV "/dev/sda6" of VG "test" [188 MB / 4 MB free]
pvscan -- ACTIVE   PV "/dev/sda7" of VG "test" [188 MB / 120 MB free]
pvscan -- total: 3 [494.09 MB] / in use: 3 [494.09 MB] / in no VG: 0 [0]
[root@server root]# df   #/dev/sda5是否挂载
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              2522076   1039740   1354220  44% /
/dev/sda1               101089      9304     86566  10% /boot
none                     62828         0     62828   0% /dev/shm
[root@server root]# pvmove /dev/sda5  #移去sda5
pvmove -- moving physical extents in active volume group "test"
pvmove -- WARNING: if you lose power during the move you may need
        to restore your LVM metadata from backup!
pvmove -- do you want to continue? [y/n] y #是否确认
/dev/test/group::/dev/test/sale: 0805 8576, 0806 8576
/dev/test/group::/dev/test/sale: 0805 16768, 0807 147840
0807 229760
pvmove -- doing automatic backup of volume group "test"
pvmove -- 12 extents of physical volume "/dev/sda5" successfully moved  #成功移出
[root@server root]# vgreduce test /dev/sda5 #为了/sda5彻底的走出来,我们把它从卷组中移出来,和vgextend相反!
vgreduce -- doing automatic backup of volume group "test"
vgreduce -- volume group "test" successfully reduced by physical volume:
vgreduce -- /dev/sda5
      #再用pvscan查看一下会出现什么情况?对照前面的pvscan,这样,/dev/sda5就是一个自由的分区了,用fdisk把的类型转换,然后格式化再挂载就可以了,
   关于做瞬间境象,指的是数据不同步的形象,如你压缩一份资料,而刚好外界连网用户又把这份资料转移到别处,这样就会造成数据不正确等现象,不要与raid相混淆!建立快照的空间可与要做快照的分区空间差不多,如果太小只能做一些,多了又是浪费,这里以小一点为好,使用这个命令有可能对你的带宽和机子性能带来一定影响,在重启或卸载后,快照就停留在挂载前的状态了,下面是例子:
[root@server root]# df -lh #查看空间大小和要做快照的分区
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             2.5G 1016M  1.3G  44% /
/dev/sda1              99M  9.1M   85M  10% /boot
none                   62M     0   62M   0% /dev/shm
/dev/test/sale         47M  4.1M   41M  10% /mnt
[root@server root]# ls /mnt #查看里面的内容
lost+found  services
[root@server root]# lvcreate -s -n snap -l 12 /dev/test/sale  #做快照所使用的命令与创建lvm不同
lvcreate -- INFO: using default snapshot chunk size of 64 KB for "/dev/test/snap"
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/snap" successfully created
[root@server root]# mount /dev/test/snap /opt  #挂载
mount: block device /dev/test/snap is write-protected, mounting read-only
[root@server root]# ls /opt #查看快照里面的内容
lost+found  services
[root@server root]# ls /mnt #查看mnt里的内容
lost+found  services  #就是mnt里面的内容丢失,opt里仍有保留,
[root@server root]# umount /opt/  #把快照搞掉
[root@server root]# cp /etc/hosts /mnt/ #再往快照对象里写数据,
[root@server root]# mount /dev/test/snap /opt #再进行挂载
mount: block device /dev/test/snap is write-protected, mounting read-only
[root@server root]# ls /mnt #查看mnt里的内容
hosts  lost+found  services
[root@server root]# ls /opt #这里只保留了挂载前的状态,重启也是如此!
lost+found  services
最后说一下如何删除逻辑卷,操作方法与创建相反,注意一点就是vg那儿要先停止才可删除,否则会提示错误,下面开始演示;
#################第一步#######################
[root@server root]# df #查看lvm是否挂载,
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2              2522076   1040496   1353464  44% /
/dev/sda1               101089      9304     86566  10% /boot
none                     62828         0     62828   0% /dev/shm
[root@server root]# lvscan #查看系统中有哪些lv,找好目标^_^!
lvscan -- ACTIVE   Original "/dev/test/sale" [48 MB]
lvscan -- ACTIVE            "/dev/test/research" [240 MB]
lvscan -- ACTIVE            "/dev/test/examle" [12 MB]
lvscan -- ACTIVE   Snapshot "/dev/test/snap" [47.25 MB] of /dev/test/sale
lvscan -- 4 logical volumes with 347.25 MB total in 2 volume groups
lvscan -- 4 active logical volumes
[root@server root]# lvremove /dev/test/sale #删除它,出师不利,碰上了有快照的家伙,把快照删除了
lvremove -- can't remove logical volume "/dev/test/sale" under snapshot
[root@server root]# lvremove /dev/test/snap #删除快照
lvremove -- do you really want to remove "/dev/test/snap"? [y/n]: y
lvremove -- doing automatic backup of volume group "test"
lvremove -- logical volume "/dev/test/snap" successfully removed  #下面都一样了,,
################第二步######################
[root@server root]# vgscan  #查看系统中有哪些vg
vgscan -- reading all physical volumes (this may take a while...)
vgscan -- found active volume group "vg0"
vgscan -- found active volume group "test"
vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created
vgscan -- WARNING: This program does not do a VGDA backup of your volume groups
[root@server root]# vgremove vg0  #删除一个试下
vgremove -- ERROR: can't remove active volume group "vg0"  #闷,,说不能删除活动的组,停止它,
[root@server root]# vgchange -an vg0 #把它调到关闭状态,a为active,n为no的意思,记的接触网络技术时,很多人都问,怎么激活他的guest用户啊,我都不能提权限吖,^_^
vgchange -- volume group "vg0" successfully deactivated              #关闭成功
[root@server root]# vgremove vg0 #再删除就成功了
vgremove -- volume group "vg0" successfully removed   #下面的都一样了!
[root@server root]# vgscan #再查看一下有没存活滴
vgscan -- reading all physical volumes (this may take a while...)
vgscan -- "/etc/lvmtab" and "/etc/lvmtab.d" successfully created
vgscan -- WARNING: This program does not do a VGDA backup of your volume group
###################第三步#################
[root@server root]# pvscan  #查看有哪些pv
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sda5" is in no VG  [101.94 MB]
pvscan -- inactive PV "/dev/sda6" is in no VG  [196.08 MB]
pvscan -- inactive PV "/dev/sda7" is in no VG  [196.08 MB]
pvscan -- total: 3 [494.09 MB] / in use: 0 [0] / in no VG: 3 [494.09 MB]
然后用fdisk转换文件格式,格式化,挂载就ok了,
到了这里,raid和LVM已经讲完了,不知道我写了这么多,对你有什么帮助没有?我有什么可以改进的,请指出,学完这些能不能把raid和lvm组合一个安全动态的磁盘策略呢?下节我再将raid和lvm合并讲解,把"/"挂载,动态安全的策略就完成了!

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP