Linux 逻辑卷管理实例详解

Linux 逻辑卷管理( LVM)
    LVM(Logical Volume Manager,逻辑卷管理器)是一种把硬盘空间划分成“弹性”逻辑卷的方法。这里的“弹性”体现在硬盘不必重新分区也能够被简单地重新划分大小。需要强调说明的是,LVM 是 Linux 操作系统中一个磁盘管理子系统,而不是文件系统!
 1、LVM基本概念
一般来说,一个分区大小是固定的。如果一个分区上没有空间时,我们只能重新分区以扩大相应分区的大小(这很可能要求重新安装整个操作系统),或者,将磁盘链接指向新的硬盘空间。 例如,有某个分区(如opt分区)在创建时指定了大小为1GB。但是随着时间的推移,此分区即将被数据占满。如果使用以前的磁盘管理技术,我们只能安装一个大些的磁盘(如 2GB )并分区,然后将原来的 opt 分区上的数据移动到新分区中来。有了LVM 技术,我们只需要将新的磁盘空间添加到原来的opt 分区中而不用移动数据。 
LVM 给我们带来了磁盘管理的灵活性。

 LVM可以将若干个物理卷(Physical Volumes, PV)(例如磁盘、分区)组成一个卷组( Volume Group,VG),而这些物理卷的大小可以并不相同,甚至类型也可以不同(如 IDE、SCSI 磁盘)。之后,卷组又被划分为逻辑卷( Logical Volumes, LV),也即虚拟分区。而逻辑卷的大小可以随时动态的调整从而实现了灵活管理磁盘分区的目的。


 2、LVM 基本术语
  PV( Physical Volume):物理卷,处于 LVM 最底层,可以是物理硬盘或分区。
 VG(Volume Group):卷组,建立在PV之上,可以含有一个到多个PV。
 LV( Logical Volume):逻辑卷,建立在 VG 之上,相当于原来分区的概念。不过大小可动态改变。
 PE( Physical Extend):物理区域,PV 中可以用于分配的最小存储单元,可在建立PV时指定,如 1、2、 4、 8… …. 64M,同一 VG 中的所有 PV 的 PE 应该相同。
 LE( Logical Extend):逻辑区域,LV 中可以用于分配的最小存储单元,取决于 LV 所在 PV 中 PE 的大小。
 VGDA ( Volume Group Descriptor Area):卷组描述区域,存在于每个PV 中,用于描述该 PV 本身、PV 所含 VG、VG 中的 LV 以及 LV 中的物理区域分配等信息,在使用 pvcreate 命令建立 PV 时建立。

在图 1-1 中,有两个大小不同的物理磁盘(记住,类型也可以不相同哦!)。其中,物理磁盘 1 我们划分了两个分区(大小也可以不相同),物理磁盘 2 我们划分了三个分区;之后,我们在这 5 个分区的每个分区上创建物理卷(PV);接着,我们将前三个分区组成一个卷组 VG1(注意,此卷组跨越了两个物理磁盘哦!),将后两个分区组成一个卷组 VG2 ;然后,我们将卷组 VG1 划分为两个逻辑卷 LV11和LV12,并将卷组VG2 完全划分给逻辑卷 LV2 ;最后,我们将 /usr挂接到逻辑卷LV11上、将 /var 挂接到逻辑卷
LV12上、将 /home 挂接到逻辑卷 LV2 上。

2、在 Linux 安装过程中使用 LVM
这种方式很简单
2.1 选择使用“Disk Druid”进行手工分区,
2.2创建/boot 分区(由于启动引导器程序不能从 LVM 逻辑卷中读取系统的引导文件,所以 /boot 分区不能放在 

LVM 逻辑卷中,必须单独进行分区。);
2.3 创建物理卷(Physical Volume,PV)之后,再次新建分区,创建物理卷(Physical Volume,PV),并使用全

部剩余的磁盘空间。
2.4 创建后的分区表,之后,单击“ LVM”按钮进入 LVM逻辑卷管理。
2.5 创建新卷组并命名,创建新卷组(Volume Group,VG)并命名为“ Volume00”。之后单击“添加”按钮添加逻辑卷( Logic Volume,LV)
2.6  创建交换分区(swap) ,添加新逻辑卷并命名为“LogVol00”。大小为 510MB,同时选择文件系统类型为“swap”
2.7  创建根分区(/)添加新逻辑卷并命名为“LogVol01”。使用所有剩余空间,同时选择文件系统类型为“ ext3”
按上述步骤划分完分区后,就可以继续安装系统了。

3 在 Linux 安装结束后,可以使用命令行的方式来管理 LVM
 LVM 管理过程中常用的一些相关命令。这里,为了清晰地阐明问题,我们将展示出即将处理的磁盘状况及规划表。

其中,
磁盘 sda 是安装 Linux 时使用的磁盘(并没有使用 LVM );
hdc 是光盘驱动器;
hda 、hdb、hdd 是三个大小为 1GB 的 IDE 磁盘(大小也可以并不相同);
其中,
hda 创建了 hda1 分区并创建了 PV;
hdb 创建了 hdb1 分区并创建了 PV;
hdd 被划分了 5 个分区(大小不相同)并创建了各自的 PV;
来自 hda1 和 hdb1 的 PV 共同组成了一个 2GB 的卷组:demoVG1;
demoVG1 又被划分成 3 个大小为 200MB 的逻辑卷:demoLV11、demoLV12、 demoLV13;
来自 hdd1 和 hdd2 的 PV 共同组成了一个 600MB 的卷组:demoVG2;
demoVG2 又被划分成 1 个大小为 400MB 的逻辑卷:demoLV20;
来自hdd3、hdd4、hdd5的PV共同组成了一个300MB的卷组demoVG3;
        demoVG3又 被 划 分 成 大 小 不 同 的 逻 辑 卷 : demoLV31 、demoLV32、 demoLV33、demoLV34;
每个卷组 VG 都留有一定的剩余空间供扩容使用

查看sda、hda、hdb、hdd 磁盘分区信息
#fidisk -l /dev/sda
#fidisk -l /dev/hda
#fidisk -l /dev/hdb
#fidisk -l /dev/hdc

一般来说,可以遵循以下的步骤来完成新的 LVM 逻辑卷创建和使用,即:
建立 LVM 类型的分区
建立 LVM 物理卷
建立 LVM 卷组
建立 LVM 逻辑卷
建立文件系统
挂接文件系统
使用文件系统
3.1建立LVM类型的分区
 1 对 hda 进行分区:键入命令 fdisk /dev/hda 对磁盘 hda 进行分区
键入命令 p 显示当前分区情况列表;键入命令n 创建新的分区;选择 p 命令创建主分区;选择分区编号为1;选择起始柱面为默认值,结束柱面为默认值,即将全部磁盘空间划分给 hda1。
键入命令 p 显示新创建的分区;键入命令 t 改变磁盘分区类型;选择分区 1;键入 16 进制编码 8e(代表 LVM 类型分区)
键入命令 p 显示分区信息;键入命令 w 存盘退出。
 2 对 hdb 进行分区
仿照前面的方法对 hdb 进行分区。
3、对 hdd 进行分区
仿照前面的方法对 hdd进行分区。所不同的是在hdd上建立了两个主分区和一个扩展分区(其中包含3个逻辑分区)。

3.2  管理 LVM 物理卷 
1、PV 相关命令:和 LVM 物理卷管理相关的命令包括:
pvdisplay:显示 PV 属性
pvscan:在系统所有硬盘上查找 PV
pvcreate:创建 PV(在 PV 上初始化 VGDA)
pvdata:显示 PV上的 VGDA 信息
pvchange:改变 PV 属性
pvmove:在 PV 间移动 PE/LE
2、显示 PV
在首次使用命令 pvdisplay 显示 PV 属性之前必须首先使用 vgscan 命令(查找系统现有 VG 卷组、建立 lvm 配置目录、文件)。同时,必须指定要显示的PV 分区名称。

3、创建 PV

使用命令 pvcreate 可以创建 PV,为/dev/hda1 创建了 PV。
#pvcreate /dev/hda1
#pvdisplay /dev/hda1
以同样的方法创建hdb1、hdd1、hdd2、hdd5、hdd6、hdd7 
使用命令 pvscan 在系统所有硬盘查找 PV 的结果。
#pvscan
4、显示 PV 数据
如果希望显示某个 PV 的详细信息,可以使用 pvdata 命令
#pvdata /dev/hda1
5、改变 PV *
Pvchange 命令用于改变 PV 属性(如参数 -x/--allocation y/n:控制一个 PV上的 PE 能否分配)。只能在
创建 VG 后使用
#pvchange -x y /dev/hda1
6、移动 PV *
Pvmove 命令用于在PV 间移动PE/LE,只能在创建 VG 和 LV 后使用。
#pvmove /dev/hda13.3  管理 LVM 卷组 

1、VG 相关命令
和 LVM 卷组管理相关的命令包括:
vgdisplay:显示 VG 卷组属性
vgscan:查找系统现有 VG 卷组
vgcreate:创建 VG 卷组(在 VG 上初始化 VGDA)
vgdata:显示 VG 卷组上的 VGDA 信息
vgchange:改变 VG 卷组属性
vgmove:在 VG 卷组间移动 PE/LE
2、显示 VG
Vgscan 命令用于查找系统现有 VG 卷组,而 vgdisplay 用于显示 VG 卷组属
性(必须已建好了卷组)。
3、创建 VG
命令 vgcreate 用于创建卷组。创建了卷组demoVG1 ,其中包含物理卷 hda1 和 hdb1
# vgcreate demov VG1 /dev/hda1 /dev/hdb1
显示了创建卷组后 vgscan 命令的输出结果。
显示了创建卷组后 vgdisplay 命令的输出结果。
显示了创建卷组后 pvscan 命令的输出结果。
4、改变 VG 属性
命令 vgchange 命令用于改变 VG 属性
该命令有两个常用的参数:
-a, --available{y|n} :在操作 VG(输入、输出)时,控制一个 VG 的可使用性,换句话说控制一个 
VG 能否被系统内核识别。
-x, --allocation{y|n} :控制一个 VG 能否被扩充或缩减(控制一个 VG 内的 PV 能否被分配)
5、向 VG 中添加 PV
命令 vgextend 用于向VG 中添加 PV。向卷组 demoVG1中添加了一个新的物理卷 hdd1。
#vgextend
#vgextend demovVG1 /dev/hdb1
添加了 PV 后,命令 pvscan 的输出是否成功。
6、从 VG 中移出 PV
命令 vgreduce 用于从 VG 中移出 PV。从卷组 demoVG1 中
移出物理卷 hdd1
#vgreduce demovVG1 /dev/hdb1
删除了 PV 后,命令 pvscan 的输出是否成功。
显 示 了 /dev目 录 下 相 关 的VG目 录 信 息 
#ll -d /dev/demoVG*
显 示 了 目 录/dev/demoVG1 下的文件信息,
#ll /dev/demoVG1
显示了目录 /etc/lvmtab.d 下的 VG 相关信息。
#ll /etc/lvmtab.d
8、合并 VG
可以使用命令vgmerge来合并卷组,但是要求待合并VG 必须处于非活动状态。将卷组demoVG2 和 demoVG3 合并到
demoVG2 中
#vgchange -a n demoVG3
#vgmcrge dem0VG2 demoVG2
#vgscan
9、拆分 VG
可以使用命令 vgsplit 来拆分卷组,如图 3-49 所示。但是要求待拆分 VG 必须处于活动状态,将卷组 demoVG2 拆分成 demoVG2、demoVG4(由 hdd2、hdd5、 hdd6、hdd7 组成)
#vglist
#vgchange -a n demoVG2
#vgchange -a y demoVG2
#vgsplit demoVG2 demoVG4 /dev/hdd2 /dev/hdd5 /dev/hdd6 /dev/hdd7
使用命令 pvscan 重新扫描、显示 PV 信息
10、删除 VG
命令 vgremove 用于删除 VG,要求待删除的 VG 必须处于非激活状态。
#vgremove demoVG1
#vgchange -a n demoVG1
#vgremove demoVG1
11、重命名 VG
命令 vgrename 用于重命名VG,不要求VG 处于非激活状态。
#vgrename demoVG4 demoVG3
12、检查 VG
命令 vgck 用于检测 VG 中 VGDA 的一致性。
#vgck
13、备份系统 VG 中各物理卷的 VGDA 信息
命 令vgcfgbackup用 于 备 份 系 统 所 有 VG中 各 物 理 卷 的VGDA 信 息 到/etc/lvmconf。
#vgcfgbackup
命令 vgcfgrestore 用于从 /etc/lvmconf 恢复系统所有 VG 中各物理卷的 VGDA信息,要求 VG 处于非激活状态.
#vgchange -a n demoVG3
#vgcfgrestore -n demoVG3 /dev/hdd2
15、重建已有卷组的卷组目录和其中的设备文件
在恢复 VGDA 信息后,应该使用命令 vgmknodes 重建节点信息,重建已有卷组的卷组目录和其中的设备文件。
#vgchange -a n demoVG3
#vgmknodes
#vgchange -a n demoVG3
16、输出卷组
卷组中的物理卷可以被转移到其它系统中使用,这需要使用输入/输出卷组命令。命令 vgexport 用于输出卷组,要求待输出卷组为非激活状态。
#vgexport demoVG2
#vgchange -a n demoVG2
#VGexport demoVG2
使用命令 vgscan、pvscan 显示 PV 及 VG 信息(Vgdisplay无法显示已输出卷组)
17、输入卷组
命令 vgimport 用于输入卷组
#vgimport demoVG0 /dev/hdd1
#vgscan
#pvscan

3.4 管理LVM逻辑卷
1、LV 相关命令
和 LVM 逻辑卷管理相关的命令包括:
lvdisplay:显示 LV 卷组属性
lvscan:查找系统现有 LV 卷组
lvcreate:创建 LV 卷组(在 LV 上初始化 LVDA)
lvdata:显示 LV 卷组上的 LVDA 信息
lvchange:改变 LV 卷组属性
lvmove:在 LV 卷组间移动 PE/LE
2、lvscan:查看 LV
恢复初始配置后的 PV、VG 配置信息
3、lvcreate:建立 LV
命令 lvcreate 用来创建 LV
在 卷 组demoVG1 上 创 建 了 一 个 大 小 为200MB、名为demoLV11 的逻辑卷。
#lvcreate -L 200m -n demoLV1 demoVG1
#lvscan
利用命令lvdisplay 显示新建的逻辑卷 demoLV11 的相关信息
#lvdisplay /devVG1/demoLV1
4、lvdisplay:显示 LV
命令 lvdisplay 用来显示 LV 的详细信息
#lvdisplay /devVG1/demoLV1
5、lvextend:扩展 LV 容量
LVM 的最突出的特点就是可以随时动态的调整 LV 空间大小,命令 lvextend用于扩展 LV 容量。扩展容量前 demoLV11 的容量。为 demoLV11增加 10MB 的空间。
#lvscan|grep LV11
#lvextend -L +10M /dev/demoVG1/demoLV11
#lvscan|grep LV11
6、lvreduce:减小 LV 容量
命令 lvreduce 用于减小 LV 容量。
减小容量前 demoLV11 的容量。为 demoLV11减少 10MB 的空间.显示了减小容量后的 demoLV11 信息
#lvscan|grep LV11
#lvextend -L -10M /dev/demoVG1/demoLV11
#lvscan|grep LV11
7、lvrename: LV 重命名
命令 lvrename 用于为 LV 重命名,将 demoLV11 重命名为demoLV01。
#lvrename /dev/demoVG1/demoLV11 /dev/demoVG1/demoLV01
也可以使用以下命令格式为 LV 重命名。
#lvrename /dev/demoVG1/demoLV01 demoLV01
8、改变逻辑卷属性

命令 lvchange 用于改变逻辑卷属性(如状态、读写属性等)

# lvchange
显示了改变 LV 状态的过程
# lvscan|grep LV11
# lvchange -a n /demoVG1/demoLV11
# lvscan|grep LV11

改变只读/读写属性
改变只读/读写属性时,不要求处于非激活状态。显示了 demoLV11的读写属性(可读/写)。
#lvdisplay /dev/demoVG1/demoLV11
如何更改 LV 的读写属性(只读)
#lvchange -p r /dev/demoVG1/demoLV11
#lvdisplay /dev/demoVG1/demoLV11

9、删除逻辑卷
利用命令 lvremove 可以删除逻辑卷。
#lsvcan|grep demoVG1
#lvremove /dev/demoVG1/demoLV13
#lvscan |grep demoVG1

3.5  创建文件系统
在逻辑卷建立好了以后,需要在上面创建文件系统。使用命令 mkfs 在 demoLV31 创建 ext3 分区。
#mkfs -t ext3 /dev/demoVG3/demoLV31
使用命令 mkfs.ext3 在 demoLV32 创建 ext3 分区
#mkfs.ext3 /dev.demoVG3/demoLV32
使用命令 mkreiserfs 在 demoLV33 创建 reiserfs 分区.
#mkreiserfs /dev/demoVG3/demoLV33
使用命令 mkjfs 在 demoLV34 创建 jfs 分区
#mkfs.jfs /dev.demoVG3/demolv34
3.6  挂接文件系统
最后,需要建立相应的目录并挂接文件系统。在 /mnt 下建立 4 个相关的子目录。
#cd mnt
# mkdir demoLV31 demoLV32 demoLV32 jfsreiserfs
挂接demoLV31-demoLV34
# mount -t ext3 /dev/demoVG3/demoLV31 /mnt/demoLV31
# mount /dev/demoVG3/demoLV32 /mnt/demoLV32
# mount -t reiserfs /dev/demoVG33/demoLV33 /mnt/rejserfs
# mount -t jfs /dev/demoVG3/demoLV34/mnjfs
显示LV挂接情况
# mount
如果有必要,可以将分区挂接信息写入/etc/fstab文件中,以便在引导时自动安装,重启系统后显示分区挂接情况。
3.7  使用文件系统
在完成了以上工作后,新的 LVM 分区就可以正常使用了,向 jfs 分区拷贝文件。
# cd /mnt/jfs
# cp /bin/*
查看系统所有分区信息的命令
# df -Th
3.8  调整逻辑卷中文件系统的大小
除了可以使用 lvextend ,lvreduce 命令调整逻辑卷中文件系统的大小外,还可以使用 resize2fs、e2fsadm、 resize_reiserfs 完成类似的功能。
使用命令 resize2fs 更改逻辑卷 demoLV32 的空间大小。在这之前要求先卸载相应的分区。
#e2fsck -f /dev/demoVG3/demoLV32
使用命令e2fsadm 也可以更改逻辑卷的大小,但在这之前同样要求先卸载相应分区,使用命令e2fsadm 更改逻辑卷.
#lvscan |grep LV32
# e2fsadm -L -10M /dev/demoVG3/demoLV32
# lvscan |grep demoLV32
对于reiserfs类型的分区,也可以使用命令resize_reiserfs来更改其磁盘空间大小。更改大小前逻辑卷 demoLV33 的磁盘空间情况。
# df -Th /dev/demoVG3/demoLV33
#resize_reiserfs -s -10m /dev/demoVG3/demoLV33
重新挂接分区 demoLV33 后显示其磁盘空间信息的情况
# mount /dev/demoVG3/demoLV33 /mnt/reiserfs
# df -Th /dev/demoVG3/demoLV33
3.9  LVM 逻辑卷维护命令
1、LVM 相关命令
和 LVM 逻辑卷维护相关的命令还包括:
lvmdiskscan:检测硬盘和分区中的逻辑卷管理信息
lvmsadc:收集逻辑卷的读写统计信息
lvmsar:查看 LVM 的日志文件信息
lvmchange:复位 LVM 组件
2、lvmsadc:查看 LVM
命令lvmsadc用于收集逻辑卷的读写统计信息(输出到日志文件),一般应写到指定日志文件,若不指定文件名则直接输出到屏幕,这样,输出太快将导致无法看清内容。
# lvmsadc lvmlog
#ll lvm*
3、lvmsar:查看 LVM 日志信息
命令 lvmsar 用于查看 LVM 日志信息
# lvmsar lvmlog
4、lvmdiskscan:检查 LVM
命令 lvmdiskscan  用来显示所有磁盘上的 LVM 卷信息
# lvmdiskscan 
5、lvmchange:复位 LVM
命令 lvmchange 用于强行失效所有 PV。此时,使用 pvscan命令可以查看相关的 PV 及 VG 信息,但是用 lvscan 命令将无法列出VG 中的 LV 信息,但是使用-D 参数可以得到和 PVSCAN 类似的输出
# lvmchange -r
# lvsvan
# lvscan -D
复位后,只需再激活卷组,逻辑卷LV 将随之激活.
#vgchange -a y demoVG3


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值