有时候
真的感觉
我与外界
只有一条2兆带宽的线连着
上班的时间
我是属于工作的
属于公司的
我要把身与心都交给工作
下班的时间
很多时间
我依然是属于工作的
属于公司的
只有在我属于我自己的时候
我才可以用这根2M带宽的线
去联系外界的朋友、亲人
然而
这根2M带宽的线另一端
却并不是时时都在线
所以在我属于我自己的时候
有可能只能用这根线
来连接我和自己
这就是网络中的环路
。。。。。。......
显示全文...
[2009年5月24日 星期日]
2M带宽
标签: 生活·思考, 生活·琐碎 0 评论
喜欢下雨天
标签: 生活·思考 0 评论
喜欢下雨天
喜欢在有雨日子
静静的坐的窗前
听着雨声 发呆
这是一场自然在演奏的交响乐
能让我的心 回归自然
一切都那么的静 只有雨滴声
一声一声,荡进我的心
思绪随着轻轻的雨声
轻轻的震荡 震荡
让思绪海洋中的尘埃
慢慢的沉落到海底的最深处
然后,海洋依旧很清,很清
海底的最深处
那是阳光照不到的地方
也是别人看不到的地方
就让那些尘埃
永远的沉到那里吧
然后 去告诉别人
也告诉自己
世界上没有那个地方
也没有那些尘埃......
显示全文...
[2009年5月4日 星期一]
青年节
0 评论
今天加班比较短,8点多回到家,把疲惫身体直接扔在沙发上,呆呆的看着电视,看到湖南卫视的<2009成人礼>,现场2009名18岁花季雨季的少男少女,满怀豪情的讲述着他们的理想,热情洋溢的朗读着他们的诗歌,踩着滑轮玩着酷酷的动作,跟着他们青春的节奏跳着属于他们的街舞......
突然感觉自己老了,很老了,那种青春的激情,不知道从什么时候起,已经在我的生活再也找不到影子了,
18岁的理想,早已经离我远去了,剩下的,只有整天低头的忙碌,为了最基本的生活而忙碌,没时间或者根本不愿意或者没有颜面暂停下来,看看自己现在走的路,偶尔回想起自己的当初立下的誓言,也只能拿一点微不足道的成绩来欺骗一下那颗空虚的心
18岁时,我刚上高三,那个时候,高三就是我心里的“高山”,而且给自己下死命令,必须成功的翻过去
18岁的时候,我也写过诗,写给我初中暗恋了两年一个女生,上半部分已经记不清楚了,只记得写的是心理对她的牵挂,下半部分还记得:
风凛凛,雨丝稠
望前途,心中忧
禁闭深院,只为登高楼
岁月匆匆,太匆匆,8年过去了,当初我暗恋的女生,早已嫁做人妇,而我,也忘记了我写给她的诗的牵挂她的那部分
8年以后,回首往事,发现很多应该做的事,或者应该做的更好的事,都没有做,于是就想,要是当初我那样做了,现在的我应该是另外一个样子,但是可惜的是我没有那样做,也不可以再回去做一次了,也发发感叹,在心里后悔了
或许再过8年,回首现在的生活,我还会有这样的感觉,但是不一样的是,现在的事我可以自己把握,为了让8年以后我,少一点后悔,现在就多做一点,做好一点吧
加强英语的计划应该实施了,就在明天
职业技术学习计划要加快进度了,现在的效率太低了
每天晚上5000米,不能断断续续了
加强自身文化修养,刚开始实施,一定要坚持下去
借用海子的诗,祝福关心我的朋友、亲人和我自己
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面前大海,春暖花开
从明天起,和每一个亲人通信
告诉他们我的幸福
那幸福的闪电告诉我的
我将告诉每一个人
给每一条河每一座山取一个温暖的名字
陌生人,我也为你祝福
愿你有一个灿烂的前程
愿你有怀人终成眷属
愿你在尘世获得幸福
我只愿面朝大海,春暖花开
显示全文...
[2009年5月1日 星期五]
[2009年4月25日 星期六]
晨.雨
1 评论
南方的四月,已经开始阴雨连绵,很湿很重,
让人很压抑,不如北方四月的雨,让人感觉很浪漫。
树欲静而风去不止,我想让自己去接受新的开始,所以要慢慢忘记那些已经远去的往事
但是最近常牵扯到感情,又使不得不时常想起
这个星期五没加班,一个人在家里玩电脑,在虚拟的网络上,
跟别人玩着那些我并不喜欢的游戏,真到深夜,
谁知道清晨又那么早到来。。。
南国四月天,梅青雨绵绵。
夜寐三更后,晨醒五更前。
雨声入耳内,昔日浮心间。
常忆淮月楼,悠悠淮河岸。
春雨润芳日,与卿偶凭栏。
共眺一江春,执手话缠绵。
往事如云烟,回首情不堪。
此情何所寄,永存我心间。
。。。。。。......
显示全文...
[2009年4月24日 星期五]
LVM配置文件备份脚本
标签: 应用服务, 类UNIX系统 0 评论
......
#!/bin/bash
#name: lvm_backup.sh
#author: sunrocs
#
WORKDIR=/root/lvmbackup
TODAY=`date +%Y%m%d`
SYSADMIN=root
if [ ! -d "$WORKDIR" ]
then
echo "missing directory $WORKDIR" exit 1
fi
cd $WORKDIR
if [ -d "$WORKDIR/$TODAY" ]
then
rm -rf "$WORKDIR/$TODAY"
fi
mkdir $TODAY
cd $TODAY
/usr/sbin/vgdisplay >vgdisplay_${TODAY}.bak
/usr/sbin/pvdisplay >pvdisplay_${TODAY}.bak
/usr/sbin/lvdisplay >lvdisplay_${TODAY}.bak
cp /etc/fstab fstab_${TODAY}.bak
/usr/sbin/vgcfgbackup
tar -cvf lvmconf_${TODAY}.tar.gz /etc/lvm
显示全文...
[2009年4月23日 星期四]
买了一些书
标签: 生活·思考 0 评论
好久没来写博客了,最近好忙,新上一个EMC磁盘阵列,搞数据迁移搞得头都大了。
从网上买了一些书:<狼从之恋>、<海子的诗>、<火与冰>、<一个人的生活>。陶冶一下情操吧,以前看过很多书,不过都是计算机、信息、励志的书,都太功利了,得找些文学书,来中和一下。
深圳这个城市,很年轻,很浮躁,很快,很现实。在这样的环境中,受着那些功利书的感染,再一个人背负着往事伤痛、眼前的压力,渐渐的就迷失了自己,有时候回忆起以前,感觉现在的自己就像是另外一个人。。。。。。
所以看一些文学书,中和一下性情,不能一直这么迷失自己的,会走火入魔的。......
显示全文...
[2009年4月7日 星期二]
睡不着
标签: 生活·思考, 生活·琐碎 2 评论
清明节去江门的天露山和水源山去爬山,偶大雨,被迫下撤,FB了三天,今天本来很累,很想早点睡觉,但是现在怎么样也睡不着,刚才一个朋友说我去爬山这几天看着心事很重,我感觉其实和平时相比,没什么不一样的感觉,第一天为了一个蚂蝗,让我心理折腾了一天,第二天因为在宾馆的床上捉到一个应该是虱子的东东,又让我折腾了很久,同行一个朋友说我心理负担太重了,
他说的很对,我心理负担真的很重,我自己已经能明显的感觉到了,来深圳这三年的时间,感觉自己像是换了一个人,
心里很烦躁,睡不着,很想找个人说说,但是把手机翻两遍,发觉没有一个合适的人能让我放心的说出自己的心里话,
或许,我的心理负担太重了。。。......
显示全文...
[2009年3月26日 星期四]
转载__linux AS4下LVM的使用手册
标签: LINUX学习, 技术收藏, 类UNIX系统 0 评论
1:创建PV(物理分区)
假设我的磁盘有一部分没有划分的分区:
fdisk /dev/sda
查看现在的分区
Command (m for help): p
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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 143 1044225 82 Linux swap
/dev/sda3 144 2055 15358140 83 Linux
创建一个新分区:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e(选择创建扩展分区)
Selected partition 4
First cylinder (2056-2610, default 2056):
Using default value 2056
Last cylinder or +size or +sizeM or +sizeK (2056-2610, default 2610):
Using default value 2610
前面的分区还没有用完磁盘,继续创建另一个分区:
Command (m for help): n
First cylinder (2056-2610, default 2056):
Using default value 2056
Last cylinder or +size or +sizeM or +sizeK (2056-2610, default 2610): 2300
Command (m for help): n
First cylinder (2301-2610, default 2301):
Using default value 2301
Last cylinder or +size or +sizeM or +sizeK (2301-2610, default 2610):
Using default value 2610
查看已经划分好的分区:
Command (m for help): p
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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 143 1044225 82 Linux swap
/dev/sda3 144 2055 15358140 83 Linux
/dev/sda4 2056 2610 4458037+ 5 Extended
/dev/sda5 2056 2300 1967931 83 Linux
/dev/sda6 2301 2610 2490043+ 83 Linux
w(存盘,退出)
从上面看,sda5和sda6是新创建的分区,ID号为8e(也就是 linux LVM)
现在将新创建的分区修改他们的系统ID
[root@oracle ~]# fdisk /dev/sda
The number of cylinders for this disk is set to 2610.
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): t
Partition number (1-6): 5
Hex code (type L to list codes): L
0 Empty 1e Hidden W95 FAT1 75 PC/IX be Solaris boot
1 FAT12 24 NEC DOS 80 Old Minix bf Solaris
2 XENIX root 39 Plan 9 81 Minix / old Lin c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 82 Linux swap c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 83 Linux c6 DRDOS/sec (FAT-
5 Extended 41 PPC PReP Boot 84 OS/2 hidden C: c7 Syrinx
6 FAT16 42 SFS 85 Linux extended da Non-FS data
7 HPFS/NTFS 4d QNX4.x 86 NTFS volume set db CP/M / CTOS / .
8 AIX 4e QNX4.x 2nd part 87 NTFS volume set de Dell Utility
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c Hidden W95 FAT3
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): 8e
Changed system type of partition 6 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
使分区信息生效:
[root@oracle ~]# partprobe
[root@oracle ~]# reboot
创建PV(物理卷)
[root@oracle ~]# pvcreate /dev/sda5 /dev/sda6
Physical volume "/dev/sda5" successfully created
Physical volume "/dev/sda6" successfully created
创建物理卷组rootvg,并把/dev/sda5 /dev/sda6加入其中:
[root@oracle ~]# vgcreate rootvg /dev/sda5 /dev/sda6
Volume group "rootvg" successfully created
在物理卷组上创建一个100MB的逻辑卷lv1:
[root@oracle ~]# lvcreate -L 100M -n lv1 rootvg
Logical volume "lv1" created
格式化分区:
[root@oracle ~]# mkfs.ext3 /dev/rootvg/lv1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
将lv1挂载到/mnt/lvm下
[root@oracle ~]# mkdir /mnt/lvm
[root@oracle ~]# mount /dev/rootvg/lv1 /mnt/lvm/
[root@oracle ~]#
[root@oracle lvm]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 2.4G 12G 18% /
/dev/sda1 99M 8.6M 86M 10% /boot
none 125M 0 125M 0% /dev/shm
/dev/mapper/VolGroup00-LogVol02
9.1G 53M 8.6G 1% /home
/dev/mapper/VolGroup00-LogVol00
9.7G 55M 9.1G 1% /opt
/dev/mapper/VolGroup00-LogVol01
1008M 34M 924M 4% /tmp
/dev/mapper/rootvg-lv1
97M 5.6M 87M 7% /mnt/lvm
动态增加逻辑卷的大小:
[root@oracle lvm]# lvextend -L+200M /dev/rootvg/lv1
Extending logical volume lv1 to 300.00 MB
Logical volume lv1 successfully resized
[root@oracle lvm]# ext2online /dev/rootvg/lv1
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b
[root@oracle lvm]# cd /mnt/lvm/
[root@oracle lvm]# ls
lost+found
[root@oracle lvm]# mkdir aa
[root@oracle lvm]# ls
aa lost+found
[root@oracle lvm]#
减少逻辑卷的大小:
[root@oracle lvm]# umount /mnt/lvm/
[root@oracle /]# umount /mnt/lvm/
[root@oracle /]# cd /mnt/lvm/
[root@oracle lvm]# ls
[root@oracle lvm]# mke2fs -n /dev/rootvg/lv1
mke2fs 1.35 (28-Feb-2004)
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
Block size=1024(bytes)
307200 blocks
lv1分区大小=1024×307200/1024/1024=300(MB)
307200个blocks组成了300M,如果我们要减小50M,应该减少多少blocks?
307200 x
------ =-----
300 50
x=307200X50/300=51200
[root@oracle lvm]# mke2fs -f /dev/rootvg/lv1
mke2fs: bad fragment size - /dev/rootvg/lv1
[root@oracle lvm]# resize2fs -f /dev/rootvg/lv1
resize2fs 1.35 (28-Feb-2004)
The filesystem is already 307200 blocks long. Nothing to do!
调整lv分区大小,减小50M
[root@oracle lvm]# lvreduce -L-50M /dev/rootvg/lv1
Rounding up size to full physical extent 48.00 MB
WARNING: Reducing active logical volume to 252.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv1? [y/n]: y
Reducing logical volume lv1 to 252.00 MB
Logical volume lv1 successfully resized
重新挂载:
[root@oracle lvm]# mount /dev/rootvg/lv1 /mnt/lvm/
删除
[root@oracle lvm]# umount /mnt/lvm/
aa lost+found/
动态加大VG:
这里我们新增一个PV并加入VG
1 fdisk增加一个(0x)8e标志的分区/dev/hda7
2 vgextend rootvg /dev/hda7
好了,vg增大了
缩小逻辑卷组VG:
1 搬移PV中的资料(只限于同一VG中)
#pvmove [-n ] []
如
#pvmove /dev/hda5 /dev/hda6
将VG中pv hda5的内容搬移到hda6中
pvmove /dev/hda5(也可以这样,lvm决定hda2的内容被复制到哪里)
2 vgreduce rootvg /dev/hda5
把vg hda5移除
5) 如何删除逻辑卷/逻辑卷组
删除VG流程:
1 umount /挂接点
2 lvremove /dev/rootvg/lv1
移除逻辑卷,这里是lv1
3 vgchange -a n rootvg(关闭rootvg)
4 vgremove rootvg
移除rootvg
删除分区:
fdis /dev/sda
Command (m for help): p
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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 143 1044225 82 Linux swap
/dev/sda3 144 2055 15358140 83 Linux
/dev/sda4 2056 2610 4458037+ 5 Extended
/dev/sda5 2056 2300 1967931 8e Linux LVM
/dev/sda6 2301 2610 2490043+ 8e Linux LVM
Command (m for help): d
Partition number (1-6): 4
Command (m for help): p
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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 143 1044225 82 Linux swap
/dev/sda3 144 2055 15358140 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@oracle lvm]# partprobe
[root@oracle lvm]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 15G 2.4G 12G 18% /
/dev/sda1 99M 8.6M 86M 10% /boot
none 125M 0 125M 0% /dev/shm
/dev/mapper/VolGroup00-LogVol02
9.1G 53M 8.6G 1% /home
/dev/mapper/VolGroup00-LogVol00
9.7G 55M 9.1G 1% /opt
/dev/mapper/VolGroup00-LogVol01
1008M 34M 924M 4% /tmp
6) lvm相关命令
这个表格,你可以在RHCE_Study_Guide.pdf上找到
Physical Volume Volume Group Logical Volume
-------------------------------------------------------------------------
scan pvscan vgscan lvscan
create pvcreate vgcreate lvcreate
display pvdispaly vgdisplay lvdisplay
remove pvremove vgremove lvremove
-------------------------------------------------------------------------
......
显示全文...
转载__LVM使用手册
标签: LINUX学习, 技术收藏, 类UNIX系统 0 评论
原文地址:http://blog.donews.com/letviva/archive/2006/06/02/899745.aspx
1 简介
1.1 什么是LVM?
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。
与 传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需 要随时改变大小与移除(可能需对文件系统工具进行升级)。LVM也允许按用户组对存储卷进行管理,允许管理员用更直观的名称 (如"sales'、 'development')代替物理磁盘名(如'sda'、'sdb')来标识存储卷。
1.2 为什么使用LVM?
LVM通常用于装备大量磁盘的系统,但它同样适于仅有一、两块硬盘的小系统。
1.2.1 小系统使用LVM的益处
传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变:
1.不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用;
2.当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中;或采用符号连接的方式使用其它分区的空间。
3.如果要把硬盘上的多个分区合并在一起使用,只能采用再分区的方式,这个过程需要数据的备份与恢复。
当采用LVM时,情况有所不同:
1.硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;
2.文件系统建立在逻辑卷上,而逻辑卷可根据需要改变大小(在卷组容量范围内)以满足要求;
3.文件系统建立在LVM上,可以跨分区,方便使用;
1.2.2 大系统使用LVM的益处
在使用很多硬盘的大系统中,使用LVM主要是方便管理、增加了系统的扩展性。
在一个有很多不同容量硬盘的大型系统中,对不同的用户的空间分配是一个技巧性的工作,要在用户需求与实际可用空间中寻求平衡。
用 户/用户组的空间建立在LVM上,可以随时按要求增大,或根据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁 移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。同样,使用LVM可以在不停服务的情况下。把用户数据从旧硬盘转移到新硬盘空间中去。
2 LVM构成
LVM的结构简图如下:
hda1 hdc1 sdc (PV:s 物理卷,一般为分区或整个硬盘)
\ | /
\ | /
diskvg (VG 卷组由物理卷组成)
/ | \
/ | \
usrlv rootlv varlv (LV:s 逻辑卷在卷组上创建)
| | |
ext2 reiserfs xfs (建立在逻辑卷上的文件系统)
2.1 卷组volume group (VG)
卷组是LVM中最高抽象层,是由一个或多个物理卷所组成的存储器池。
2.2 物理卷physical volume (PV)
典型的物理卷是硬盘分区,但也可以是整个硬盘或已创建的Software RAID 卷。
2.3 逻辑卷logical volume (LV)
逻辑卷相当于非LVM系统中的分区,它在卷组上建立,是一个标准的块设备,可以在其上建立文件系统。
2.4 物理块physical extent (PE)
物理卷按大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。
2.5 逻辑块logical extent (LE)
逻辑卷按“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。
2.6 总述
例 子:有一个卷组VG1,它的物理块大小为4MB。在这个卷组中为2个硬盘分区:/dev/hda1与/dev/hdb1,它们分别成为物理卷PV1与 PV2。物理卷将按4MB为单位分块,如PV1与PV2分别可分为99与248块。在VG1上建立逻辑卷,它的大小可在1至347(99+248)块之 间。当建立逻辑卷时,会建立逻辑块与物理块的一一映射关系。
2.7 映射模式 (linear/striped)
在建立逻辑卷时,可以选择逻辑块与物理块映射的策略:
1.线性映射-将把一定范围的物理块按顺序分配给逻辑卷,如 LV的LE 1 – 99映射到PV1,LE 100 – 347映射到PV2。
2.交错模式-将把逻辑块交错映射到不同的物理卷中,如 LV的LE 1映射为PV1的PE1,LE 2映射为PV2的PE1,LE 3映射为PV1的PE2...。这种方式可以提高逻辑卷的性能,但是采用这种方式建立的逻辑卷将不能在它们所在的物理卷中扩展。
2.8 Snapshots (快照)
LVM 提供了一个非常好的特性:snapshots。它允许管理员建立一个块设备:该设备是一逻辑卷在某一时刻冻结的精确拷贝。这个特性通常用于批处理过程(如 备份)需要处理逻辑卷,但又不能停止系统。当操作完成时,snapshot设备可以被移除。这个特性要求在建立snapshot设备时逻辑卷处于相容状 态。
3 LVM的一般操作
3.1 建立PV
为把一个磁盘或分区作为PV,首先应使用 pvcreate 对其初始化,如对IDE硬盘/dev/hdb,
"使用整个磁盘,
# pvcreate /dev/hdb
这将在磁盘上建立VG的描述符。
"使用磁盘分区,如/dev/hdb1。
使用fdisk 的t 命令把/dev/hda1的分区类型设为0x8e,然后运行:
# pvcreate /dev/hdb1
这将在分区/dev/hda1上建立VG的描述符。
PV初始化命令pvcreate的一般用法为:
pvcreate PV1 [ PV2 ... ]
它的参数可以是整个磁盘、分区,也可以是一loop设备。
3.2 建立VG
在使用pvcreate 建立了PV后,可以用vgcreate 建立卷组,如有PV1、PV2分别是/dev/hda1与/dev/hdb1,使用
# vgcreate testvg /dev/hda1 /dev/hdb1
将建立一个名为testvg的卷组,它由两个PV:/dev/hda1与/dev/hdb1组成。vgcreate的一般用法为:
# vgcreate [options] VG_name PV1 [PV2 ...]
其中的可选项包括设置VG最大支持的LV数、PE大小(缺省为4MB)等。
注意:当使用devfs系统时,应使用设备的全名而不能是Symbol Link,如对上例应为:
# vgcreate testvg /dev/ide/host0/bus0/target0/lun0/part1\
/dev/ide/host0/bus0/target1/lun0/part1
3.3 激活VG
在被激活之前,VG与LV是无法访问的,这时可用命令:
# vgchange -a y testvg
激活所要使用的卷组。当不再使用VG时,可用
# vgchange -a n testvg
使之不再可用。
vgchange可用来设置VG的一些参数,如是否可用( -a [y|n]选项)、支持最大逻辑卷数等。
3.4 移除VG
在移除一卷组前应确认卷组中不再有逻辑卷,首先休眠卷组:
# vgchange -a n testvg
然后可用vgremove移除该卷组:
# vgremove testvg
3.5 为VG增加新PV
当卷组空间不足时,可以加入新的物理卷来扩大容量,这时可用命令vgextend,如
# vgextend testvg /dev/hdc1
其中/dev/hdc1是新的PV,当然在这之前,它应使用pvcreate初始化。
3.6 从VG移除PV
在移除PV之前,应确认该PV没用被LV使用,这可用命令pvdisplay查看,如:
# pvdisplay /dev/hda1
--- Physical volume ---
PV Name /dev/hda1
VG Name testvg
PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 499
Free PE 0
Allocated PE 499
PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
如这个PV仍在被使用,则应把数据传移到其它PV上。在确认它未被使用后,可用命令vgreduce把它从VG中删除,如:
# vgreduce testvg /dev/hda1
3.7 创建LV
在创建逻辑卷前,应决定LV使用哪些PV,这可用命令vgdisplay与pvdisplay查看当前卷组与PV的使用情况。在已有的卷组上创建逻辑卷使用命令lvcreate,如:
# lvcreate -L1500 -ntestlv testvg
将在卷组testvg上建立一个1500MB的线性LV,其命名为testlv,对应的块设备为/dev/testvg/testlv。
# lvcreate -i2 -I4 -l100 -nanothertestlv testvg
将在卷组testvg上建立名为anothertestlv的LV,其大小为100LE,采用交错方式存放,交错值为2,块大小为4KB。
如果需要LV使用整个VG,可首先用vgdisplay 查找 Total PE 值,然后在运行lvcreate时指定,如:
# vgdisplay testvg | grep "Total PE"
Total PE 10230
# lvcreate -l 10230 testvg -n mylv
将使用卷组testvg的全部空间创建逻辑卷mylv。
在创建逻辑卷后,就可在其上创建文件系统并使用它。
命令lvcreate的常用方法:
lvcreate [options] -n 逻辑卷名 卷组名 [PV1 ... ]
其中的常用可选项有:
"-i Stripes :采用交错(striped)方式创建LV,其中Stripes指卷组中PV的数量。
"-I Stripe_size :采用交错方式时采用的块大小(单位为KB),Stripe_size必须为2的指数:2N ,N=2,3...9。
"-l LEs :指定LV的逻辑块数。
"-L size :指定LV的大小,其后可以用K、M、G表示KB、MB、GB。
"-s :创建一已存在LV的snapshot卷。
"-n name :为LV指定名称。
3.8 删除LV
为删除一个逻辑卷,必须首先从系统卸载其上的文件系统,然后可用lvremove删除,如:
# umount /dev/testvg/testlv
# lvremove /dev/testvg/testlv
lvremove -- do you really want to remove "/dev/testvg/testlv"? [y/n]: y
lvremove -- doing automatic backup of volume group "testvg"
lvremove -- logical volume "/dev/testvg/testlv" successfully removed
3.9 扩展LV
为逻辑卷增加容量可用使用lvextend,即可以指定要增加的尺寸也可以指定扩容后的尺寸,如
# lvextend -L12G /dev/testvg/testlv
lvextend -- extending logical volume "/dev/testvg/testlv" to 12 GB
lvextend -- doing automatic backup of volume group "testvg"
lvextend -- logical volume "/dev/testvg/testlv" successfully extended
将扩大逻辑卷testlv的容量为12GB。
# lvextend -L+1G /dev/testvg/testlv
lvextend -- extending logical volume "/dev/testvg/testlv" to 13 GB
lvextend -- doing automatic backup of volume group "testvg"
lvextend -- logical volume "/dev/testvg/testlv" successfully extended
将为LV testlv再增大容量1GB至13GB。
为LV扩容的一个前提是:LV所在的VG有足够的空闲存储空间可用。
在为LV扩容之后,应同时为LV之上的文件系统扩容,使二者相匹配。对不同的文件系统有相对应的扩容方法。
3.9.1 ext2/ext3
除非内核已有ext2online 补丁,否则在改变ext2/ext3文件系统的大小时应卸载它:
# umount /dev/testvg/testlv
# resize2fs /dev/testvg/testlv
# mount /dev/testvg/testlv /home
这里假设testlv安装点为/home。在es2fsprogs-1.19或以上版本中包含resize2fs命令。
在LVM发行包中有一个称为e2fsadm的工具,它同时包含了lvextend与resize2fs的功能,如:
# e2fsadm -L+1G /dev/testvg/testlv
等价于下面两条命令:
# lvextend -L+1G /dev/testvg/testlv
# resize2fs /dev/testvg/testlv
但用户仍需首先卸载文件系统。
3.9.2 reiserfs
与ext2不同,Reiserfs不必卸载文件系统,如:
# resize_reiserfs -f /dev/testvg/testvl
3.9.3 xfs
SGI XFS文件系统必须在安装的情况下才可改变大小,并且要使用安装点而不是块设备,如:
# xfs_growfs /home
3.10 缩小LV
逻辑卷可扩展同样也可缩小,但应在缩小LV之前首先减小文件系统,否则将可能导致数据丢失。
3.10.1 ext2/ext3
可以使用LVM的工具e2fsadm操作,如:
# umount /home
# e2fsadm -L-1G /dev/testvg/testvl
# mount /home
如果采用resize2fs,就必须知道缩少后卷的块数:
# umount /home
# resize2fs /dev/testvg/testvl 524288
# lvreduce -L-1G /dev/testvg/testvl
# mount /home
3.10.2 reiserfs
在缩小reiserfs时,应首先卸载它,如:
# umount /home
# resize_reiserfs -s-1G /dev/testvg/testvl
# lvreduce -L-1G /dev/testvg/testvl
# mount -treiserfs /dev/testvg/testvl /home
3.10.3 xfs
无法实现。
3.11 在PV间转移数据
若要把一个PV从VG中移除,应首先把其上所有活动PE中的数据转移到其它PV上,而新的PV必须是本VG的一部分,有足够的空间。如要把PV1:/dev/hda1上的数据移到PV2:/dev/sda1上可用命令:
# pvmove /dev/hdb1 /dev/sdg1
如果在该PV之上的LV采用交错方式存放,则这个转移过程不能被打断。
建议在转移数据之前备份LV中的数据。
3.12 系统启动/关闭
"为使系统启动时可自动激活并使用LVM,可将以下几行添加到启动 rc 脚本中:
/sbin/vgscan
/sbin/vgchange -a y
这些行将浏览所有可用的卷组并激活它们。要注意的是,它们应在安装卷组上的文件系统操作之前被执行,否则将无法正常安装文件系统。
"在系统关机时,要关闭LVM,这可将以下这行添加到关机 rc 脚本中,并确保它在卸装了所有文件系统后执行:
/sbin/vgchange -a n
4 磁盘分区问题
4.1 一个磁盘上的多个分区
LVM允许PV建立在几乎所有块设备上,如整个硬盘、硬盘分区、Soft RAID:
# pvcreate /dev/sda1
# pvcreate /dev/sdf
# pvcreate /dev/hda8
# pvcreate /dev/hda6
# pvcreate /dev/md1
所以在一块硬盘上可以有多个PV/分区,但一般建议一块硬盘上只有一个PV:
"便于管理,易于处理错误
"避免交错方式中性能下降。LVM不能辨别两个PV是否在同一硬盘上,故当采用交错方式时,会导致性能更差。
但在某些情况下可采用:
"把已存在的系统合并到LVM中。在一个只有少数硬盘的系统中,转换为LVM时需在在各分区之间转移数据。
"把一个大硬盘分给不同的VG使用。
当一个VG的有不同的PV在同一硬盘时,创建交错方式的LV时应注意使用哪一个PV。
4.2 Sun disk labels
仅在SUN的SPARC系统中有此问题。
5 建立LVM用例
在本节中,将在3块SCSI硬盘:/dev/sda,/dev/sdb,/dev/sdc上按步建立LVM。
5.1 准备分区
首先要做的是初始化硬盘,建立PV,这将会删除硬盘上的原有数据。在此,用整个硬盘为PV:
# pvcreate /dev/sda
# pvcreate /dev/sdb
# pvcreate /dev/sdc
pvcreate在每个硬盘的起始端建立卷组描述区( volume group descriptor area, VGDA)。
5.2 创建卷组
利用上面三个PV建立卷组:
# vgcreate test_vg /dev/sda /dev/sdb /dev/sdc/
然后可用vgdisplay 查看/验证卷组的信息:
# vgdisplay
--- Volume Group ---
VG Name test_vg
VG Access read/write
VG Status available/resizable
VG # 1
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 3
Act PV 3
VG Size 1.45 GB
PE Size 4 MB
Total PE 372
Alloc PE / Size 0 / 0
Free PE / Size 372/ 1.45 GB
VG UUID nP2PY5-5TOS-hLx0-FDu0-2a6N-f37x-0BME0Y
其中最重要的前三条要正确,且VS size是以上三个硬盘容量之和。
5.3 建立LV
在确定卷组test_vg正确后,就可在其上创建LV。LV的大小可在VG大小范围内任意选择,如同在硬盘上分区。
5.3.1 建立线性方式LV
在test_vg上建立一个大小为1GB的线性方式LV:
# lvcreate -L1G -ntest_lv test_vg
lvcreate -- doing automatic backup of "test_vg"
lvcreate -- logical volume "/dev/test_vg/test_lv" successfully created
5.3.2 建立交错方式LV
在test_vg上建立一个大小为1GB的交错方式LV,交错参数为4KB:
# lvcreate -i3 -I4 -L1G -ntest_lv test_vg
lvcreate -- rounding 1048576 KB to stripe boundary size 1056768 KB / 258 PE
lvcreate -- doing automatic backup of "test_vg"
lvcreate -- logical volume "/dev/test_vg/test_lv" successfully created
注意:如果使用 -i2参数,则LV将仅使用test_vg中的两块硬盘。
5.4 建立文件系统
在LV test_lv创建后,就可在其上建立文件系统,
如,ext2/ext3系统:
# mke2fs /dev/test_vg/test_lv
如,reiserfs:
# mkreiserfs /dev/test_vg/test_lv
5.5 测试文件系统
安装LV:
# mount /dev/test_vg/test_lv /mnt
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 1311552 628824 616104 51% /
/dev/test_vg/test_lv 1040132 20 987276 0% /mnt
则可以通过/mnt访问LV。
6 使用snapshot 做备份
例 如我们要对卷组"test_vg"每晚进行数据库备份,就要采用snapshot类型的卷组。这种卷组是其它卷组的一个只读拷贝,它含有在创建 snapshot卷组时原卷组的所有数据,这意味你可以备份这个卷组而不用担心在备份过程中数据会改变,也不需要暂时关闭数据库卷以备份。
6.1 建立snapshot卷
一个snapshot卷可大可小,但必须有足够的空间存放所有在本snapshot卷生存期间改变的数据,一般最大要求是原卷组的1.1倍。如空间不够,snapshot卷将不能使用。
# lvcreate -L592M -s -n dbbackup /dev/test_vg/databases
lvcreate -- WARNING: the snapshot must be disabled if it gets full
lvcreate -- INFO: using default snapshot chunk size of 64 KB for "/dev/test_vg/dbbackup"
lvcreate -- doing automatic backup of "test_vg"
lvcreate -- logical volume "/dev/test_vg/dbbackup" successfully created
6.2 安装snapshot卷
现在可以安装该卷:
# mkdir /mnt/test_vg/dbbackup
# mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackup
mount: block device /dev/test_vg/dbbackup is write-protected, mounting read-only
从上面可以看出,snapshot卷是只读的。
当使用XFS文件系统时,mount命令要使用nouuid与norecovery选项:
# mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackup -o nouuid,norecovery,ro
6.3 备份数据
如采用tar向磁带备份:
# tar -cf /dev/rmt0 /mnt/test_vg/dbbackup
6.4 删除snapshot 卷
在完成备份后,就可卸载并删除snapshot卷。
# umount /mnt/test_vg/dbbackup
# lvremove /dev/test_vg/dbbackup
lvremove -- do you really want to remove "/dev/test_vg/dbbackup"? [y/n]: y
lvremove -- doing automatic backup of volume group "test_vg"
lvremove -- logical volume "/dev/test_vg/dbbackup" successfully removed
7 更换卷组硬盘
由于某种原因,需要用新的硬盘替代卷组中的旧硬盘,如用一SCSI硬盘替换IDE硬盘,其步骤为:
7.1 准备/初始化新硬盘
首先用pvcreate命令初始化新的硬盘,如使用整个硬盘:
# pvcreate /dev/sdf
pvcreate -- physical volume "/dev/sdf" successfully created
7.2 加入卷组
把新硬盘加入卷组:
# vgextend test_vg /dev/sdf
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "test_vg"
vgextend -- volume group "test_vg" successfully extended
7.3 数据搬家
在移除旧硬盘前,要把其上的数据转移到新硬盘上。在转移数据时,不要求卸载文件系统,但建议在数据转移前进行备份,以防转移进程中意外导致数据丢失。
pvmove用来实现数据转移,根据数据量的多少,它可能要使用大量的时间,并可降低逻辑卷的性能,因此要在系统不太忙时操作。
# pvmove /dev/hdb /dev/sdf
pvmove -- moving physical extents in active volume group "test_vg"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved
7.4 移除未用硬盘
当数据被转移到其它硬盘后,就可以从卷组中删除这块不再使用的硬盘:
# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "test_vg"
vgreduce -- volume group "test_vg" successfully reduced by physical volume:
vgreduce -- /dev/hdb
从此,卷组test_vg不再使用IDE硬盘/dev/hdb,这块硬盘可以从机器中拆下或用作它途。
8 迁移卷组到其它系统
把一个卷组转移到其它系统是很容易的(如更换服务器),这要用命令vgexport与vgimport。
8.1 卸载文件系统
为整体搬迁卷组,应首先把它从文件系统中卸载,如:
# unmount /mnt/design/users
8.2 设置卷组为非活动状态
把卷组从内核中卸载,以避免任何对它可能的操作:
# vgchange -an test_vg
vgchange -- volume group "test_vg" successfully deactivated
8.3 Export 卷组
这个操作不是必须的,便它可以防止系统对卷组的访问:
# vgexport test_vg
vgexport -- volume group "test_vg" sucessfully exported
当机器关机后,构成卷组的硬盘就可被转移到新的服务器上。
8.4 Import 卷组
在新的服务器上,可用pvscan查看卷组情况,如在这台计算机上,硬盘新的设备为/dev/sdb,使用pvscan可有:
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1" is in EXPORTED VG "test_vg" [996 MB / 996 MB free]
pvscan -- inactive PV "/dev/sdb2" is in EXPORTED VG "test_vg" [996 MB / 244 MB free]
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
现可以import卷组test_vg (同时也激活它)以安装其上的文件系统
# vgimport test_vg /dev/sdb1 /dev/sdb2
vgimport -- doing automatic backup of volume group "test_vg"
vgimport -- volume group "test_vg" successfully imported and activated
8.5 安装文件系统
# mkdir -p /mnt/design/users
# mount /dev/test_vg/users /mnt/design/users
在完成以上操作后,原卷组在新的服务器上就可使用了。
9 分割卷组
这种情况是:需要在系统中加入新的卷组,但没有其它可用新硬盘,而已有的卷组中还有大量空间可用。如向系统加入一个"design"卷组。
9.1 检查可用空间
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE PV "/dev/sda" of VG "dev" [1.95 GB / 0 free]
pvscan -- ACTIVE PV "/dev/sdb" of VG "sales" [1.95 GB / 1.27 GB free]
pvscan -- ACTIVE PV "/dev/sdc" of VG "ops" [1.95 GB / 564 MB free]
pvscan -- ACTIVE PV "/dev/sdd" of VG "dev" [1.95 GB / 0 free]
pvscan -- ACTIVE PV "/dev/sde" of VG "ops" [1.95 GB / 1.9 GB free]
pvscan -- ACTIVE PV "/dev/sdf" of VG "dev" [1.95 GB / 1.33 GB free]
pvscan -- ACTIVE PV "/dev/sdg1" of VG "ops" [996 MB / 432 MB free]
pvscan -- ACTIVE PV "/dev/sdg2" of VG "dev" [996 MB / 632 MB free]
pvscan -- total: 8 [13.67 GB] / in use: 8 [13.67 GB] / in no VG: 0 [0]
我们决定把/dev/sdg1与/dev/sdg2分配组design,但首先要把其上的物理块移到其它卷的空闲空间中(如把卷组dev移到/dev/sdf,卷组ops移到/dev/sde)。
9.2 从选定硬盘移出数据
由于硬盘上的逻辑卷仍在使用,故首先要转移它们的数据。
把所有在使用的物理块从/dev/sdg1上转移到/dev/sde,及从/dev/sdg2转移到/dev/sdf。
# pvmove /dev/sdg1 /dev/sde
pvmove -- moving physical extents in active volume group "ops"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "ops"
pvmove -- 141 extents of physical volume "/dev/sdg1" successfully moved
# pvmove /dev/sdg2 /dev/sdf
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- doing automatic backup of volume group "dev"
pvmove -- 91 extents of physical volume "/dev/sdg2" successfully moved
9.3 创建新卷组
现在把/dev/sdg2从卷组dev从分割出并加入到新卷组design中。我们可用vgreduce与vgcreate完成工作,但vgsplit此时更方便:
# vgsplit dev design /dev/sdg2
vgsplit -- doing automatic backup of volume group "dev"
vgsplit -- doing automatic backup of volume group "design"
vgsplit -- volume group "dev" successfully split into "dev" and "design"
9.4 移除剩余的卷
接下来的工作 把/dev/sdg1从卷组ops中分出并加入卷组design:
# vgreduce ops /dev/sdg1
vgreduce -- doing automatic backup of volume group "ops"
vgreduce -- volume group "ops" successfully reduced by physical volume:
vgreduce -- /dev/sdg1
# vgextend design /dev/sdg1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "design"
vgextend -- volume group "design" successfully extended
9.5 建立新逻辑卷及文件系统
在卷组design上建立逻辑卷,为今后的方便,现只使用一部分空间:
# lvcreate -L750M -n users design
lvcreate -- rounding up size to physical extent boundary "752 MB"
lvcreate -- doing automatic backup of "design"
lvcreate -- logical volume "/dev/design/users" successfully created
# mke2fs /dev/design/users
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
96384 inodes, 192512 blocks
9625 blocks (5.00......
显示全文...