05 LVM操作

5.1 初始化磁盘或者磁盘分区

运行pvcreate 在整个磁盘上

# pvcreate /dev/hdb

运行pvcreate 在分区上

# pvcreate /dev/hdb1

Attention

不建议在整个硬盘上创建lvm,没有分区信息容易被其他系统识别为干净的磁盘。

5.2 创建卷组

创建卷组需要在指定的物理卷上面的。

# vgcreate my_volume_group /dev/hda1 /dev/hdb1

创建卷组是可以指定卷大小的,默认是32M。

5.3 激活一个卷组

如果我们重启系统或者关闭了卷组就需要激活它。

# vgchange -a y my_volume_group

5.4 移除一个卷组

移除卷组需要先停掉卷组的。

# vgchange -a n my_volume_group
# vgremove my_volume_group

5.5 添加物理卷到卷组中

# vgextend my_volume_group /dev/hdc1

5.6 从一个卷组中移除一个物理卷

移除物理卷前必须确保空间是足够的,使用pvdisplay查看

# pvdisplay /dev/hda1

--- Physical volume ---
PV Name               /dev/hda1
VG Name               myvg
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

如果没啥问题了,可以执行vgreduce去移出物理卷。

# vgreduce my_volume_group /dev/hda1

5.7 创建一个逻辑卷

创建一个1500M的名字为testlv的lv

# lvcreate -L 1500M -n testlv testvg

5.8 移除一个逻辑卷

逻辑卷的移除需要先取消挂载的。

# umount /dev/myvg/homevol
# lvremove /dev/myvg/homevol

5.9 扩展一个逻辑卷

扩展主要有2种方式,一种是直接指定扩展到多大,一种是在原有基础上扩展多少。

方案1:

# lvextend -L12G /dev/myvg/homevol

方案2:

# lvextend -L+1G /dev/myvg/homevol

默认情况下,我们使用lvextend是扩展了逻辑卷的大小,但是文件系统的大小还是原来的值。 需要同步下,不同文件系统命令有所不同。

Note

lvextend有个-r的选项,如果指定可以完成自动同步。

ext2/ext3

# umount /dev/myvg/homevol/dev/myvg/homevol
# resize2fs /dev/myvg/homevol
# mount /dev/myvg/homevol /home

reiserfs

# resize_reiserfs -f /dev/myvg/homevol

xfs

# xfs_growfs /home

jfs

# mount -o remount,resize /home

Attention

扩展xfs和jfs文件系统的时候,不能指定挂载设备,必须指定挂载点。

5.10 缩减一个逻辑卷

缩减逻辑卷是有风险的,如果处理不当容易丢掉数据的。

ext2/ext3

# umount /home
# resize2fs /dev/myvg/homevol 524288
# lvreduce -L-1G /dev/myvg/homevol
# mount /home

reiserfs

# umount /home
# resize_reiserfs -s-1G /dev/myvg/homevol
# lvreduce -L-1G /dev/myvg/homevol
# mount -treiserfs /dev/myvg/homevol /home

xfs

没办法缩减

jfs

没办法缩减

5.11 迁移一个老化的的磁盘。

如果有一个磁盘已经老化了,但是有大量数据在上面。那就需要迁移了,迁移前确保卷组的空间够使用。

# pvmove /dev/hdb
# vgreduce dev /dev/hdb

Note

pvmore是迁移数据,很慢的,如果你想获取迁移的详细信息,使用-v选项即可。

5.12 迁移一个老化的的磁盘到新的替代磁盘上。

如果有一个磁盘已经老化了,但是有大量数据在上面。新买了一个同样大小的盘用作替换的。

# pvcreate /dev/sdf
# vgextend dev /dev/sdf
# pvmove /dev/hdb /dev/sdf
# vgreduce dev /dev/hdb

5.13 使用快照备份

# lvcreate -L592M -s -n dbbackup /dev/ops/databases
# mkdir /mnt/ops/dbbackup
# mount /dev/ops/dbbackup /mnt/ops/dbbackup
# tar -cf /dev/rmt0 /mnt/ops/dbbackup
# umount /mnt/ops/dbbackup
# lvremove /dev/ops/dbbackup

Attention

xfs文件系统在挂载的时候需要指定–nouuid ro 选项才可以。

5.14 迁移卷组到另外一个系统上

# unmount /mnt/design/users                     # 卸载设备
# vgchange -an design                           # 关闭卷组
# vgexport design                               # 导出逻辑卷
# 去除磁盘插入新的系统上面去
# pvscan                                        # 扫描pv
# vgimport design                               # 导入卷组
# vgchange -ay design                           # 激活卷组
# mkdir -p /mnt/design/users                    # 创建挂载点目录
# mount /dev/design/users /mnt/design/users     # 挂载

Warning

迁移到其他系统之前请确保名字和目标的不同,使用rename去重命名,且使用sync同步几次,确保数据完全写入到迁移的盘上面。