卷管理

创建逻辑卷时一定要创建分区。在Linux中,LVM(逻辑卷管理器)是一种对磁盘分区进行管理的逻辑机制,它建立在硬盘和分区之上,文件系统之下的一逻辑层。在创建逻辑卷之前,需要先创建分区,并将分区转换为物理卷,然后将多个物理卷组合成卷组,最后在卷组上创建逻辑卷。因此,创建逻辑卷时需要创建分区。

逻辑卷

是一种将一个或多个硬盘的分区在逻辑上集合,当成一个大硬盘来使用,当硬盘的空间不足时,可以将其他盘的分区加入其中,实现动态扩容,对磁盘空间进行动态管理

PV 物理卷(linux系统中的分区通过命令转换而成)

VG 卷组,建立在PV上,可以划分多个PV (多个磁盘分区组合在一起)

LV 逻辑卷,建立在VG之上,是一个动态改变大小的分区 (分区)

PE 物理区域,PE的大小为4MB,如同block的作用,是LVM最小的寻址单位

LVM扩容原理

通过交换PE的方式,达到弹性变更文件系统大小

将PE添加的LV逻辑卷,就可以扩容LV容量

剔除原有的PE,LV逻辑卷的容量会变小

默认PE大小是4M,LVM最多有65534个PE,所以LVM最大的VG是256G单位

LVM逻辑卷的创建流程

创建物理卷(将磁盘pv化)

pvcreate 设备名

[root@CentOS7 ~]# pvcreate /dev/sdb

Physical volume "/dev/sdb" successfully created.

查看物理逻辑卷

pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 centos lvm2 a-- <19.00g 0

/dev/sdb lvm2 --- 20.00g 20.00g

pvscan

PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]

PV /dev/sdb lvm2 [20.00 GiB]

Total: 2 [<39.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [20.00 GiB]

pvdisplay

--- Physical volume ---

PV Name /dev/sda2

VG Name centos

PV Size <19.00 GiB / not usable 3.00 MiB

Allocatable yes (but full) //物理卷是否可以分配

PE Size 4.00 MiB //物理extents大小,以字节、KB、MB或GB为单位

Total PE 4863 //物理卷中的总物理extents数量

Free PE 0 //物理卷中空闲的物理extents数量

Allocated PE 4863 //物理卷中已分配的物理extents数量

PV UUID Vf1mkK-6d21-aOgA-fz9S-gJJA-E8XC-TuzxeM

 

"/dev/sdb" is a new physical volume of "20.00 GiB"

--- NEW Physical volume ---

PV Name /dev/sdb

VG Name

PV Size 20.00 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID s3xHkf-JF5s-Bese-4aD9-PTre-d1x2-nzueFg

将设备从物理逻辑卷中移除(删除磁盘的pv化)

pvremove 设备名

[root@CentOS7 ~]# pvremove /dev/sdb

Labels on physical volume "/dev/sdb" successfully wiped.

//已成功擦除物理卷“/dev/sdb”上的标签。

创建卷组VG

vgcreate 卷组名 pv化的磁盘

[root@CentOS7 ~]# vgcreate newVG /dev/sdb

Volume group "newVG" successfully created

查看卷组

vgs

VG #PV #LV #SN Attr VSize VFree

centos 1 2 0 wz--n- <19.00g 0

newVG 1 0 0 wz--n- <20.00g <20.00g

vgscan

Reading volume groups from cache.

Found volume group "centos" using metadata type lvm2

Found volume group "newVG" using metadata type lvm2

vgdisplay

--- Volume group ---

VG Name centos

System ID

Format lvm2 //逻辑卷组的格式

Metadata Areas 1 //逻辑卷组元数据所在的磁盘区域数量

Metadata Sequence No 3 //逻辑卷组元数据序列号。

VG Access read/write //逻辑卷组的访问模式,可以是read/write或read-only

VG Status resizable //逻辑卷组的状态,可以是resizable(可调整大小)、closed(关闭)或partial(部分)

MAX LV 0 //逻辑卷组支持的最大逻辑卷数量

Cur LV 2 //逻辑卷组中当前创建的逻辑卷数量

Open LV 2 //打开的逻辑卷数量

Max PV 0

Cur PV 1

Act PV 1 //激活的物理卷数量

VG Size <19.00 GiB

PE Size 4.00 MiB

Total PE 4863 //逻辑卷组中的总物理extents数量

Alloc PE / Size 4863 / <19.00 GiB//已分配的物理extents数量和其分配的大小

Free PE / Size 0 / 0 //用的物理extents数量和其大小

VG UUID DDSAvL-JaDL-up0S-y2z2-j2H6-7I9d-yidNIc

 

--- Volume group ---

VG Name newVG

System ID

Format lvm2

Metadata Areas 1

Metadata Sequence No 1

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 0

Open LV 0

Max PV 0

Cur PV 1

Act PV 1

VG Size <20.00 GiB

PE Size 4.00 MiB

Total PE 5119

Alloc PE / Size 0 / 0

Free PE / Size 5119 / <20.00 GiB

VG UUID xkFZ9U-DuRG-5P4p-lxQ2-oGel-2pOS-Pyfn1t

删除卷组

vgremove 卷组名

[root@CentOS7 ~]# vgremove newVG

Volume group "newVG" successfully removed

创建lv逻辑卷

lvcrate -n 创建的lv逻辑卷名 -l 逻辑卷容量 vg卷组名

-L 直接指定容量 vg卷组名

[root@CentOS7 ~]# lvcreate -n newLV -L 10G newVG

Logical volume "newLV" created.

查看逻辑卷

Lvs

[root@CentOS7 ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

root centos -wi-ao---- <17.00g

swap centos -wi-ao---- 2.00g

newLV newVG -wi-a----- 10.00g

lvscan

[root@CentOS7 ~]# lvscan

ACTIVE '/dev/newVG/newLV' [10.00 GiB] inherit

ACTIVE '/dev/centos/swap' [2.00 GiB] inherit

ACTIVE '/dev/centos/root' [<17.00 GiB] inherit

lvdisply

--- Logical volume ---

LV Path /dev/newVG/newLV

LV Name newLV

VG Name newVG

LV UUID JPMrvl-Tz49-A9cy-iUw3-5X2Z-gNWQ-tEhX2d

LV Write Access read/write //指定逻辑卷的写入权限

LV Creation host, time CentOS7, 2023-06-22 16:50:46 +0800 //显示逻辑卷创建的时间和主机名

LV Status available //指定逻辑卷的状态,即 available(可用)

# open 0 //指定当前打开的进程数

LV Size 10.00 GiB

Current LE 2560 //定逻辑卷当前使用的 LE(条带单位)

Segments 1 //指定逻辑卷使用的条带数量

Allocation inherit //指定逻辑卷的分配方式

Read ahead sectors auto //指定逻辑卷预读的扇区数

- currently set to 256 //表示当前设置的预读扇区数为 256。在逻辑卷管理中,预读扇区数可以用于优化读取性能,提高文件系统的读写效率

Block device 253:2 //指定逻辑卷对应的块设备号

 

--- Logical volume ---

LV Path /dev/centos/swap

LV Name swap

VG Name centos

LV UUID L4KdX4-YAxJ-u20J-h0yU-FPWL-su9n-w2wYKd

LV Write Access read/write

LV Creation host, time centos7, 2022-12-11 20:26:26 +0800

LV Status available

# open 2

LV Size 2.00 GiB

Current LE 512

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 8192

Block device 253:1

 

--- Logical volume ---

LV Path /dev/centos/root

LV Name root

VG Name centos

LV UUID otxBD9-q2y0-tc03-3DrV-1Ldh-nrgw-ZoKfeX

LV Write Access read/write

LV Creation host, time centos7, 2022-12-11 20:26:27 +0800

LV Status available

# open 1

LV Size <17.00 GiB

Current LE 4351

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 8192

Block device 253:0

删除逻辑卷

lvremove 逻辑卷名(绝对路径)

[root@CentOS7 ~]# lvremove /dev/newVG/newLV

Do you really want to remove active logical volume newVG/newLV? [y/n]: y

Logical volume "newLV" successfully removed

格式化文件系统

[root@CentOS7 ~]# mkfs.xfs /dev/newVG/newLV

挂载

[root@CentOS7 ~]# mount /dev/newVG/newLV /mnt/LV/

[root@CentOS7 ~]# df

/dev/mapper/newVG-newLV 10475520 32992 10442528 1% /mnt/LV

查看文件系统信息

xfs类型文件系统 xfs_info命令 挂载点或逻辑卷路径

ext4类型文件系统 dumpe2fs命令 逻辑卷路径

[root@CentOS7 ~]# xfs_info /dev/newVG/newLV

[root@CentOS7 ~]# dumpe2fs /dev/newVG/newLV

dumpe2fs 1.42.9 (28-Dec-2013)

Filesystem volume name: <none> //文件系统卷标,可以用于区分不同的文件系统

Last mounted on: <not available>

Filesystem UUID: 9c049d3a-8fa1-4ed2-acd5-e749add3f85b

Filesystem magic number: 0xEF53 //文件系统上一次挂载的时间和地点 //文件系统的魔数,用于标识文件系统的类型。对于 e2fs 文件系统来说,魔数为 0xEF53

Filesystem revision #: 1 (dynamic) //文件系统的版本号

Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex

_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize //文件系统的特征,包括 ext4 文件系统的各种特性和元数据

Filesystem flags: signed_directory_hash //文件系统的标志,用于表示文件系统的各种状态和属性

Default mount options: user_xattr acl //默认挂载选项,用于指定文件系统挂载时的各种选项,如读写权限等

Filesystem state: clean //文件系统的状态,如是否已经挂载、是否已经检查过等

Errors behavior: Continue //错误行为,用于指定文件系统出现错误时的处理方式

Filesystem OS type: Linux //文件系统所在的操作系统类型

Inode count: 655360 //文件系统的 inode 数量,用于表示文件系统中唯一标识每个文件和目录的索引节点数量

Block count: 2621440 //文件系统的块数,用于表示文件系统中存储数据和元数据的块的数量

Reserved block count: 131072 //预留给管理员使用的块的数量,可以用于指定文件系统在不同情况下的预留块数

Free blocks: 2538303 //文件系统中空闲块的数量,可以用于存储新文件或目录等

Free inodes: 655349 //文件系统中空闲 inode 的数量,可以用于存储新文件或目录等

First block: 0 //文件系统的第一个数据块的块号

Block size: 4096 //文件系统的块大小,可以用于指定文件系统中每个数据块的大小

Fragment size: 4096 //文件系统的片段大小,可以用于指定文件系统中每个数据片段的大小

Group descriptor size: 64 //文件系统的组描述符大小,用于表示每个数据块组的信息

Reserved GDT blocks: 1024 //预留给管理员使用的组描述符表(GDT)块的数量

Blocks per group: 32768 //每个数据块组中数据块的数量

Fragments per group: 32768 //每个数据块组中片段的数量

Inodes per group: 8192 //每个数据块组中 inode 的数量

Inode blocks per group: 512 //每个数据块组中存储 inode 的块的数量

Flex block group size: 16 //柔性块组大小,用于表示文件系统中每个柔性块组的大小

Filesystem created: Thu Jun 22 18:18:48 2023 //文件系统的创建时间

Last mount time: n/a //文件系统上一次挂载的时间

Last write time: Thu Jun 22 18:18:49 2023 //文件系统上一次写入的时间

Mount count: 0 //文件系统已经被挂载的次数

Maximum mount count: -1 //文件系统可以被挂载的最大次数,达到最大次数后,文件系统将无法再被挂载

Last checked: Thu Jun 22 18:18:48 2023 //文件系统上一次检查的时间

Check interval: 0 (<none>) //文件系统检查的间隔时间,用于指定文件系统检查的频率

Lifetime writes: 132 MB //文件系统被写入的总量,可以用于统计文件系统的使用寿命

Reserved blocks uid: 0 (user root) //预留给管理员使用的块的 uid(用户 id)

Reserved blocks gid: 0 (group root) //预留给管理员使用的块的 gid(组 id)

First inode: 11 //文件系统中第一个 inode 的编号,可以用于标识文件系统中第一个 inode

Inode size: 256 //文件系统中每个 inode 的大小,可以用于指定文件系统中每个 inode 存储的数据和元数据的数量

Required extra isize: 28 //文件系统中每个目录条目所需的额外字节数,可以用于指定文件系统中每个目录条目所需的额外空间大小

Desired extra isize: 28 //文件系统中每个目录条目期望的额外字节数,可以用于指定文件系统中每个目录条目期望的额外空间大小

Journal inode: 8 //文件系统中的日志 inode 编号,可以用于存储文件系统的日志信息

Default directory hash: half_md4 //默认目录哈希函数,用于将目录条目映射到文件系统中

Directory Hash Seed: d240ab70-88b6-42fe-913b-dd3a6e5ae6f2 //目录哈希种子,用于指定目录哈希函数的种子值

Journal backup: inode blocks //日志备份,可以用于指定文件系统中的日志备份位置和方式

Journal features: (none) //日志特征,用于指定文件系统中日志的功能和特性

日志大小: 128M

Journal length: 32768 //文件系统中的日志大小,可以用于指定文件系统中日志的大小

Journal sequence: 0x00000001 //日志序列号,用于指定文件系统中日志的序列号

Journal start: 0 //日志起始位置,用于指定文件系统中日志的起始位置

卷管理

[root@CentOS7 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

centos 1 2 0 wz--n- <19.00g 0

newVG 1 1 0 wz--n- <20.00g <10.00g

  1. VG:表示 LVM 卷组(Volume Group)的名称。
  2. #PV:表示卷组中物理卷(Physical Volume)的数量。
  3. #LV:表示卷组中逻辑卷(Logical Volume)的数量。
  4. #SN:表示卷组中备用序列(Snapshot)的数量。
  5. Attr:表示卷组的属性,例如: wz--n- 表示该卷组是只读(read-only)的,并且所有逻辑卷都是 striped 模式。
  6. VSize:表示卷组的总大小。
  7. VFree:表示卷组中可用的空间大小。

VG 字段的 Attr 属性表示卷组的属性,它由多个字符组成,每个字符表示一个不同的属性。以下是 Attr 字段各个字符的含义:

  1. -:表示该卷组没有该属性。
  2. r:表示该卷组是只读的(read-only)。
  3. w:表示该卷组是可写的(writeable)。
  4. s:表示该卷组包含了一个或多个快照(snapshots)。
  5. n:表示该卷组不包含任何逻辑卷(logical volume)。
  6. S:表示该卷组是一个原始卷(raw volume),即没有经过 LVM 管理的卷。
  7. z表示该卷组是只读(read-only)的,并且所有逻辑卷都是 striped 模式。

例如,如果 Attr 字段为 "wz--n-",则表示该卷组是可写的,没有快照,不包含逻辑卷,且不是原始卷。

增加卷组的容量

vgextend 卷组名 磁盘名

[root@CentOS7 ~]# vgextend newVG /dev/sdc

Volume group "newVG" successfully extended

扩大逻辑卷的大小

lvextend -L +容量 扩容逻辑卷路径

+号可不写

写+号代表增加多少容量

不写+号,直接指定逻辑卷容量

[root@CentOS7 ~]# lvextend -L +1G /dev/newVG/newLV

Size of logical volume newVG/newLV changed from 10.00 GiB (2560 extents) to 11.00 GiB (2816 extents).

Logical volume newVG/newLV successfully resized.

减小卷组的容量

vgreduce 命令用于从卷组中删除物理卷,从而减小卷组的容量。下面是 vgreduce 命令的使用方法:

  1. 确认需要删除的物理卷:

在执行 vgreduce 命令之前,需要确定要删除的物理卷。可以使用 pvs 命令查看系统中的所有物理卷,并确认要删除的物理卷的名称和大小。

2. 删除物理卷:

使用 vgreduce 命令删除物理卷。语法如下:

 

vgreduce [选项] 卷组名 /dev/物理卷名

例如,要从名为 "vg2000" 的卷组中删除物理卷 "/dev/sdb2",可以执行以下命令:

 

vgreduce vg2000 /dev/sdb2

  1. 确认物理卷已删除:

执行 pvs 命令来确认物理卷已从卷组中删除。如果物理卷已成功删除,则不会再显示在 pvs 命令的输出中。

4. 确认卷组容量已减小:

执行 vgs 命令来查看卷组的容量。如果物理卷已成功删除,则卷组的容量将会减小。

减小逻辑卷的大小

lvreduce 命令用于减小逻辑卷的大小。下面是 lvreduce 命令的使用方法:

  1. 确认需要删除的逻辑卷:

在执行 lvreduce 命令之前,需要确定要删除的逻辑卷。可以使用 lvs 命令查看系统中的所有逻辑卷,并确认要删除的逻辑卷的名称和大小。
2. 删除逻辑卷:

使用 lvreduce 命令删除逻辑卷。语法如下:

 

lvreduce [选项] 卷组名 /dev/逻辑卷名

例如,要从名为 "vg2000" 的卷组中删除逻辑卷 "lv100",可以执行以下命令:

 

lvreduce vg2000 /dev/mapper/vg2000-lv100

  1. 确认逻辑卷已删除:

执行 lvs 命令来确认逻辑卷已从卷组中删除。如果逻辑卷已成功删除,则不会再显示在 lvs 命令的输出中。
4. 确认逻辑卷大小已减小:

执行 lvdisplay 命令来查看逻辑卷的大小。如果逻辑卷已成功删除,则逻辑卷的大小将会减小。

重读文件系统

扩容后,系统是还没有识别的,需要用命令重读文件系统

xfs文件系统类型使用命令 xfs_growfs 扩容逻辑卷的路径

ext4文件系统类型使用命令 resize2fs 扩容逻辑卷的路径

镜像卷

创建物理卷。

以下命令创建三个物理卷。两个物理卷将用于镜像分支,第三个物理卷将包含镜像日志。

[root@CentOS7 ~]# pvcreate /dev/sdb

[root@CentOS7 ~]# pvcreate /dev/sdc

[root@CentOS7 ~]# pvcreate /dev/sdd

创建卷组

这个示例创建一个卷组 newvg,它由上一步中创建的三个物理卷组成

[root@CentOS7 ~]# vgextend newvg /dev/sdb /dev/sdc /dev/sdd

创建镜像的逻辑卷

[root@CentOS7 ~]# lvcreate --type mirror -l 1000 -m 1 newvg -n mirrorlv /dev/sdc /dev/sdd

查看镜像卷的信息

[root@CentOS7 ~]# lvs newvg/mirrorlv

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

mirrorlv newvg mwi-a-m--- <3.91g [mirrorlv_mlog] 100.00

[root@CentOS7 ~]# lvs -o +seg_pe_ranges --segments

LV VG Attr #Str Type SSize PE Ranges

root centos -wi-ao---- 1 linear <17.00g /dev/sda2:512-4862

swap centos -wi-ao---- 1 linear 2.00g /dev/sda2:0-511

mirrorlv newvg mwi-aom--- 2 mirror <3.91g mirrorlv_mimage_0:0-999 mirrorlv_mimage_1:0-999

测试

[root@CentOS7 mnt]# iostat -d /dev/sdc /dev/sdd /dev/sdb 1

//监测磁盘 I/O 情况

同时往里面写入数据看是否同步

[root@CentOS7 ~]# dd if=/dev/sr0 of=/mnt/a

posted @ 2024-03-21 20:48  .mignon  阅读(19)  评论(0编辑  收藏  举报