Chinaunix首页 | 论坛 | 博客
  • 博客访问: 142334
  • 博文数量: 52
  • 博客积分: 1447
  • 博客等级: 上尉
  • 技术积分: 505
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-15 15:09
文章分类

全部博文(52)

文章存档

2012年(1)

2011年(51)

分类: LINUX

2011-02-23 16:54:42

## 一、常规操作
## 1、分区如下
ls /dev/sd*
sda   sda2  sdb   sdb2  sdb5  sdc   sdc2  sdd   sdd2  sdd4
sda1  sda5  sdb1  sdb3  sdb6  sdc1  sdc3  sdd1  sdd3

## 2、先将将sdc和sdd的所有分区添加的PV中   建立PV
pvcreate /dev/sdc1 /dev/sdc2 /dev/sdc3 /dev/sdd1 /dev/sdd2 /dev/sdd3 /dev/sdd4
pvs

## 3、将PV分成两个卷组(VG),vg1和vg2      建立VG
vgcreate vg1 /dev/sdc1 /dev/sdc2 /dev/sdd3 /dev/sdd4
vgcreate vg2 /dev/sdc3 /dev/sdd1 /dev/sdd2
vgs

## 4、激活VG
vgchange -a y vg1
vgchange -a y vg2

## 5、移除VG步骤
vgs #查看相关VG
vgchange -a n vg1  #先休眠相关vg,在删除 ??经测试,可以忽略这一步骤?
vgremove vg1
vgs #确认是否删除vg1

## 6、为VG添加新的PV
fdisk /dev/sdb     #格式化新添加的硬盘
pvcreate /dev/sdb1 #初始化分区到PV中
pvs 
vgextend vg1 /dev/sdb1  #当卷组(VG)空间不足时,可以加入新的物理卷来扩大容量,这时可用命令vgextend
pvs
vgs #查看vg1先后的容量变化

## 7、 从VG移除PV
pvdisplay /dev/sdb1   #确认该PV没用被LV使用
vgreduce vg1 /dev/sdb1  #将/dev/sdb1这个PV从vg1中移除

## 8、创建LV
lvcreate -L500 -nlvdata vg1   #默认为M,即500M
lvcreate -L1G -nlvdata2 vg1   #大小为1G
ll /dev/vg1/                  #查看生成的相关LV

## 9、使用vg1剩下的所有的空间创建data3
vgs vg1  #VFree值即为剩余空间
lvcreate -L6.5G -nlvdata3 vg1

## 10、删除LV
umount /dev/vg1/lvdata3  #必须先卸载
lvremove /dev/vg1/lvdata3

## 11、扩展LV的大小(改变ext2/ext3文件系统的大小时应先卸载)
vgs vg1  
umount /dev/vg1/lvdata3            #查看vg1的剩余空间
lvextend -L+1G /dev/vg1/lvdata3    #将逻辑卷lvdata3增加1G的容量
resize2fs /dev/vg1/lvdata3
#报错resize2fs: Bad magic number in super-block while trying to open /dev/vg1/lvdata3
Couldnt find valid filesystem superblock.
#原因是因为该逻辑卷根本就没有格式化,当然不会存在superblock

#缩小LV ##逻辑卷可扩展同样也可缩小,但应在缩小LV之前首先减小文件系统,否则将可能导致数据丢失。

## 12、PV间转移数据  (适用场景:当一块物理磁盘出现坏区的征兆时需要换一块新的设备上去,在将数据转移到这个新的硬盘上)
pvmove /dev/sdc1 /dev/sdb1       # 先将sdb1加入到PV中,如果在该PV之上的LV采用交错方式存放,则这个转移过程不能被打断。建议在转移数据之前备份LV中的数据。

## 13、系统启动/关闭
/sbin/vgscan
/sbin/vgchange -a y    #系统启动时可自动激活并使用LVM
/sbin/vgchange -a n    #在系统关机时,要关闭LVM  貌似现在不需要使用了

## 14、一个磁盘上的多个分区
在一块硬盘上可以有多个PV/分区,但一般建议一块硬盘上只有一个PV:这样更加的"便于管理,易于处理错误",避免交错方式中性能下降。LVM不能辨别两个PV是否在同一硬盘上,故当采用交错方式时,会导致性能更差。
        但在某些情况下可采用:"把已存在的系统合并到LVM中。在一个只有少数硬盘的系统中,转换为LVM时需在在各分区之间转移数据。"把一个大硬盘分给不同的VG使用。当一个VG的有不同的PV在同一硬盘时,创建交错方式的LV时应注意使用哪一个PV。



## 二、建立LVM用例(使用sda,sdb,sdc作为PV)
pvcreate /dev/sda  #准备分区
pvcreate /dev/sdb
pvcreate /dev/sdc
vgcreate test_vg /dev/sda /dev/sdb /dev/sdc/   #创建卷组
vgdisplay       #查看/验证卷组的信息:
lvcreate -L1G -ntest_lv test_vg   #建立LV
lvcreate -i3 -I4 -L1G -ntest_lv test_vg  #建立交错方式LV,注意:如果使用-i2,则LV将仅使用test_vg中的两块硬盘
mke2fs /dev/test_vg/test_lv   #建立文件系统
# mkreiserfs /dev/test_vg/test_lv
mount /dev/test_vg/test_lv /mnt   #安装LV,测试文件系统
df

## 三、使用snapshot做备份
#例如我们要对卷组"test_vg"每晚进行数据库备份,就要采用snapshot类型的卷组。这种卷组是其它卷组的一个只读拷贝,它含有在创建snapshot卷组时原卷组的所有数据,这意味你可以备份这个卷组而不用担心在备份过程中数据会改变,也不需要暂时关闭数据库卷以备份。
#一个snapshot卷可大可小,但必须有足够的空间存放所有在本snapshot卷生存期间改变的数据,一般最大要求是原卷组的1.1倍。如空间不够,snapshot卷将不能使用。

lvcreate -L592M -s -n dbbackup /dev/test_vg/databases  #建立snapshot卷,-s|--snapshot
mkdir /mnt/test_vg/dbbackup
mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackup   #挂载snapshot卷
tar -cf /dev/rmt0 /mnt/test_vg/dbbackup   #备份数据,如采用tar向磁带备份:
# mount /dev/test_vg/dbbackup /mnt/test_vg/dbbackup -o nouuid,norecovery,ro  #当使用XFS文件系统时,mount命令要使用nouuid与norecovery选项
umount /mnt/test_vg/dbbackup  #完成备份后,就可卸载并删除snapshot卷
vremove /dev/test_vg/dbbackup


## 四、更换卷组硬盘(PV)
#由于某种原因,需要用新的硬盘替代卷组中的旧硬盘,如用一SCSI硬盘替换IDE硬盘,其步骤为:
pvcreate /dev/sdf           #准备/初始化新硬盘
vgextend test_vg /dev/sdf   #加入卷组
pvmove /dev/hdb /dev/sdf    #数据迁移,建议在磁盘I/O开销较少时
vgreduce dev /dev/hdb   #移除未用硬盘

## 五、迁移卷组到其它系统
#把一个卷组转移到其它系统是很容易的(如更换服务器),这要用命令vgexport与vgimport。
unmount /mnt/design/users  #卸载文件系统,注意:为整体搬迁卷组,应首先把它从文件系统中卸载
vgchange -an test_vg       #设置卷组为非活动状态
vgexport test_vg           #这个操作不是必须的,便它可以防止系统对卷组的访问
#当机器关机后,构成卷组的硬盘就可被转移到新的服务器上。
pvscan   #在新的服务器上,可用pvscan查看卷组情况,Import卷组
#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]
vgimport test_vg /dev/sdb1 /dev/sdb2   #import卷组test_vg (同时也激活它)以安装其上的文件系统
mkdir -p /mnt/design/users   #挂载文件系统
mount /dev/test_vg/users /mnt/design/users

## 六、分割卷组
#这种情况是:需要在系统中加入新的卷组,但没有其它可用新硬盘,而已有的卷组中还有大量空间可用。如向系统加入一个"design"卷组。
pvscan   #检查可用空间
#根据实际剩余空间,决定把/dev/sdg1与/dev/sdg2分配组design,但首先要把其上的物理块移到其它卷的空闲空间中(如把卷组dev移到/dev/sdf,卷组ops移到/dev/sde)。
pvmove /dev/sdg1 /dev/sde      #由于硬盘上的逻辑卷仍在使用,故首先要转移它们的数据。两个PV需要是在一个VG中
pvmove /dev/sdg2 /dev/sdf
vgsplit dev design /dev/sdg2   #创建新卷组,把/dev/sdg2从卷组dev分割出并添加到新卷组design中

vgreduce ops /dev/sdg1         #移除剩余的卷。把/dev/sdg1从卷组ops中分出并加入卷组design
vgextend design /dev/sdg1      

## 七、卷组design上建立逻辑卷:
lvcreate -L750M -n users design   #建立新逻辑卷及文件系统,,为今后的方便,现只使用一部分空间
mke2fs /dev/design/users
mkdir -p /mnt/design/users
mount /dev/design/users /mnt/design/users/
vim /etc/fstab
/dev/design/user /mnt/design/users ext2 defaults 1 2


## 八、转变根文件系统为LVM,建议不要操作此选项,应为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;?..k完成这个操作;

2.硬盘上已无足够空间,必须使用第二块硬盘,如/dev/hdb。
#在完成以上准备及备份系统后,可继续以下步骤:
1.确认使用的Linux内核支持LVM,并且在编译时设置了 CONFIG BLK DEV RAM 与 CONFIG BLK DEV INITRD 。
2.设置/dev/hda4分区类型为LVM(8e): 
fdisk /dev/hda
t
4
8e
w

3.设置LVM
vgscan  #初始化LVM (vgscan)
pvcreate /dev/hda4 #转变分区为PV
vgcreate vg /dev/hda4    #建立卷组
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. 修改grub.conf

8.在正常启动后,就可把硬盘其它分区加入LVM。eg:/dev/hda3
pvcreate /dev/hda3  #把它初始化为PV,并加入卷组中:
vgextend vg /dev/hda3

##参考文献
AJ Lewis,LVM HOWTO,(),Sistina Software, Inc。
阅读(1291) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~