Submitted by admin on 2010, December 13, 4:13 PM
OpenVZ 是唯一可用于unibilling生产用的服务器虚拟技术。目前全球有多套unibilling运行于OpenVZ container。经过3年多的VOIP连续运营生产,证实绝对可靠稳定。
在新的服务器上用如下步骤安装openVZ:
导入 OpenVZ yum源
cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm –import http://download.openvz.org/RPM-GPG-Key-OpenVZ
下载openVZ内核及头文件安装包
mkdir -p /usr/src/files
cd /usr/src/files
wget http://download.openvz.org/kernel/branches/rhel5-2.6.18/028stab068.3/ovzkernel-2.6.18-164.11.1.el5.028stab068.3.i686.rpm
wget http://download.openvz.org/kernel/branches/rhel5-2.6.18/028stab068.3/ovzkernel-devel-2.6.18-164.11.1.el5.028stab068.3.i686.rpm
安装openVZ内核及头文件
rpm -ihv ovzkernel*.rpm
配置boot loader确保使用openVZ的内核启动
vi /etc/grub.conf
配置 sysctl
确保 /etc/sysctl.conf 文件中包含如下信息:
# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Enables the magic-sysrq key
kernel.sysrq = 1
# We do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
编辑完毕保存,运行如下命令使之生效:
sysctl -p
禁用 SELinux
修改 /etc/sysconfig/selinux 文件,使其包含信息:
SELINUX=disabled
重新启动linux
shutdown -r now
机器重新启动后,运行 uname -r检查是否已经是openVZ的内核
安装openvz工具集
yum install vzquota
yum install vzctl-lib
yum install vzctl
yum install vzyum
yum install vzpkg
yum install vzrpm43-python
yum install vzrpm44-python
启动OpenVZ服务
/sbin/service vz start
安装操作系统模板文件
查找系统中可用的操作系统模板
yum search vztmpl
[root@tpd620 /]# yum search vztmpl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: mirror.ii.uib.no
* base: mirror.ii.uib.no
* extras: mirror.ii.uib.no
* openvz-kernel-rhel5: openvz.proserve.nl
* openvz-utils: openvz.proserve.nl
* updates: mirror.ii.uib.no
====================== Matched: vztmpl =======================
vztmpl-centos-4.i386 : OpenVZ template metadata for centos-4 i386.
vztmpl-fedora-7.i386 : OpenVZ template metadata for fedora-7 i386.
vztmpl-fedora-core-3.i386 : OpenVZ template metadata for fedora-core-3 i386.
vztmpl-fedora-core-4.i386 : OpenVZ template metadata for fedora-core-4 i386.
vztmpl-fedora-core-5.i386 : OpenVZ template metadata for fedora-core-5 i386.
vztmpl-fedora-core-6.i386 : OpenVZ template metadata for fedora-core-6 i386.
[root@tpd620 /]#
安装centos linux操作系统模板
yum install vztmpl-centos-4
为操作系统模板建立缓存
vzpkgcache
该命令将建立 centos-4-i386-minimal.tar.gz 和 centos-4-i386-default.tar.gz
vzpkgcache centos-4-i386-minimal 将只建立 centos-4-i386-minimal.tar.gz
vzpkgcache centos-4-i386-default 将只建立 centos-4-i386-default.tar.gz
查看系统中存在的操作系统缓存:
[root@c8 ~]# vzpkgls
centos-4-i386-default
centos-4-i386-minimal
建立OpenVZ节点container
准备配置文件
为方便起见,平分Host机器的内存和CPU
cd /etc/sysconfig/vz-scripts/
vzsplit -n 3 -f vps.mytest
上述命令将均分系统资源为3等份,产生一个例子配置文件
验证该文件的有效性:vzcfgvalidate ve-vps.mytest.conf-sample
创建节点VPS
vzctl create 112 --ostemplate centos-4-i386-minimal --config vps.mytest
配置该VPS
vzctl set 112 --hostname unibillingsrv1 --save
vzctl set 112 --ipadd 207.182.xxx.xxx --save
vzctl set 112 --userpasswd root:xxxxxxxxx
vzctl set 112 --nameserver 209.190.xxx.xxx --save
vzctl set 112 --onboot yes --save
vzctl start 112
vzctl exec 112 service sshd start
vzctl enter 112
vzctl stop 112
配置VPS硬盘容量等参数
grep DISK_QUOTA /etc/sysconfig/vz
df /vz
vi /etc/sysconfig/vz-scripts/112.conf
在该文件中添加 DISK_QUOTA=no
grep DISK_QUOTA /etc/sysconfig/vz-scripts/112.conf
vzctl stop 112
vzctl start 112
vzctl exec 112 df
vzctl set 112 --diskinodes 75000000:79000000 --save
vzctl set 112 --quotatime 600 --save
vzctl exec 112 df
vzctl exec 112 stat -f /
vzctl set 112 --quotaugidlimit 100 --save
vzctl stop 112
vzctl start 112
vzctl exec 112 rpm -q quota
vzyum 112 install quota
vzquota stat 112 -t
向新建的vps中安装yum等工具
vzyum 112 install yum
vzyum 112 install diffutils
错误处理
若vzctl enter进入节点时出现错误,或ssh无法进入节点,需要运行如下命令:
vzctl exec 112 "cd /dev; /sbin/MAKEDEV pty; /sbin/MAKEDEV tty; /sbin/MAKEDEV generic"
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:2011
Submitted by admin on 2010, December 10, 4:15 PM
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:1234
Submitted by admin on 2010, December 9, 11:42 PM
wget http://download.lxlabs.com/download/hypervm/production/hypervm-install-master.sh
sh hypervm-install-master.sh --install-type=slave --virtualization-type=xen --skip-ostemplate=true
可选
--virtualization-type=xen/openvz/NONE
--install-type=master/slave
不下载模板
--skip-ostemplate=true
-------------
cd /usr/local/lxlabs/kloxo/httpdocs
#lphp.exe ../bin/common/resetpassword.php master new_password
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:1297
Submitted by admin on 2010, December 9, 8:00 PM
XEN虚拟机在CentOS5下的安装和配置,本文默认使用root用户权限执行安装和配置有关命令参数的含义请使用—help的方式查看,对应参数请修改至合适自己的,主要是名字、网络和文件等参数。
一、安装xen
# yum –y install xen*
安装XEN需要的服务
# yum -y install kernel-xen*
安装XEN的相关内核
二、检查启动选项是否使用xen内核启动
1、检查xen内核文件
安装是否正常:文件位于/boot
# ls –lh /boot
total 9.5M
-rw-r–r– 1 root root 61K Mar 16 08:19 config-2.6.18-8.el5
-rw-r–r– 1 root root 60K Mar 16 09:27 config-2.6.18-8.el5xen
drwxr-xr-x 2 root root 1.0K Aug 15 14:47 grub
-rw——- 1 root root 1.5M Aug 13 17:18 initrd-2.6.18-8.el5.img
-rw——- 1 root root 1.5M Aug 15 14:47 initrd-2.6.18-8.el5xen.img
drwx—— 2 root root 12K Aug 13 17:15 lost+found
-rw-r–r– 1 root root 79K Apr 1 22:49 message
-rw-r–r– 1 root root 82K Mar 16 08:20 symvers-2.6.18-8.el5.gz
-rw-r–r– 1 root root 83K Mar 16 09:28 symvers-2.6.18-8.el5xen.gz
-rw-r–r– 1 root root 865K Mar 16 08:19 System.map-2.6.18-8.el5
-rw-r–r– 1 root root 848K Mar 16 09:27 System.map-2.6.18-8.el5xen
-rw-r–r– 1 root root 1.7M Mar 16 08:19 vmlinuz-2.6.18-8.el5
-rw-r–r– 1 root root 2.0M Mar 16 09:27 vmlinuz-2.6.18-8.el5xen
-rw-r–r– 1 root root 269K Mar 16 07:51 xen.gz-2.6.18-8.el5
-rwxr-xr-x 1 root root 595K Mar 16 09:43 xen-syms-2.6.18-8.el5
2、检查grub配置
# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-8.el5xen)
root (hd0,0)
kernel /xen.gz-2.6.18-8.el5
module /vmlinuz-2.6.18-8.el5xen ro root=LABEL=/
module /initrd-2.6.18-8.el5xen.img
title CentOS (2.6.18-8.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/
initrd /initrd-2.6.18-8.el5.img
修改其中的default=1为default=0,启用xen内核
3、重新启动计算机
4、重启后登录系统,检查XEN是否正常
4.1 执行# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 3919 4 r—– 16.9
出现上述结果表示xen启动正常
4.2 检查log:
#ls -lh /var/log/xen
total 8.0K
-rwxr-xr-x 1 root root 36 Aug 15 15:43 xend-debug.log
-rw-r–r– 1 root root 1.8K Aug 15 15:43 xend.log
# cat /var/log/xen/xend-debug.log
Nothing to flush.
Nothing to flush.
表示一切正常,我们的CentOS5中的XEN服务已经成功启动。至此,我们的CentOS5的宿主机已经安装就绪。
三、安装XEN的Linux客户机系统—CentOS 5.x
1、制作镜像文件
1.1 使用dd创建
#dd if=/dev/zero of=centos5.img bs=2k seek=4096k count=1
制作客户机主要磁盘
# dd if=/dev/zero of=swap.img bs=2k seek=512k count=1
制作客户机交换磁盘
2、创建配置文件
2.1 安装必须的工具
由于以前的安装是基于最小化安装,此时需要增加一个用于安装客户机系统的软件virt-manager,现在安装:
#yum –y install virt-manager
请注意由于此软件包为gnome下的图形管理程序,所以需要安装大量依赖包
此处流泪若干……忘记了这个包的名字,耽误时间2个小时……
2.2 开始安装客户机
# virt-install -n centos5 -r 512 –vcpus=2 –file=centos5.img –file=swap.img –nographics -l http://192.168.0.11/yum/ba…
此时如果机器CPU支持VT技术会询问是否需要开启VT支持,一般选择no,如果支持的话选择yes,此时会要求输入光驱或光盘之类。
Would you like a fully virtualized guest (yes or no)? This will allow you to run unmodified operating systems. no
Starting install…
2.3 启动客户机的安装程序
安装由于为远程的,文本方式,部分ssh客户端下可能会有一些乱,请尝试,此部分和一般网络安装操作系统无异,在此不再详细描述。
建议分区是swap用于交换分区,主分区一个boot一个根分区
2.4 补充说明安装源的制作(最简单的方法)
在一台安装了CentOS5的服务器上开启httpd服务,把CentOS5的DVD整盘复制到/var/www/html/yum/base下即可
2.5 配置文件
安装客户机完毕后会在/etc/xen下产生一个centos5的文件就是配置文件
参考配置文件centos5:
name = “centos5″
memory = “768″
disk = [ 'tap:aio:/opt/xen/centos5/centos5.img,xvda,w', 'tap:aio:/opt/xen/centos5/swap.img,xvdb,w', ]
vif = [ 'bridge=xenbr0', ]
bootloader=”/usr/bin/pygrub”
vcpus=2
on_reboot = ‘restart’
on_crash = ‘restart’
四、安装XEN的Windows客户机
前提:宿主计算机的CPU支持intel的VT或者AMD的amd-v,并且在BIOS中开启了对应的选项。
1、检查是否支持VT:
#xm info |grep xen_cap
xen_caps : xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p
# xm dmesg |grep -i vmxon
(XEN) VMXON is done
(XEN) VMXON is done
如果出现上述字段则计算机支持VT,否则很有可能是不支持或者BIOS禁用了。
也可以通过 xm dmesg或者cpuinfo等等方式查询,这里就不详细描述了。
2、为实现图形化远程安装开启vnc
#yum –y install vnc*
#vi /etc/xen/xend-config.sxp
编辑下列内容(请根据自己情况修改):
(vnc-listen ’192.168.0.xxx’)
(vncpasswd ‘password’)
此处的修改也可以在对应客户端的文件中修改,参后文。
3、重启计算机
其实应该不需要重启计算机,只需要重启xend的服务即可,但是很难重启服务成功,所以干脆重启:)
4、安装windows
安装前述步骤准备好磁盘镜像文件,传输win的iso文件后执行
#virt-install -n mini -r 768 –vcpus=2 –file=mini.img –vnc -v -c /opt/yum/pwinxp.iso
应该出现以下提示:
Starting install…
Unable to connect to graphical console; DISPLAY is not set. Please connect to localhost:5900
Domain installation still in progress. You can reconnect to the console to complete the installation process.
!!请注意此种方式比较适合宿主机开启xwin图形系统并且在宿主机上操作。
4.1 检查vnc的监听
# netstat -anp |grep 5900
tcp 0 0 192.168.0.xxx:5900 0.0.0.0:* LISTEN 2748/qemu-dm
出现上述结果表明vnc已经开启(此时远程宿主机不需要开启xwin)。
此处监听端口可能有所改变,默认为590X。
4.2 使用vnc客户端连接
建议使用realvnc客户端连接!ultravnc在连接后会出现刷屏的情况,几乎无法操作。密码为在第二步设置的密码或者在配置文件中设置的密码。
4.3安装windows
安装过程中如果停止在如下画面或者不断重启:
画面主要停止在starting windows…的蓝色界面上
此种问题一般是由于ACPI的问题,请在引导光盘启动后提示按F2或者F6的时候按下F7,禁用ACPI,或者使用以下配置文件mini.hvm直接强制 关闭:
import os, re
arch = os.uname()[4]
if re.search(’64′, arch):
arch_libdir = ‘lib64′
else:
arch_libdir = ‘lib’
kernel = “/usr/lib/xen/boot/hvmloader”
name = “mini”
builder = “hvm”
memory = “768″
shadow_memory = 8
disk = [ 'file:/opt/xen/mini/mini.img,hda,w', 'file:/opt/yum/pwinxp.iso,hdc:cdrom,r', ]
vif = [ 'type=ioemu,bridge=xenbr0', ]
device_model = “/usr/lib/xen/bin/qemu-dm”
kernel = “/usr/lib/xen/boot/hvmloader”
vnc=1
vnclisten=”192.168.0.xxx”
vncdisplay=1
vncpasswd=’password’
vncunused=1
apic=0
acpi=0
pae=1
boot=”dc”
vcpus=2
serial = “pty” # enable serial console
on_reboot = ‘restart’
on_crash = ‘restart’
请注意cdrom我们没有使用单独的
cdrom=”/opt/yum/en2003entsp2.iso”来配置,使用此会出现以下错误:
错误为cdrom启动错误,错误代码0002
快速启动vnc客户端查看启动信息(修改配置文件),请注意在第一次修改配置文件后安装会重启,请在重启前修正启动顺序为
boot=”c”
此时进入正常安装模式。以后可以去掉disk里面的cdrom选项或者修改,也可以添加删除磁盘信息。
5、其它说明
此种情况也可以用于安装linux类带xwin的系统;开启vnc仅仅是安装需求,一般情况下建议关闭!
Windows安装完毕后在客户机中安装远程控制软件如vnc或者radmin之类后关闭配置文件中的vnc选项,确保宿主机的安全。
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:1260
Submitted by admin on 2010, December 9, 3:06 PM
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
windows | 评论:0
| Trackbacks:0
| 阅读:1327
Submitted by admin on 2010, December 8, 7:57 PM
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为例,其他类推
回车,输入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 |
这里挂载时是不需要指定文件系统类型的。
返回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命令只能在线增大,不能在线减小。
这时就能看到文件系统变为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个文件
将第二块硬盘加入同一卷组,这里假设将/dev/hdb加入到卷组oracle中
#lvremove src
#vgremove src |
这两个命令是将卷组src占用的pv腾出来。
| #vgextent oracle /dev/hdb1 |
将/dev/hdb1分区加入卷组oracle,这时可以移动分区了
这样将原来的/dev/hda1是的数据全部转移到新的分区/dev/hdb1上了,现在可以将/dev/hda1从卷组oracle中移除。
| #vgreduce oracle /dev/hda1 |
重新挂载
| #mount /dev/oracle/oracle /oracle |
查看前面创建的文件1.txt是否还在
可以看到文件还在,说明移动成功,这样也就完成了硬盘替换。可以看出替换硬盘没有重启系统,实现了在线替换。整个替换流程如下图所示:
◆将硬盘移到另一台计算机上
在使用普通分区的情况下,将硬盘挂接到其他机器上非常简单,拔下来插上去即可使用,在使用了LVM的情况下,要稍微多一点事情,因为LV的结构是同时保存在硬盘中也保存在/etc/lvm/backup下,在将硬盘移动前,要将这里面的信息删除,这是通过LVM附带的一个命令vgexport实现的,到了另一台机器上后,要创建这个信息,是通过vgimport来实现的,下面以/dev/hda为例进行说明。
首先在机器1上:
这条命令是将卷组oracle设为不可用状态
注意这里不要理解为导出,实际上这个命令是从源系统中注销卷组。
在机器2上:
| #vgimport oracle /dev/hda1 |
在机器2上注册卷组oracle
激活卷组oracle,这样硬盘就从一台机器移动到另一台机器了。
注意:如果在你的发行版中运行vgimport命令没有在/etc/lvm/backup目录下创建LV信息备份文件,需要手动运行vgcfgbackup命令来备份。
整个流程如下图所示:
◆转移到LV
这里转移的意思是从现有的普通分区模式转移到用LV管理分区的模式,如我在安装系统时/home文件系统的大小我设为1G,现在发现空间快被填满了,打算增加/home大小,按照以前的管理模式,实现起来非常麻烦,而且数据丢失风险较大,下面我就其转移为以LV管理模式进行举例说明。
首先要清楚一点,这个转移不是类似从ext2转换到ext3的过程,它需要几个步骤:
1、增加一个新分区,假设是/dev/hda6,大小2G
2、将该分区转为物理卷,通过命令pvcreate实现
3、创建卷组home_dir,并将hda6加入该卷组
| #vgcreate home_dir /dev/hda6 |
4、创建逻辑卷home_dir
| #lvcreate -L2G -nhome_dir home_dir |
5、创建挂载点
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名称
10、卸载home_dir
11、重命名home_dir
12、挂载新的/home
| #mount /dev/home_dir/home_dir /home |
13、如果不出现故障,可以将/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的理解! |
linux | 评论:0
| Trackbacks:0
| 阅读:1502
Submitted by admin on 2010, December 8, 6:56 PM
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/
虚拟化 | 评论:0
| Trackbacks:0
| 阅读:2270
Submitted by admin on 2010, December 8, 6:38 PM
7.6.2 创建LVM卷
首先,用fdisk命令创建存储设备的物理分区,供创建逻辑分区之用。我们用的是一款32 MB的U盘,设备名为/dev/sdb:
- # fdisk /dev/sdb 启动管理磁盘分区的命令
- Command (m for help): p 显示当前分区(未分区)
-
- Disk /dev/sdb: 32 MB, 32112128 bytes
- 1 heads, 62 sectors/track, 1011 cylinders
- Units = cylinders of 62 * 512 = 31744 bytes
-
- Device Boot Start End Blocks Id System
-
- Command (m for help): n 创建新分区
- Command action
- e extended
- p primary partition (1-4)
- p 设置成主分区
- Partition number (1-4): 1 指定为分区1
- First cylinder (2-1011, default 2): Enter
- Using default value 2
- Last cylinder or +size or +sizeM or +sizeK (2-1011, default 1011): Enter
- Using default value 1011
-
- Command (m for help): t 指定分区类型
- Selected partition 1
- Hex code (type L to list codes): 8E 设成8E(LVM分区)
- Changed system type of partition 1 to 8e (Linux LVM)
- Command (m for help): p 键入p查看新建分区
- Disk /dev/sdb: 32 MB, 32112128 bytes
- 1 heads, 62 sectors/track, 1011 cylinders
- Units = cylinders of 62 * 512 = 31744 bytes
-
- Device Boot Start End Blocks Id System
- /dev/sdb1 2 1011 31310 8e Linux LVM
继续下一步操作之前,先确认对相应分区的修改正确无误。如果一切妥当,则写入新分区表,如下所示:
- Command (m for help): w
- The partition table has been altered!
- Calling ioctl() to re-read partition table.
- Syncing disks.
- #
回到shell提示符,使用sfdisk命令查看U盘分区情况:
- # sfdisk -l /dev/sdb 查看LVM分区
-
- Disk /dev/sdb: 1011 cylinders, 1 heads, 62 sectors/track
- Units = cylinders of 31744 bytes, blocks of 1024 bytes, counting from 0
-
- Device Boot Start End #cyls #blocks Id System
- /dev/sdb1 1 1010 1010 31310 8e Linux LVM
- /dev/sdb2 0 - 0 0 0 Empty
- /dev/sdb3 0 - 0 0 0 Empty
- /dev/sdb4 0 - 0 0 0 Empty
下一步,将/dev/sdb1制作成新的LVM物理卷,并使用pvs命令查看物理LVM卷相关信息:
- # pvcreate /dev/sdb1 将sdb1制作成LVM物理卷
- Physical volume "/dev/sdb1" successfully created
- # pvs 查看物理LVM分区
- PV VG Fmt Attr PSize PFree
- /dev/sdb1 vgusb lvm2 a- 28.00M 20.00M
-
- 下面使用vgcreate创建vgusb卷组,并列出当前活跃的卷组:
-
- $ vgcreate vgusb /dev/sdb1 创建vgusb卷组
- Volume group "vgusb" successfully created
- $ vgs 查看当前卷组
- VG #PV #LV #SN Attr VSize VFree
- vgusb 1 0 0 wz--n- 28.00M 28.00M
使用lvcreate在vgusb卷组里新建一个10M大小的LVM分区。然后,用lvs查看逻辑卷,用vgs查看空闲空间的大小变化:
- $ lvcreate --size 10M --name lvm_u1 vgusb
- Rounding up size to full physical extent 12.00 MB
- Logical volume "lvm_u1" created
- $ lvs 查看逻辑卷信息
- LV VG Attr LSize Origin Snap% Move Log Copy%
- lvm_u1 vgusb -wi-a- 12.00M
- $ vgs 发现卷组仍有16M空闲空间
- VG #PV #LV #SN Attr VSize VFree
- vgusb 1 1 0 wz--n- 28.00M 16.00M
使用mkfs.ext3命令在lvm分区上创建ext3文件系统,示例如下:
- $ mkfs.ext3 /dev/mapper/vgusb-lvm_u1
- mke2fs 1.38 (30-Jun-2005)
- Filesystem label=
- OS type: Linux
- Block size=1024 (log=0)
- Fragment size=1024 (log=0)
- 3072 inodes, 12288 blocks
- 614 blocks (5.00%) reserved for the super user
- First data block=1
- Maximum filesystem blocks=12582912
- 2 block groups
- 8192 blocks per group, 8192 fragments per group
- 1536 inodes per group
- Superblock backups stored on blocks:
- 8193
-
- Writing inode tables: done
- Creating journal (1024 blocks): done
- Writing superblocks and filesystem accounting information: done
-
- This filesystem will be automatically checked every 35 mounts or
- 180 days, whichever comes first. Use tune2fs -c or -i to override.
至此,ext3文件系统创建完毕,该LVM卷已准备就绪。
linux | 评论:0
| Trackbacks:0
| 阅读:1261