工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆
浏览模式: 标准 | 列表2010年12月的文章

windows 2003序列号

JCGCH-K6BYM-WVXP6-HDWWW-H2V3Y

未验证

Microsoft.Win2003.Standard.CHS.VOL 
SN:JCGCH-K6BYM-WVXP6-HDWWW-H2V3Y 
JCDP9-7RTKQ-FYD4J-XX3MV-FR8YB 
JCDX8-7FMJY-WTQPM-XH33W-R6H3Y 
JCH2K-3H66Q-7YGQQ-7PCB2-T3GBB 
JCFYB-RCQJW-36BXX-6DYBB-J72MB 
JCHWW-8HM9R-HQ49J-4GBKG-CFTBB 
JCCTY-684TD-2JDDH-PXWPT-HH67M 
JCBHW-J8TJG-J2RFQ-GBM4H-G2QHM 
JCD83-PCWT9-RXX6X-8MMJ8-8W3HM 
JCGQK-2FVRG-QYC8H-RFWKH-7B9VM 
JCB84-K8GHM-RMF2B-XP2WY-QTDHM 
JB872-42RF6-9P3FY-DKHKQ-X33HM 
JCC97-MJKTB-2KF4V-GGM4J-4FXVM 
JB8VP-W9KX9-K3MVV-44247-Y72MB 
JCB24-39C8X-HMKMQ-8DKBY-PYH3Y 
JCH42-Q7KF3-VWY36-CPFW4-7TDHM 
JCD6K-RCMV3-XGBFP-RRCTP-BKTBB 

windows Server 2003 简体中文ISO版 
SN:JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY 
QW32K-48T2T-3D2PJ-DXBWY-C6WRJ 
CKY24-Q8QRH-X3KMR-C6BCY-T847Y 
krmxq-bjduw-j89mb-7767f-pvr8m

windows2003序列号:cky24-q8qrh-x3kmr-c6bcy-t847y
win2003 Enterprise Server:QW32K-48T2T-3D2PJ-DXBWY-C6WRJ
win2003 Standard Server:M6RJ9-TBJH3-9DDXM-4VX9Q-K8M8M
win2003 Web Server:D42X8-7MWXD-M4B76-MKYP7-CW9FD
Windows2003服务器版的序列号:JB88F-WT2Q3-DPXTT-Y8GHG-7YYQY

lvm 常用命令

LVM有关概念
LVM(Logical Volume Manager)即逻辑卷管理器,它最先是在Linux 2.4内核中被集成到内核中去的,它的出现改变了传统的磁盘空间管理理念。以往在安装操作系统时需要规划好分区大小,即使利用了RAID技术也要规划好每个分区的大小,因为一旦分好区后要改变其大小是非常困难的事情。在Windows下有大家熟悉的Partition Magic工具可以用来调整分区大小,但它有一个缺点是要么在调整前要关闭系统或调整后重启系统。
这在普通PC机上使用还行,要在提供不间断服务服务器上使用就会造成服务中断,不过这个问题在Linux下随着LV技术的出现一切都得到解决,LV可以在不用重启系统的情况动态增加可用空间大小,不过前提得是使用热插拔硬盘,或事先将硬盘装入而不使用。本文我将使用名词LV(可不是LV包)而不是LVM,因为LV才是主角。
首先我们要弄清楚LV领取的几个关键名词概念:
物理介质:就是我们通常说的硬盘,简称pm
物理卷:就是我们通常说的硬盘分区,简称pv
物理分区:它是由LVM命令在物理卷上创建的最小LVM寻址单元,在创建物理卷时可以指定物理分区的大小,默认值是4M,简称pe
卷组:由一个多多个物理卷组成的逻辑单元,简称vg
逻辑分区:它与物理分区一一对应,大小相等,简称le
逻辑卷:从卷组中分配一定大小的空间创建的逻辑单元,也可以使用一个完整的卷组空间大小来创建一个逻辑卷,简称lv
上面这几个关键名词的关系可以用下图来解释:

图中没有给出le(逻辑分区),因为它对于描述整个概念来说不太重要。如何理解这个图呢?


首先pv1和pv2是物理卷,pv1对应的可能是一整块硬盘,也可能是硬盘中的一个分区,如/dev/hda1,pv2也应这样理解;pv1中包含的pe1,pe2,pe3都是经过pvcreate命令在pv1上做的标记,可以理解为将pv1分解成3个小块,响应的pv2下的pe1,pe2,pe3 也做此理解;
vg1是卷组,它是由pv1下的pe1和pe2组成的,即从pv1的空间中分一部分(pe1和pe2)来组成卷组vg1,并且我给该卷组命名为 oracle,注意物理卷没有名字,直接用/dev/hda1或/dev/sda的形式来称呼它,vg2是跨了两个物理卷组成的,它是由pv1中的pe3 和pv2中的pe1,pe2组成,可以看出卷组可以跨我们通常所说的硬盘分区,也可以跨多个硬盘;
lv1是在卷组vg1上创建的逻辑卷,它使用了整个vg1的空间,而lv2和lv3都是从vg2空间创建的逻辑卷,可以看出一个卷组可以包括一个或多个逻辑卷,注意逻辑卷不能跨卷组,也就是说如果要想在两块硬盘上创建一个逻辑卷,必须经过卷组的转换才能实现,因为卷组是可以跨多块硬盘的;
在逻辑卷的基础上我们可以创建文件系统,如ext3,jfs等,和在普通分区上创建文件系统没有什么区别,最后可以将逻辑卷挂载在某个挂载点上,如/oracle。
◆创建LV
我这里打算以Red Hat Enterprise Linux 5为系统环境,介绍一下在命令行的操作,不过其他发行版应该都适用,至于在图形界面下的操作我尝试了一下反而不习惯,所以本文就省略掉在图形界面的操作。
要创建一个lv,从上面的图中可以看出,首先得准备好一块硬盘或一个分区,注意分区还得是Linux LVM类型,下面我一步一步说明:
假设已经在系统中增加了3块硬盘,分别是/dev/hda,/dev/hdb,/dev/hdd,因为/dev/hdc被光驱占用了,每块硬盘大小假设是100M,以/dev/hda为例,其他类推
#fdisk /dev/hda

回车,输入n(创建一个新分区),回车,输入p(创建一个主分区),回车,输入1(主分区号),回车,回车(输入分区起始地址,默认1),回车(输入分区结束地址,默认是整块硬盘的最后一数据块),输入t(修改分区类型,默认是83),回车,输入8e(Linux LVM分区类型),输入w(保存并退出),这样会创建/dev/hda1分区,完全占用了硬盘/dev/hda的空间。同样对/dev/hdb和/dev /hdd做对应的操作。
前面的操作完成后,就可以开始创建pv了
#pvcreate /dev/hda1
#pvcreate /dev/hdb1
#pvcreate /dev/hdd1

物理卷pv创建成功会有类似【Physical volume "/dev/hdd1" successfully created】的提示。可以使用pvdisplay命令查看物理卷的详细信息。执行pvcreate命令后会向硬盘中写如pv信息,同时也会在/etc /lvm/backup目录下产生同样的pv信息文件。
接下来就可以创建卷组vg了
#vgcreate oracle /dev/hda1
#vgcreate src /dev/hdb1
#vgcreate ftp /dev/hdd1

注意:创建卷组时如果使用默认的参数,最后在此基础上创建逻辑卷时会有大小限制,默认最大不能超过256G,如果在生产系统中规划逻辑卷大小会超过256G时,那么在创建卷组时就要使用参数-s并指定一个分为大小,如32M,这样创建的卷组就可以容纳2T的逻辑卷了。如:
#vgcreate -s 32M /dev/hda1

创建卷组时要为卷组指定一个名字,如该卷组会用来存储oracle数据,就可以命名为oracle,如果是用来存储源代码,就可以命名为src,当然随你喜欢了,执行vgcreate命令后会向硬盘中写入卷组信息,也会在/etc/lvm/backup目录下的对应文件中写入卷组信息。有兴趣的读者可以打开看看,都是文本格式的文件。卷组创建好后可以使用命令vgdisplay命令查看其详细信息。
卷组创建好后,就可以开始创建主角逻辑卷了
#lvcreate -L10M -noracle oracle

这里的-L参数后跟的是该逻辑卷的大小,它们之间没有空格,-n参数后跟的是该逻辑卷的名字,最后是卷组的名字。
创建好后可以使用命令lvdisplay命令查看其详细信息,执行lvcreate命令会向硬盘中写入逻辑卷信息,对应的/etc/lvm/backup下的文件也会得到更新。
接下来可以在逻辑卷上创建文件系统了
#mkfs.ext3 -j /dev/oracle/oracle
# mkfs.ext3 -j /dev/src/src
# mkfs.ext3 -j /dev/ftp/ftp

创建挂载点
#cd /
#mkdir oracle src ftp

挂载逻辑卷
#mount /dev/oracle/oracle /oracle
#mount /dev/src/src /src
#mount /dev/ftp/ftp /ftp

这里挂载时是不需要指定文件系统类型的。
#ls /oracle

返回lost+found文件夹,说明挂载成功。
至此,我们已经可以正常使用逻辑卷了,如在挂载点下创建目录,创建文件,设置权限等。不过逻辑卷的使用远不止这么简单,下面就列举一些在实际工作中会遇到的问题及处理办法。
◆增加LV大小
在创建LV时指定的大小现在可能已经不够使用了,这与普通分区空间快要用完的情景非常类似,但使用LV时可以动态增加其大小,而要增加分区大小,事情就麻烦多了。但不是说想使LV增大就能增大的,它还受限于卷组大小和物理卷大小,如果卷组空间已经完全分配,那么要增大LV就必须先增加可用物理卷。这里以逻辑卷lv1(oracle)为例进行说明,增加逻辑卷大小要使用的命令是lvextent
#lvextent -L+10M /dev/oracle/oracle
#lvdisplay

这时看到逻辑卷大小已经变大了,但这并不意味着文件系统就随着一起变大了,此时mount上后,用df命令查看还是增大前的大小,这时需要用到另一个工具ext2resize,因国内www.sf.net被封,从下面的地址下载http://www.mirrorservice.org/sites /download.sourceforge.net/pub/sourceforge/e/ex/ext2resize/ext2resize- 1.1.19-1.i386.rpm,ext2resize 是一款可以增大/减小ext2/ext3文件系统的工具,其实lvextent带有一个-r参数也是重设文件系统大小的,但我在系统中没有发现fsadm 这个命令,它应该是包括在lvm的软件包中,但不知何故我这里没有。安装ext2resize需要创建一个sct用户,安装后有2个命令 ext2resize和ext2online,ext2resize命令必须要在卸载文件系统的情况下才能使用,ext2online可以实现在线重设文件系统大小。
#ext2online /dev/oracle/oracle 24M

这里的24M即逻辑卷oracle新的大小,在创建逻辑卷时指定大小是10M,但时间创建后是12M,扩展了10M实际上也用掉了12M,所以这里应该就是24M。如果指定大于24的值会报错,而且ext2online命令只能在线增大,不能在线减小。
#df -lh

这时就能看到文件系统变为24M了,与逻辑卷大小一致了。使用ext2online的一个好处是,如果你在该逻辑卷上有正在运行的程序,不能终止服务,但空间快用光了,这时可以透明地增加其大小,不影响服务。
◆减少LV大小
有时也需要减小LV大小,如减小其中一个LV大小,然后增加另一个LV大小。减小LV大小使用命令lvreduce,减少LV大小前先用ext2resize减少文件系统大小,这与增大的过程是相反的,然后再用lvreduce减少逻辑卷大小。
#umount /oracle
#ext2resize /dev/oracle/oracle 10M
#lvreduce -L-14M /dev/oracle/oracle
#mount /dev/oracle/oracle /oracle
#df -h

这时看到/oracle文件系统大小只有9.5M了。
注意ext2resize后的10M是目标大小,即减小为多大,lvreduce命令-L参数后的-14是指减少多少,为了pe和le一一对应,这里就设为14M,其实真正减少不了14M,只能减小12M,这一点可以用lvdisplay命令查看。
注意:减小LV可能会造成数据丢失,所以先要做一次全备份,然后卸载掉文件系统,再进行操作。
◆利用LV快照备份数据
LVM提供了为逻辑卷作一个快照的功能,目的是想对逻辑卷进行一致性备份,由于它采用了写时复制技术,使得不用停止服务或将逻辑卷设为只读进行备份,因为备份时文件可能正在被写入数据,如数据库文件,LVM提供的快照功能只是记录了文件系统的改变,它并不是对整个文件系统进行备份。
因此备份时要用的空间大小与备份逻辑卷大小不一定要相等,快照使用空间的大小取决于有多少数据正在写入逻辑卷,以及想要保存快照多长时间,快照指定的空间用光时,快照就失效了,需要人工删除。实际上创建快照也是创建了一个逻辑卷,只不过该卷的属性与普通逻辑卷的属性有些不一样。下面以为/dev /oracle/oracle创建一个大小为20M的快照为例,创建快照使用的命令还是lvcreate:
#lvcreate -L20M -s -n oracle_snap /dev/oracle/oracle

该命令执行结束后,会在/dev/oracle目录下创建一个新的文件oracle_snap,可以使用lvdisplay命令来查看该快照逻辑卷的信息:

它与其他逻辑卷的信息不同,多了一项Allocated to snapshot,这是属性指出了快照空间的使用百分比,目前使用了0.12%,同时注意逻辑卷/dev/oracle/oracle也多了一个属性LV snapshot status,它指出了快照的路径和状态,图中是/dev/oracle/oracle_snap [active],意思是它的快照oracle_snap目前是活动状态。如果我们向/dev/oracle/oracle中填充1M大小的数据,那么快照空间的百分比就会变化(增大)。创建快照后,可以象使用逻辑卷一样进行挂载,然后进行备份。最后不用快照了,使用lvremove /dev/oracle/oracle移除快照。
◆硬盘替换
以往如果硬盘坏掉,意味着数据丢失,于是人们发明了RAID技术,LVM本身不具备数据冗余功能,但它可以建立的RADI技术之上,即先用几块硬盘组成RAID阵列,再在阵列上进行分区,然后在其上建立逻辑卷,如果是这种情况,其中一块硬盘坏掉,如果是RAID5,那么可以直接拔掉坏硬盘,插一块好的即可。在使用LV的情况下,可以不用重启系统将一块硬盘中的数据转移到另一块上,实际上只需要一个命令pvmove就可以了。这里以移动/dev /oracle/oracle上的数据到/dev/src/src为例进行说明。
首先在/oracle上创建1个文件
#echo 1111>/oracle/1.txt

将第二块硬盘加入同一卷组,这里假设将/dev/hdb加入到卷组oracle中
#lvremove src
#vgremove src

这两个命令是将卷组src占用的pv腾出来。
#vgextent oracle /dev/hdb1

将/dev/hdb1分区加入卷组oracle,这时可以移动分区了
#pvmove /dev/hda1

这样将原来的/dev/hda1是的数据全部转移到新的分区/dev/hdb1上了,现在可以将/dev/hda1从卷组oracle中移除。
#vgreduce oracle /dev/hda1

重新挂载
#mount /dev/oracle/oracle /oracle

查看前面创建的文件1.txt是否还在
#ls /oracle

可以看到文件还在,说明移动成功,这样也就完成了硬盘替换。可以看出替换硬盘没有重启系统,实现了在线替换。整个替换流程如下图所示:

◆将硬盘移到另一台计算机上
在使用普通分区的情况下,将硬盘挂接到其他机器上非常简单,拔下来插上去即可使用,在使用了LVM的情况下,要稍微多一点事情,因为LV的结构是同时保存在硬盘中也保存在/etc/lvm/backup下,在将硬盘移动前,要将这里面的信息删除,这是通过LVM附带的一个命令vgexport实现的,到了另一台机器上后,要创建这个信息,是通过vgimport来实现的,下面以/dev/hda为例进行说明。
首先在机器1上:
#vgchange -a n oracle

这条命令是将卷组oracle设为不可用状态
#vgexport oracle

注意这里不要理解为导出,实际上这个命令是从源系统中注销卷组。
在机器2上:
#vgimport oracle /dev/hda1

在机器2上注册卷组oracle
#vgchange -a y oracle

激活卷组oracle,这样硬盘就从一台机器移动到另一台机器了。
注意:如果在你的发行版中运行vgimport命令没有在/etc/lvm/backup目录下创建LV信息备份文件,需要手动运行vgcfgbackup命令来备份。
整个流程如下图所示:

◆转移到LV
这里转移的意思是从现有的普通分区模式转移到用LV管理分区的模式,如我在安装系统时/home文件系统的大小我设为1G,现在发现空间快被填满了,打算增加/home大小,按照以前的管理模式,实现起来非常麻烦,而且数据丢失风险较大,下面我就其转移为以LV管理模式进行举例说明。
首先要清楚一点,这个转移不是类似从ext2转换到ext3的过程,它需要几个步骤:
1、增加一个新分区,假设是/dev/hda6,大小2G
2、将该分区转为物理卷,通过命令pvcreate实现
#pvcreate /dev/hda6

3、创建卷组home_dir,并将hda6加入该卷组
#vgcreate home_dir /dev/hda6

4、创建逻辑卷home_dir
#lvcreate -L2G -nhome_dir home_dir

5、创建挂载点
#mkdir /home_dir

6、创建文件系
#mkfs.ext3 -j /dev/home_dir/home_dir

7、挂载逻辑卷
#mount /dev/home_dir/home_dir /home_dir

8、拷贝源/home目录下的所有内容
#cp -avx /home/* /home_dir

9、重命名源/home名称
#mv /home /home_old

10、卸载home_dir
#umount /home_dir

11、重命名home_dir
#mv /home_dir /home

12、挂载新的/home
#mount /dev/home_dir/home_dir /home

13、如果不出现故障,可以将/home_old删除
#rm -Rf /home_old

至此,就将原来固定分区大小管理的/home转移到用LV管理的/home了,以后再遇到空间不足的情况就可以使用动态增加空间的功能增加其大小了。
◆一些注意事项
1、/boot不能使用LV,系统启动时还来不及加载LV驱动,造成系统启动失败
2、增加或减少LV空间大小时,保险起见要先umount文件系统,再执行增加或减少命令,那么根文件系统使用LV时就不应该做增大或变小操作,因为无法umount根文件系统,即使强制做了也可能会造成系统启动失败。
3、创建卷组时必须要指定名称,创建逻辑卷时可以不指定名称,默认以LogVol00开始命名。
4、创建逻辑卷时一定要指定空间大小,即-L参数,默认不是使用全部的vg空间。
 
5、如果mount逻辑卷时提示必须指定文件系统类型,多半是因为还没有创建文件系统,即还没有使用mkfs.ext3之类的命令。
6、在执行命令时多仔细看其返回的信息,LVM命令通常能够返回非常易懂的信息,在解决故障时非常有用。



写在最后,这篇文章中的命令已经有点过期了,但是不影响你对lvm的理解!

xen系统剖析

xen系统剖析
xen系统是redhat最早支持的虚拟化技术,后来redhat收入了KVM并将KVM集合到内核中,但这不表明xen过时了,这只是redhat的对市场的策略问题,这里我不详细说明。之前我已经写过了关于redhat下如何安装xen,本文档详细对xen的工作原理进行分析。
1、xen虚拟机的生成
name = “boottest”
uuid = “134acb0b-ebad-9620-98ef-a86e12bb94ba”
maxmem = 512
memory = 512
vcpus = 1
builder = “hvm”
kernel = “/usr/lib/xen/boot/hvmloader”
boot = “n”
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = “destroy”
on_reboot = “restart”
on_crash = “restart”
device_model = “/usr/lib64/xen/bin/qemu-dm”
sdl = 0
vnc = 1
vncunused = 1
keymap = “en-us”
disk = [ "file:/opt/boottest.img,hda,w" ]
vif = [ "mac=00:16:36:53:d5:6c,bridge=xenbr0,script=vif-bridge" ]
parallel = “none”
serial = “pty”
以上为一个简单的xm完全虚拟化配置选项。细细分析可以发现其实这个配置文件中有许多参数的定义就像写一个bios的选项。简单的就不详细说明了,我来说一下配置文件中的重要项目,对于初次使用xen的用户来说见意使用 virt-manager 图型工具.
xen配置文件其实就是相当于一台主机的bios配置文件:
kernel = “/usr/lib/xen/boot/hvmloader”
kernel参数用来指定虚拟机引导程序,在使用完全虚拟化时指定为以上值,hvmloader是一个二进制程序,他的内部封装了一个引导虚拟机的内核.但是在准虚拟化时使用virt-manager创建虚拟机后我们会看到kernel的参数不存在了,多了一个bootloader = ‘/usr/bin/pygrub’.因为准虚拟化使用了IO桥接,它需要使用本地的kernel,而pygrub并不是一个像hvmloader一样的带有内核引导程序,它是一个使用python编写的grub引导脚本.之后我会提到这个程序.
boot = “n”
boot参数用来指定虚拟机的启动设备常用的选项为[cdn],c代表使用虚拟磁盘引导也就是后面file:/opt/boottest.img文件,d代表使用虚拟光驱引导,n代表使用pxe引导,当然有用户在机器启动时按下f12键启动pxe,但在实际应用中我们发现虚拟的引导过程是很快的F12的操作机会很短.
pae =1
acpi =1
apic =1
usb =1


这四项和bios中控制非常相似,上面的配置文件中并没有usb项,因为上面的虚拟机不支持usb设备。pae,apic是重要的参数,这两个参数不打开直接影响你的虚拟机不能安装64x系统,这里不详述原因了,大家可以google一下这两个cpu参数的作用。
详细的xenconfig的配置项大家可以参考xen官方文档。
http://www.xen.org/files/Support/XenConfigurationDetails.pdf
xen的配置与你将来要装的系统没有关系,你可以完全把它看成你组状的一台物理机。但有一点需要注意准虚拟化只支持linux.而windows的io桥接是通过加入到windows的xen驱动实现的。
2、虚拟机的磁盘设备
在虚拟机中磁盘是一个文件,它是如何产生的呢?
testboot1.img: data
它是有virt-image工具生成的, virt-image –name example –vnc -i image.xml,那image.xml是什么呢?它是一个有libvirt定义的虚拟磁盘配置文件.
在这里我要说明一下virt-manager,libvirt,xen的关系
virt-manager其实是由redhat支持维护的一个开源项目它提供了图型化和shell工具管理xen和kvm,在使用redhat安装虚拟化时redhat建议安装yum install virt-manager libvirt libvirt-python python-virtinstyum,在安装完成后我们发现了两种管理虚拟机的方法,xm和virt*,那么libvirt是什么呢?它是虚拟化管理接口.
virt-manager ->用户cgi程序
libvirt ->接口程序
xen ->虚拟化核
这样我们就很清楚了。
详细的内容大家可以查阅以下网站
xen -> xen.org
libvirt ->libvirt.org
virt-manager ->virt-manager.org
xen正常生成这个文件后如果我们发现虚拟磁盘不能正常工作,我们如何检查这个磁盘的情况呢?
如果是一个新的磁盘文件,我们可以试着格式化一下。
[root@localhost opt]# mkfs.ext3 -jF testboot1.img
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
512000 inodes, 1024000 blocks
51200 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1048576000
32 block groups
32768 blocks per group, 32768 fragments per group
16000 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information:
done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost opt]# file testboot1.img
testboot1.img: Linux rev 1.0 ext3 filesystem data (large files)
它是一个好的数据文件,如果是一个已经安装好系统的虚拟磁盘,
[root@localhost vm_disks]# file wv33.disk.xm
wv33.disk.xm: x86 boot sector, Microsoft Windows XP MBR, Serial 0x4b5f4b5f; partition 1: ID=0×7, active, starthead 1, startsector 63, 20450682 sectors
[root@localhost vm_disks]# file pvend999.disk.xm
pvend999.disk.xm: x86 boot sector; partition 1: ID=0×83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 10024560 sectors, code offset 0×48
我们通过file命令可以看到磁盘信息,看它是不是完整,如果完整正明分区信息正常,我们可以在linux下对磁盘文件进行fsck。
在虚拟化后的磁盘文件不要把它看成文件,可以把它看成一设备块,所有的磁盘命令对它都适用。
3、pygrub分析
准虚拟化技术使虚拟机实现了真正的上线应用,其主要的技术在io桥接,io桥接在之前已经与大家分享了。这次主要是说明一pygrub,在刚刚接初虚拟化时主要为实现我们的需求,并没有太过细的去分析这个文件,导至后来测试集中管理xen软件convirture2.0时出现了许多问题,pygrub是一个python编的一个grub软件,grub的功能不在详述,它只是为了读取虚拟磁盘中的boot信息,它与hvmloader完全不同,当我们创建手工创建一个准虚拟化系统时,我们手工生成了一个磁盘文件,这个磁盘文件并没有安装任何linux系统,当我们使用xm create testvm时会发生错误:
[root@localhost opt]# pygrub testboot1.img
Traceback (most recent call last):
File “/usr/bin/pygrub”, line 682, in ?
chosencfg = run_grub(file, entry, fs)
File “/usr/bin/pygrub”, line 536, in run_grub
g = Grub(file, fs)
File “/usr/bin/pygrub”, line 203, in __init__
self.read_config(file, fs)
File “/usr/bin/pygrub”, line 397, in read_config
raise RuntimeError, “couldn’t find bootloader config file in the image provided.”
RuntimeError: couldn’t find bootloader config file in the image provided.
pygrub无法正常读取到boot config,这是因为这个磁盘还是一个空磁盘。为什么我们使用virt-manager创建准虚拟化时不会出现这样的问题呢?
因为virt-manager替我们多做一个操作,我们使用virt-manager创建准虚拟化虚机时virt-manager只能选择从http/nfs/ftp来安装,这个目录都被指定到了http://xxx/pub/os/Linux/RedHat/enterprise/x86_64/5ASU4/install/ 但其实virt-manager又替我们做了一步,它把kernerl和ramdisk参数帮我们设置install/images/xen/vmlinux 与install/images/xen/initrd.img。由vmlinux引导虚拟机启动进行安装,完成后virt-manager重新生成了一个虚拟机配置文件放在/etc/xen目录,并把它的kernerl和ramdisk参数取消,加入了bootloader = ‘/usr/bin/pygrub’。所以我们在virt0manager创建准虚拟化时是看不到config文件的。
[root@localhost opt]# pygrub testboot1.img
pyGRUB  version 0.6
谀哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目
硾[10m Red Hat Enterprise Linux Server (2.6.18-164.el5)                       硾[10m
硾[10m                                                                   硾[10m
硾[10m                                                                   硾[10m
硾[10m                                                                   硾[10m
硾[10m                                                                   硾[10m
硾[10m                                                                   硾[10m
硾[10m                                                                   硾[10m
硾[10m                                                                   硾[10m
滥哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪馁
Use the ?and ?keys to select which entry is highlighted.
Press enter to boot the selected OS, ‘e’ to edit the
commands before booting, ‘a’ to modify the kernel arguments
before booting, or ‘c’ for a command line.
Will boot selected entry in  1 seconds

dd if=/dev/zero of=bigfile bs=1024k count=1 seek=10000

/sbin/mkfs.ext3 bigfile

sudo mount -o loop /home/admin/dayu-postcheck/postcheck/bigfile /home/admin/dayu-postcheck/postcheck/yangtmp/

创建LVM卷

7.6.2 创建LVM卷

首先,用fdisk命令创建存储设备的物理分区,供创建逻辑分区之用。我们用的是一款32 MB的U盘,设备名为/dev/sdb:

  1. # fdisk /dev/sdb                启动管理磁盘分区的命令  
  2. Command (m for help): p         显示当前分区(未分区)  
  3.  
  4. Disk /dev/sdb: 32 MB, 32112128 bytes  
  5. 1 heads, 62 sectors/track, 1011 cylinders  
  6. Units = cylinders of 62 * 512 = 31744 bytes  
  7.  
  8.    Device Boot      Start         End      Blocks   Id  System  
  9.  
  10. Command (m for help): n         创建新分区  
  11. Command action  
  12.    e   extended  
  13.    p   primary partition (1-4)  
  14. p                               设置成主分区  
  15. Partition number (1-4): 1       指定为分区1 
  16. First cylinder (2-1011default 2): Enter  
  17. Using default value 2 
  18. Last cylinder or +size or +sizeM or +sizeK (2-1011default 1011): Enter  
  19. Using default value 1011 
  20.  
  21. Command (m for help): t                指定分区类型  
  22. Selected partition 1 
  23. Hex code (type L to list codes): 8E    设成8E(LVM分区)  
  24. Changed system type of partition 1 to 8e (Linux LVM)  
  25. Command (m for help): p                键入p查看新建分区  
  26. Disk /dev/sdb: 32 MB, 32112128 bytes  
  27. 1 heads, 62 sectors/track, 1011 cylinders  
  28. Units = cylinders of 62 * 512 = 31744 bytes  
  29.  
  30. Device Boot      Start         End      Blocks   Id  System  
  31. /dev/sdb1        2             1011     31310    8e  Linux LVM 

继续下一步操作之前,先确认对相应分区的修改正确无误。如果一切妥当,则写入新分区表,如下所示:

  1. Command (m for help): w  
  2. The partition table has been altered!  
  3. Calling ioctl() to re-read partition table.  
  4. Syncing disks.  
  5. #  

回到shell提示符,使用sfdisk命令查看U盘分区情况:

  1. # sfdisk -l /dev/sdb      查看LVM分区  
  2.  
  3. Disk /dev/sdb: 1011 cylinders, 1 heads, 62 sectors/track  
  4. Units = cylinders of 31744 bytes, blocks of 1024 bytes, counting from 0 
  5.  
  6.    Device Boot Start     End   #cyls    #blocks   Id  System  
  7. /dev/sdb1          1    1010    1010      31310   8e  Linux LVM  
  8. /dev/sdb2          0       -       0          0    0  Empty  
  9. /dev/sdb3          0       -       0          0    0  Empty  
  10. /dev/sdb4          0       -       0          0    0  Empty 

下一步,将/dev/sdb1制作成新的LVM物理卷,并使用pvs命令查看物理LVM卷相关信息:

  1. # pvcreate /dev/sdb1           将sdb1制作成LVM物理卷  
  2.   Physical volume "/dev/sdb1" successfully created  
  3. # pvs                          查看物理LVM分区  
  4.   PV         VG     Fmt  Attr PSize  PFree  
  5.   /dev/sdb1  vgusb  lvm2 a-   28.0020.00M  
  6.  
  7. 下面使用vgcreate创建vgusb卷组,并列出当前活跃的卷组:  
  8.  
  9. $ vgcreate vgusb /dev/sdb1        创建vgusb卷组  
  10.   Volume group "vgusb" successfully created  
  11. $ vgs                             查看当前卷组  
  12.   VG     #PV #LV #SN Attr   VSize  VFree  
  13.   vgusb    1   0   0 wz--n- 28.0028.00

使用lvcreate在vgusb卷组里新建一个10M大小的LVM分区。然后,用lvs查看逻辑卷,用vgs查看空闲空间的大小变化:

  1. $ lvcreate --size 10M --name lvm_u1 vgusb
  2. Rounding up size to full physical extent 12.00 MB
  3. Logical volume "lvm_u1" created
  4. $ lvs 查看逻辑卷信息
  5. LV VG Attr LSize Origin Snap% Move Log Copy%
  6. lvm_u1 vgusb -wi-a- 12.00M
  7. $ vgs 发现卷组仍有16M空闲空间
  8. VG #PV #LV #SN Attr VSize VFree
  9. vgusb 1 1 0 wz--n- 28.00M 16.00M

使用mkfs.ext3命令在lvm分区上创建ext3文件系统,示例如下:

  1. $ mkfs.ext3 /dev/mapper/vgusb-lvm_u1
  2. mke2fs 1.38 (30-Jun-2005)
  3. Filesystem label=
  4. OS type: Linux
  5. Block size=1024 (log=0)
  6. Fragment size=1024 (log=0)
  7. 3072 inodes, 12288 blocks
  8. 614 blocks (5.00%) reserved for the super user
  9. First data block=1
  10. Maximum filesystem blocks=12582912
  11. 2 block groups
  12. 8192 blocks per group, 8192 fragments per group
  13. 1536 inodes per group
  14. Superblock backups stored on blocks:
  15. 8193
  16. Writing inode tables: done
  17. Creating journal (1024 blocks): done
  18. Writing superblocks and filesystem accounting information: done
  19. This filesystem will be automatically checked every 35 mounts or
  20. 180 days, whichever comes first. Use tune2fs -c or -i to override.

至此,ext3文件系统创建完毕,该LVM卷已准备就绪。

使用HyperVM管理OpenVZ

OpenVZ是我一直在使用的虚拟机软件,之前曾介绍过基于Web管理的Vtonf工具。Vtonf部署和管理都比较方便,适合单台服务器的环 境。而今天我要介绍的工具,也是基于Web管理OpenVZ的,名称叫:HyperVM。它是一个支持多平台、Xen/OpenVZ虚拟、多服务器集群的 管理平台环境,特别适合于对大规模的虚拟机进行统一管理。



一、准备工作

操作系统平台:红旗 Asianux 3.0 for x86_64 SP1



1、获取软件

HyperVM的官方网站:

http://lxlabs.com/

根据官网上的安装说明,HyperVM可以在一台裸系统的系统上,通过其脚本来进行部署。安装时,会把OpenVZ、HyperVM都全部安装完成。但实际使用中,全部用脚本来部署会有两个问题:

 

引用
a、脚本下载时都是连接到国外的网站,速度很慢;
b、不知道是因为使用红旗平台,还是x86_64等的原因,使用脚本部署完毕后,发现OpenVZ仍未正确安装。

 

所以,我决定先配置OpenVZ,然后再安装HyperVM。



2、配置OpenVZ

安装和下载:

 

# wget http://mirror.centos.org/centos-5/5.2/os/i386/CentOS/yum-fastestmirror-1.1.10-9.el5.centos.noarch.rpm
# rpm -ivh yum-fastestmirror-1.1.10-9.el5.centos.noarch.rpm
# cd /etc/yum.repos.d/
# wget http://download.openvz.org/openvz.repo
# yum install ovzkernel-devel.x86_64
# yum install ovzkernel.x86_64
# yum install vzctl vzquota

 

关闭selinux:

 

引用
# setenforce 0
setenforce: SELinux is disabled

 

修改/etc/sysconfig/selinux文件为selinux=disabled。

 

在/etc/sysctl.conf最后加入:

 

引用
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1

 

然后,修改/boot/grub/menu.lst,设置为从OpenVZ的核心启动。重启服务器后,查看vz服务是否正常即可。



3、准备HyperVM软件包

由于HyperVM的脚本在安装时,需要从官网下载大量的软件包,特别是OpenVZ的OSTemplate模板,数据量大,但传输速率又特别慢。为此,我在本地模拟了一个

download.lxlabs.com

的环境,把必要的软件包先预存放在服务器上。内容如下:

 

引用
# cd /var/www/html/
# tree download/
download/
|-- hypervm
|   `-- production
|       `-- hypervm
|           `-- hypervm-current.zip
|-- hypervm-thirdparty.2008.zip
|-- program-install.zip
|-- update
|   |-- lxgeneral
|   |   `-- repodata
|   |       |-- filelists.xml.gz
|   |       |-- other.xml.gz
|   |       |-- primary.xml.gz
|   |       `-- repomd.xml
|   `-- rhel-5.2
|       `-- x86_64
|           |-- lxphp
|           |   `-- lxphp-5.2.1-200.i386.rpm
|           |-- lxprg
|           |   |-- lxlighttpd-1.4.18-5.i386.rpm
|           |   `-- lxzend-3.3-100lxa.i386.rpm
|           `-- repodata
|               |-- filelists.xml.gz
|               |-- other.xml.gz
|               |-- primary.xml.gz
|               `-- repomd.xml
`-- vpstemplate
    `-- centos-5-i386-afull.tar.gz

 

除了vpstemplate下的文件外,其他软件都是必须的。其中,repodata的内容,可以使用createrepo命令自动生成。

 

本地下载:

 

 

然后在/etc/hosts中加入本地到download.lxlabs.com的指向,并启动httpd服务:

 

# echo "192.168.228.30 download.lxlabs.com" >> /etc/hosts
# service httpd start



三、正式安装
1、mysql的问题

HyperVM在安装时,需要在mysql中创建库和导入数据,所以,mysql应为默认安装,不要设置任何密码,否则请先删除后重装mysql:

 

# rm -rf /var/lib/mysql
# rpm -e mysql-server
# rm /var/log/mysqld.log.rpmsave
# yum install mysql-server


※ 注意,若您的服务器上已有mysql的数据,请注意备份。或参考网上的资料,清空mysql的管理员密码。

2、修改系统版本

HyperVM随着RHEL 5.2的发布,修改了网上链接的路径,但却没有了5.1的目录。若你仍在使用RHEL 5.1,请修改:

 

引用
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.1 (Tikanga)

 

改为:

 

引用
Red Hat Enterprise Linux Server release 5.2 (Tikanga)


3、安装HyperVM

HyperVM的安装过程好简单:

 

# wget http://download.lxlabs.com/download/hypervm/production/hypervm-install-master.sh
# sh ./hypervm-install-master.sh --virtualization-type=NONE --skipostemplate


◎ 注意:

选项--virtualization-type供选择的参数有三个:xen/openvz/NONE,分别对应部署xen环境、部署openvz环境和不用部署虚拟机环境,若在已经部署好虚拟机环境的服务器上安装,则应使用NONE模式。

 

另外,安装官网论坛上的说法,可以使用--skipostemplate跳过VPS模板的下载,但在我的实际测试中,似乎没作用。暂时没找到原因,不过,反正我已经部署了download.lxlabs.com的环境,问题也不大了。

 

安装到最后,会提示:

 

引用
......
17:26:08 (65.4 MB/s) - `index.html?C=D;O=D' saved [960/960]

FINISHED --17:26:08--
Downloaded: 9 files, 8.4K in 0s (58.4 MB/s)
Executing Update Cleanup... Will take a long time to finish....
Congratuations. hyperVM has been installed succesfully on your server as master
You can connect to the server at https://<ip-address>:8887 or http://<ip-address>:8888
Please note that first is secure ssl connection, while the second is normal one.
The login and password are 'admin' 'admin'. After Logging in, you will have to change your password to something more secure
Thanks for choosing hyperVM to manage your Server, and allowing us to be of service

***There is one more step you have to do to make this complete. Open /etc/grub.conf, and change the 'default=1' line to 'default=0', and reboot this machine. You will be rebooted into the openvz kernel and will able to manage vpses from the hyperVM interface

 

启动hypervm服务:

 

引用
# service hypervm start
/usr/local/lxlabs/hypervm/httpdocs
Starting hypervm: mysqld (pid 8554) 正在运行...
Started hypervm

 

访问https://<ip-address>:8887 或 http://<ip-address>:8888:

new_xen_install_needs_lvm_check_lxlabs_website_for

1 – Reload OS in hardware
2 – configure your hdd with lvm partition
with fdisk command make the partition mode ' 8e '
then create physical volume
pvcreate /dev/xxx
then create volume group
vgcreate gropname /dev/xxx
now hypervm able to create lv partition

3- install hypervm for xen …

———————

Install complete and Problem Has Been SOlved

Special thanks to 'dj-m'

It looks like you formatted and mounted the lvm as a partition.

umount /mnt/vfs

Try again.

Hello ,

Thank you for answer .

I've used umount /mnt/vfs but problem not solved !

then

1) I've destroyed the LVM partition with Fdisk and removed LVM volume ( VG ) with Vgremove command

2) I've created sda4 again with 8e format ( LVM Linux )

3) I've created Vg0 with Vgcreate Command ( PE Size 16 MB )

4) I've created lvol0 with Lvcreate Command on volume group vg0

but the problem not Solved !

Just to be sure…

The steps I use, and work;

pvcreate /dev/sda3
vgcreate vol /dev/sdb1

Nothing more.

In hypervm, go to "servers", click on the host name of the server, on the following page it will display your disks under 'resource'.

Do you see it there?

I'm actually deploying a fresh server on xen right now. If there is something else that needs to be done I'll update this.

I just do this (since by default my large partition comes formatted as /vz).

umount /vz;rm -rf /vz (followed by a removal from fstab)
pvcreate /dev/sda3 (or whatever partition if you are not using whole disk)
vgcreate xen /dev/sda3
sh hypervm*slave*.sh –virtualization-type=xen

Done deal and working good. Anyhow, I'm about to go through this procedure in about 10 minutes, if there is something else I'll update this.
[Updated on: Wed, 08 July 2009 02:21]

Hello ,

THanks for answer . In 'resource' I see :

vol 0 MB 214.68 GB
/ (/dev/sda2) 3.95 GB 9.69 GB
/boot (/dev/sda1) 51 MB 443 MB
/dev/shm (tmpfs) 0 MB 1.83 GB
/var/lib/xenstored (none) 0 MB 1.83 GB

now , I've entered sh hypervm*slave*.sh –virtualization-type=xen and I'm waiting for install complete

制作xen vps OS模板for hypervm

网上很少适用于hypervm的xen vps系统模板可供下载使用,记得当时我找了好几天,差不多把大大小小的网站翻遍了,还曾试过使用openvz的OS模板,勉强可以使用,但不太完美。
最后转念一想,何不自己制作呢,终于找到这篇文章:制作及下载XEN模板 如获至宝呀。
记录在此,以备忘。以下内容综合原文及自己的制作过程记录。

我曾经找到这个网站:http://www.stacklet.com/ 有img合适的模板下载,需要修改才能用于hypervm。国内要开代理去访问,才能看到真正的内容,否则就是一个centos的apache默认页~这也是我无意中发现的。

制作过程:

需要root权限,在母机上操作。首先,我们下载需要的img格式模板

cd~
wget http://stacklet.com/sites/default/files/centos/centos.5-3.x86.20090423.img.tar.bz2

下载后,解压缩

tar jxf centos.5-3.x86.20090423.img.tar.bz2

接下来,我们将准备一个目录来挂载映像文件

mkdir /mnt/tmp
mount -o loop ~/centos.5-3.x86.20090423.img /mnt/tmp

然后

nano /mnt/tmp/etc/inittab
1:2345:respawn:/sbin/getty -L xvc0 9600 vt100

编辑/etc/ssh/sshd_config 允许root登陆

nano /mnt/tmp/etc/ssh/sshd_config
PermitRootLogin yes

下面开始制作hypervm OS模板

cd /mnt/tmp
tar czf /home/hypervm/xen/template/centos.5-3.x86.20090423.tar.gz

好了,制作成功。
最后编辑/etc/inittab 看看里面的内容是不是下面的东东,如果不是,改成下面的好点。反正我也不懂啥意思。

c1:2345:respawn:/bin/sh
#c1:1235:respawn:/sbin/agetty 38400 tty1 linux
#c2:1235:respawn:/sbin/agetty 38400 tty2 linux
#c3:1235:respawn:/sbin/agetty 38400 tty3 linux
#c4:1235:respawn:/sbin/agetty 38400 tty4 linux
#c5:1235:respawn:/sbin/agetty 38400 tty5 linux
#c6:12345:respawn:/sbin/agetty 38400 tty6 linux

hypervm必须用到的LVM的建立方法!

LVM一种支持在线增大和减小的分区技术
一、PV物理卷
由分区架构而成,为卷组提供空间。
二、VG卷组
由一个或多个物理卷组成,为LV提供空间。
三、LV逻辑卷
从卷组中获取空间,形成一个新的可用的LVM分区。
四、制作逻辑卷。
1、创建PV(在创建PV之前需要创建一个可用的分区,并且ID为8e)
[root@station19 media]# fdisk /dev/hda 对第一块IDE硬盘进行操作。这取决于你的环境。
The number of cylinders for this disk is set to 14593.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): n 新建一个分区
First cylinder (5421-14593, default 5421):
Using default value 5421
Last cylinder or +size or +sizeM or +sizeK (5421-14593, default 14593): +500M 给他500M的空间。
Command (m for help): p 查看一下当前硬盘分区的情况。
Disk /dev/hda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 3837 30716280 83 Linux
/dev/hda3 3838 5112 10241437+ 83 Linux
/dev/hda4 5113 14593 76156132+ 5 Extended
/dev/hda5 5113 5243 1052226 82 Linux swap / Solaris
/dev/hda6 5244 5308 522081 8e Linux LVM
/dev/hda7 5309 5370 497983+ 83 Linux
/dev/hda8 5371 5420 401593+ 8e Linux LVM
/dev/hda9 5421 5482 497983+ 83 Linux
(这是新建的那快分区)
Command (m for help): t 修改分区的表示符
Partition number (1-9): 9 选择对第9个分区进行操作
Hex code (type L to list codes): 8e 将标识符改为8e(只有将标识符改为8e才能支持LVM)
Changed system type of partition 9 to 8e (Linux LVM)
Command (m for help): p 再次查看一下
Disk /dev/hda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 3837 30716280 83 Linux
/dev/hda3 3838 5112 10241437+ 83 Linux
/dev/hda4 5113 14593 76156132+ 5 Extended
/dev/hda5 5113 5243 1052226 82 Linux swap / Solaris
/dev/hda6 5244 5308 522081 8e Linux LVM
/dev/hda7 5309 5370 497983+ 83 Linux
/dev/hda8 5371 5420 401593+ 8e Linux LVM
/dev/hda9 5421 5482 497983+ 8e Linux LVM
(当前第9快分区的类型变成了8e,LVM)
Command (m for help): w 保存退出
[root@station19 media]# partprobe 重新加载分区,不加载或重启的话当前系统无法识别这个新的分区)
[root@station19 media]# pvcreate /dev/hda9 (将hda9这个分区制作成物理卷)
Physical volume "/dev/hda9" successfully created
[root@station19 media]# pvdisplay 查看PV的内容
— Physical volume —
PV Name /dev/hda9
VG Name
PV Size 486.31 MB / not usable 2.31 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 121
Free PE 121
Allocated PE 0
PV UUID 0pE20O-EWqI-JtTY-gmeX-VJck-GUb0-Mxvx5v
(从这些信息可以看出,/dev/hda9这个物理卷不属于任何VG,它的磁盘空间为486M)
2、创建VG
[root@station19 media]# vgcreate vg /dev/hda9
Volume group "vg" successfully created
将hda9这个物理卷加入到vg这个组里(vg为自己定义的名字)
[root@station19 media]# vgdisplay
— Volume group —
VG Name vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 484.00 MB
PE Size 4.00 MB
Total PE 121
Alloc PE / Size 0 / 0
Free PE / Size 121 / 484.00 MB
VG UUID 6yOerB-EExr-sY0E-KFwO-fg0D-9Zol-RypiT5
现在查看一下,vg这个卷组就拥有了484M的空间也就是/dev/hda9这个逻辑卷的空间
3、创建LV
[root@station19 media]# lvcreate -L 300M -n lv vg
Logical volume "lv" created
创建一个LV,并给他指定拥有300M的空间,vg为指定它属于哪个卷组,也就是由哪个卷组为它提供这300M的空间。
[root@station19 media]# lvdisplay
— Logical volume —
LV Name /dev/vg/lv
VG Name vg
LV UUID HIc32H-DR98-Ymd1-Flhy-1Z2u-iU1Q-e2znLB
LV Write Access read/write
LV Status available
# open 0
LV Size 300.00 MB
Current LE 75
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:1
现在查看一下LV信息,现在这个lv属于vg这个卷组并拥有300M的空间
5、格式化文件系统
[root@station19 media]# mkfs.ext3 /dev/vg/lv 将lv这个逻辑卷格式化为ext3文件系统
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
76912 inodes, 307200 blocks
15360 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
38 block groups
8192 blocks per group, 8192 fragments per group
2024 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
6、挂载
[root@station19 media]# mount /dev/vg/lv /lv 将/dev/vg/lv这个分区挂在到/下的lv下
[root@station19 media]# df -H /lv/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg-lv 305M 11M 279M 4% /lv
查看一下/lv这个分区的大小,300M
到现在为止,我们已经成功的创建了一个逻辑卷,但别忘了。逻辑卷最大的功能是增大和减小,下面我们来对逻辑卷进行增大和减小。
7、增大逻辑卷
[root@station19 media]# lvextend -L 500M /dev/vg/lv
Extending logical volume lv to 500.00 MB
Insufficient free space: 50 extents needed, but only 46 available
[root@station19 media]# lvdisplay
— Logical volume —
LV Name /dev/vg/lv
VG Name vg
LV UUID HIc32H-DR98-Ymd1-Flhy-1Z2u-iU1Q-e2znLB
LV Write Access read/write
LV Status available
# open 1
LV Size 300.00 MB
Current LE 75
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:1
这是一个失败的例子,因为lv所属的vg只有484M,所以当我将lv扩增到500M的时候会失败,因为vg无法为lv提供500M的空间。查看一下,lv仍然只有300M。
[root@station19 media]# lvextend -L 480M /dev/vg/lv
Extending logical volume lv to 480.00 MB
Logical volume lv successfully resized
[root@station19 media]# lvdisplay
— Logical volume —
LV Name /dev/vg/lv
VG Name vg
LV UUID HIc32H-DR98-Ymd1-Flhy-1Z2u-iU1Q-e2znLB
LV Write Access read/write
LV Status available
# open 1
LV Size 480.00 MB
Current LE 120
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:1
现在我将lv扩增到480M,480M是vg所允许的空间大小,查看一下现在成功了。Lv被成功的扩增到了480M。
8、增大文件系统
[root@station19 media]# df -H /lv/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg-lv 305M 11M 279M 4% /lv
查看一下文件系统大小,lv这个文件系统仍是300M,因为我们之前扩展的只是它的分区大小,文件大小并没有增大,所以我们仍然只能使用300M的空间
[root@station19 media]# resize2fs /dev/vg/lv 480M
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vg/lv is mounted on /lv; on-line resizing required
Performing an on-line resize of /dev/vg/lv to 491520 (1k) blocks.
The filesystem on /dev/vg/lv is now 491520 blocks long.
[root@station19 media]# df -H /lv
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg-lv 488M 11M 452M 3% /lv
现在用resize这个工具将/dev/vg/lv这个文件系统扩展到488M,查看一下成功了。
*注:文件系统是建立在分区之上的,分区为我们提供空间,而我们真正能直接使用的是文件系统,例如windows下我们使用的ntfs文件系统一样。而在linux下使用的是ext3格式的文件系统。所以文件系统只能比分区小,不能比分区大。
9、缩小文件系统和分区
(1)减小文件系统时需要现卸载,因为resize这个工具不支持在线减小。
[root@station19 media]# umount /lv 卸载
[root@station19 media]# e2fsck -f /dev/vg/lv
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg/lv: 11/121440 files (9.1% non-contiguous), 25872/491520 blocks
在减小文件系统之前需要先检查一下分区的完整性。
[root@station19 media]# resize2fs /dev/vg/lv 100M 将文件系统减小到100M
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/vg/lv to 102400 (1k) blocks.
The filesystem on /dev/vg/lv is now 102400 blocks long.
(2)缩小分区
[root@station19 media]# lvreduce -L 100M /dev/vg/lv
WARNING: Reducing active logical volume to 100.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv? [y/n]: y
Reducing logical volume lv to 100.00 MB
Logical volume lv successfully resized
将分区缩小到100M
[root@station19 media]# mount /dev/vg/lv /lv/
[root@station19 media]# df -H /lv/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg-lv 102M 11M 88M 11% /lv
[root@station19 media]# lvdisplay
— Logical volume —
LV Name /dev/vg/lv
VG Name vg
LV UUID HIc32H-DR98-Ymd1-Flhy-1Z2u-iU1Q-e2znLB
LV Write Access read/write
LV Status available
# open 1
LV Size 100.00 MB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:1
挂载、查看,成功!文件系统和分区都为100M
10、增大与减小VG
这个很简单,VG是由多个物理卷构成的,只要将物理卷加入VG就可以实现增容,移出就能实现减小。
[root@station19 media]# pvcreate /dev/hda10 将一块新的lvm格式的分区做成物理卷
Physical volume "/dev/hda10" successfully created
[root@station19 media]# vgextend vg /dev/hda10 将hda10这个分区加入到vg这个组
Volume group "vg" successfully extended
[root@station19 media]# vgdisplay
— Volume group —
VG Name vg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 968.00 MB
PE Size 4.00 MB
Total PE 242
Alloc PE / Size 25 / 100.00 MB
Free PE / Size 217 / 868.00 MB
VG UUID 6yOerB-EExr-sY0E-KFwO-fg0D-9Zol-RypiT5
现在查看一下,VG这个卷组拥有了将近1G的空间。
减小、
root@station19 media]# vgreduce vg /dev/hda10
Removed "/dev/hda10" from volume group "vg"
[root@station19 media]# vgdisplay
— Volume group —
VG Name vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 484.00 MB
PE Size 4.00 MB
Total PE 121
Alloc PE / Size 25 / 100.00 MB
Free PE / Size 96 / 384.00 MB
VG UUID 6yOerB-EExr-sY0E-KFwO-fg0D-9Zol-RypiT5
将hda10这个物理卷从VG中移出,再查看,VG又被减小了

Records:65123456789