扩大硬盘的方法有二:
1 新增一个虚拟硬盘
2 扩大原有硬盘
第一: 新增硬盘并将其格式化为lvm格式
第二: 扩大硬盘并利用分区工具,将扩大的部分添加到原有的分区中,再将该分区转为lvm格式
第三: 创建lvm卷组,并最终将文件系统挂载上去。
**********************************************
vmware-vdiskmanager.exe
建立一个新的磁盘:
vmware-vdiskmanager.exe //看看选项,也能够增大原来的磁盘
vmware-vdiskmanager.exe -c -s 10Gb -a ide -t 0 Seconddisk.vmdk 在vmware-->setting-->选择硬盘-->add-->....便可将新增一个磁盘。若是没有以上这步,虚拟机下是识别不到用vdiskmanager建立的新的虚拟磁盘。这比较容易理解。
新增一个磁盘,比较简单。进入虚拟机后。/sbin/fdisk -l 会发现有一个磁盘没有挂载任何的文件系统。如/dev/hda
/sbin/fdisk /dev/hda来对这个磁盘进行分区,并选择lvm类型的文件系统。以下
# /sbin/fdisk /dev/hda
The number of cylinders for this disk is set to 22192.
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
Selected partition 1
Hex code (type L to list codes): 8e
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
将该盘设为lvm格式,是为了让几个lvm物理卷构成一个卷组,并最终都挂载到/目录下。由于个人/空间满了
这里又是扩大硬盘容量,又是新增硬盘,主要是为了实验。图方便的话,直接用其中一种方式皆可。
可是,从vmware setting 上扩大磁盘后,在linux下只会显示硬盘大小改变了,可并无扩充文件系统啊。
能够利用:resize2fs和parted分区工具。
参考: resize2fs
http://blog.chinaunix.net/u/6303/showart_407254.html
parted http://www.maycode.com/index.php/linux/34-linuxbase/1190-command.html
这种状况下,对该磁盘,便是,已分区的并挂载文件系统的空间已经不够,可是,该盘上还有未分区的空间。如何识别这些未分区的空间?
# /sbin/fdisk -l
Disk /dev/hda: 10.7 GB, 10737418240 bytes
15 heads(磁头), 63 sectors(扇区)/track(磁道), 22192 cylinders(磁道柱面)
Units(单位) = cylinders of 945 * 512 = 483840 bytes
15*63=945
945*512=483840
注:22192*483840=10737418240,共有22192个柱面,每一个柱面的Units(大小单位)为48380,因此总大小为两者的乘积
参考:http://www.xingtop.com/service/gaoji/hard/004.htm
Device Boot Start End Blocks Id System
/dev/hda1 1 22192 10485688+ 8e Linux LVM
Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 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 274 2096482+ 83 Linux
/dev/sda3 275 1305 8281507+ 8e Linux LVM
能够看出,/dev/sda这个磁盘分为三个区,柱面数小于总的柱面。即还有未分区的空间。
将1306至1958柱面加到/dev/sda3中。
1.首先,将1306-->1958的扇区新建上一个文件系统。
php
能不能使两个不一样的硬盘分区挂载在同一个目录下面?
按以往的概念,那确定是不行的。如将两分区:/dev/hda1 /dev/hda2 同时挂载到/home/me下,固然会提示出错。不过用lvm,很方便地能够获得扩展。
准备工做上面都已经作好了:有以下资源
/dev/hda 完整的一块盘10G,未挂载
/dev/sda4 5G的空间,未挂载
/dev/sda3 6G,挂载/
目标:
创建一个LV分区,将/挂载到该分区上。使/的空间增大的20G
开始:
1 /usr/sbin/pvcreate /dev/hda 初始化物理卷/dev/hda
2 /usr/sbin/pvcreate /dev/sda4 初始化物理卷/dev/sda4
3 /usr/sbin/vgextend VolGroup00 /dev/sda4
4 /usr/sbin/vgextend VolGroup00 /dev/hda
3,4步将新的卷添加到原有的卷组当中,其中 VolGroup00为原有的物理卷组,该卷组下的逻辑卷是/dev/sda3,卷组上有LV逻辑分区:
# /usr/sbin/lvscan
ACTIVE '/dev/VolGroup00/LogVol00' [6.66 GB] inherit
ACTIVE '/dev/VolGroup00/LogVol01' [1.19 GB] inherit
挂载着整个的文件系统/及/home。内核2.4之后,基本上都是支持lvm的,这给系统硬盘的划分带来了很大的方便。
5 /usr/sbin/lvextend -L +15G /dev/VolGroup00/LogVol00 扩大逻辑卷
LogVol00,
即挂载/目录的LV。将卷组
VolGroup00 上的Free PE / Size 空闲空间添加进来。可经过/usr/sbin/pvdisplay查看。
增长了逻辑卷的容量之后,就须要修改文件系统大小以实现利用扩充的空间
6 执行
文件
系统
检查:
[root@server1 /]# e2fsck -f /dev/VolGroup00/LogVol00
e2fsck 1.39 (29-May-2006)
/dev/VolGroup00/LogVol00 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
/dev/VolGroup00/LogVol00: recovering journal
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/VolGroup00/LogVol00: ***** FILE SYSTEM WAS MODIFIED *****
/dev/VolGroup00/LogVol00: ***** REBOOT LINUX *****
/dev/VolGroup00/LogVol00: 114168/1048576 files (0.6% non-contiguous), 695530/1048576 block
7,执行resize2fs
[root@server1 /]# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 2179072 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 2179072 blocks long.
8,从新查看lv信息和mount的信息 --mount 查看当前的挂载状况
[root@server1 /]# lvdisplay
以上6--8步获得http://tonykorn97.itpub.net/post/6414/471205的指点,否则还真不知道如何扩大根系统。
总结:
在虚拟机下,linux硬盘空间不够时,可经过vmware-->setting-->add来增长一个新的硬盘,或者经过
vmware-vdiskmanager.exe来扩大原有的虚拟硬盘*.vmdk。
进入linux系统后,经过/sbin/fdisk -l 命令查看磁盘分区情况。发现,扩大的硬盘并无真正加到文件系统中。新增的硬盘也未创建文件系统。
将扩大的硬盘的空闲空间分隔成另外一个分区。利用 /sbin/fdisk,并设置成lvm的格式
将新增的硬盘也一样处理。
利用/usr/sbin/pv* /usr/sbin/vg* /usr/sbin/lv* 等一系列lvm工具,将新的分区加到卷组VolGroup00中。此时,卷组VolGroup00中,空间已变大。然而,文件系统的空间并未发生变化,可经过命令df来查看。
利用文件系统检查工具e2fsck来检查文件系统/dev/VolGroup00/LogVol00 ,而且从新分配文件系统的大小:resize2fs。
至此,已经成功将根目录的空间增大。
******************************************************************************
lvm可参考:http://blog.chinaunix.net/u3/93926/showart_1873239.html
LVM使用手册 http://www.chinaunix.net/jh/4/36371.html
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、两块硬盘的小系统。
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 创建卷组,若有PV一、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<!-- ) reserved for the super user
First data block=0
6 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mkdir -p /mnt/design/users
# mount /dev/design/users /mnt/design/users/
如今就可以使用卷组design。为方便使用,可把下面一行加入文件/etc/fstab中:
/dev/design/user /mnt/design/users ext2 defaults 1 2
10 转变根文件系统为LVM
注意:强烈要求在进行下面的操做前对系统进行备份,而且把/文件系统创建在LVM上会致使系统升级很复杂。
在下面的例子中,系统除了/boot外都安装在同一个分区中,文件系统的状况为:
/dev/hda1 /boot
/dev/hda2 swap
/dev/hda3 /
进行转换的一个必要条件是硬盘上还有足够的空间给分区/dev/hda4创立LVM并把/分区的内容都复制到LVM上,不然:
1./分区还有至少一半空间空闲,能够缩减/分区,并把分出的空间划分到分区/dev/hda4;
为方即可用GNU parted工具:ftp://ftp.gnu.org/pub/gnu/parted;它可缩减带有文件系统的分区。一样也可用resize2fs与fdisk完成这个操做;
2.硬盘上已无足够空间,必须使用第二块硬盘,如/dev/hdb。
在完成以上准备及备份系统后,可继续如下步骤:
1.确认使用的Linux内核支持LVM,而且在编译时设置了 CONFIG BLK DEV RAM 与 CONFIG BLK DEV INITRD 。
2.设置/dev/hda4分区类型为LVM(8e):
# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Unknown)
Command (m for help): w
3.设置LVM:
"初始化LVM (vgscan)
# vgscan
"转变分区为PV:
# pvcreate /dev/hda4
"创建卷组:
# vgcreate vg /dev/hda4
"创建逻辑卷用以存放根系统:(这里假设空间为250MB)
# lvcreate -L250M root vg
4.在逻辑卷上创建文件系统并把系统复制到其上:
# mke2fs /dev/vg/root
# mount /dev/vg/root /mnt/
# find / -xdev | cpio -pvmd /mnt
5.修改新系统的fstab文件/mnt/etc/fstab,使/安装到/dev/vg/root:
/dev/hda3 / ext2 defaults 1 1
改变为:
/dev/vg/root / ext2 defaults 1 1
6.建立LVM初始化RAM盘:
# lvmcreate_initrd
此处要确认为lvmcreate_init给出正确的initrd image文件名,它应在/boot/ 目录下。
7. 在/etc/lilo.conf 中为LVM加入新入口项,其形式以下:
image = /boot/KERNEL_IMAGE_NAME
label = lvm
root = /dev/vg/root
initrd = /boot/INITRD_IMAGE_NAME
ramdisk = 8192
此处 KERNEL IMAGE NAME是支持LVM的内核,INITRD IMAGE NAME 指由lvmcreate_initrd创建 的initrd image。若是LVM的配置不少,能够把ramdisk设置的大一些:此处为8192,缺省为4096。在 lvmcrate_initrd的输出中有以下一行:
lvmcreate_initrd -- making loopback file (6189 kB)
其中括号中的数值为实际所需大小。
8.运行LILO,设置BOOT扇区:
# lilo
9.重启计算机,在LILO提示符处输入"lvm" 启动计算机,此时系统的根文件系统是新创建的逻辑卷。此后可在LILO配置文件/etc/lilo.conf中加入如下一行:
default=lvm
并运行lilo设置缺省启动项为lvm。
若是系统未能正常启动,可能的缘由是内核不支持LVM、initrd image不正确等等。
10.在正常启动后,就可把硬盘其它分区:/dev/hda3加入LVM。
"首先设置分区类型为 8e(LVM)
# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Unknown)
Command (m for help): w
"把它初始化为PV,并加入卷组中:
# pvcreate /dev/hda3
# vgextend vg /dev/hda3
11 共享LVM卷
LVM不支持物理共享访问,这会致使数据的丢失。
在使用fibre-channel 或shared-SCSI 的环境中,多台计算机以物理方式直接访问一组硬盘,因而可使用LVM把这些硬盘分为不一样的逻辑卷。若是须要共享数据,则应使用GFS。
12 参考文献
AJ Lewis,LVM HOWTO,(http://tldp.org/HOWTO/LVM-HOWTO/),Sistina Software, Inc。
********************************************************************************html