partprobe使用方法_LVM逻辑卷的配置和挂载使用

news/2024/7/7 16:27:41

LVM逻辑卷的配置和挂载使用

为什么使用LVM?

①硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间

②用户/用户组的空间建立在LVM上,可以随时按要求增大,或根据使用情况对各逻辑卷进行调整。当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。同样,使用LVM可以在不停服务的情况下。把用户数据从旧硬盘转移到新硬盘空间中去

名词解释:

PV: 物理

VG:卷组

LV :逻辑卷

LVM配置步骤:

将磁盘加入pv # pvcreate /dev/sdb /dev/sdc /dev/sdd

将pv加入到vg卷组 # vgcreate datavg /dev/sdb /dev/sdc /dev/sdd

分配lv使用 # lvcreate -L 100M -n lv1 datavg

查看命令:pvs、vgs、lvs

一、例如有三块硬盘: sdb、sdc、sdd

先使用两块,sdd稍后用来示范VG扩展和移除

[root@localhost ~]# lsblk |grep "sd[bcd]"

sdb 8:16 0 204M 0 disk

sdc 8:32 0 204M 0 disk

sdd 8:48 0 204M 0 disk

[root@localhost ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 30G 0 disk

├─sda1 8:1 0 200M 0 part /boot

├─sda2 8:2 0 25.8G 0 part

│ ├─rhel-root 253:0 0 23.8G 0 lvm /

│ └─rhel-home 253:1 0 2G 0 lvm /home

└─sda3 8:3 0 4G 0 part [SWAP]

sdb 8:16 0 204M 0 disk

sdc 8:32 0 204M 0 disk

sdd 8:48 0 204M 0 disk

sr0 11:0 1 3.8G 0 rom

[root@localhost ~]#将sdb磁盘加入pv

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

Physical volume "/dev/sdb" successfully created

[root@localhost ~]# echo $?

0

[root@localhost ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 rhel lvm2 a-- 25.80g 0

/dev/sdb lvm2 --- 204.00m 204.00m

[root@localhost ~]#

如果加入失败可以先将磁盘格式化:mkfs.etx4 /dev/sdb 格式化成什么格式自己选,这里是ext4

查看pv创建情况:

[root@localhost ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 rhel lvm2 a-- 25.80g 0

/dev/sdb lvm2 --- 204.00m 204.00m

[root@localhost ~]#

再将sdc磁盘加入pv

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

Physical volume "/dev/sdc" successfully created

[root@localhost ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 rhel lvm2 a-- 25.80g 0

/dev/sdb lvm2 --- 204.00m 204.00m

/dev/sdc lvm2 --- 204.00m 204.00m

[root@localhost ~]#

思考:现在有两个PV物理卷了,我们需要将这两个物理卷加入卷组,所以需要创建一个卷组VG

注意:在某个物理卷在加入卷组时,会将物理卷的最小存储单元设定为一个固定的值,这个值称为PE(physical extent)。这个值的创建,是为了保证用统一的最小分配单元来创建逻辑卷,不至于因为分配单元大小不同而造成空间浪费。举个例子:用于远洋运输的集装箱的设计是是有着统一标准的,最重要一点是集装箱大小完全相同,这样做的好处是集装箱相互堆叠在一起不会留下多余的空隙,完全利用了空间,且便于管理。设定PE的原因也与此相同。LVM以最小分配单元来创建逻辑卷,该最小分配单元的值称为LE(logical extent)。一般来说PE=LE,且大小为2^n。

创建名为datavg的卷组,并将sdb和sdc这两个物理卷加入到卷组datavg

[root@localhost ~]# vgcreate datavg /dev/sdb /dev/sdc

Volume group "datavg" successfully created

[root@localhost ~]# vds

bash: vds: command not found...

通过以下两个命令可以看出sdb和sdc物理卷都已加入名为datavg的卷组中了

[root@localhost ~]# vgs

VG #PV #LV #SN Attr VSize VFree

datavg 2 0 0 wz--n- 400.00m 400.00m

rhel 1 2 0 wz--n- 25.80g 0

[root@localhost ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 rhel lvm2 a-- 25.80g 0

/dev/sdb datavg lvm2 a-- 200.00m 200.00m

/dev/sdc datavg lvm2 a-- 200.00m 200.00m

[root@localhost ~]#

datavg卷组还可以扩展新的pv ,这里我们暂时不扩展

分配LV逻辑卷使用(利用datavg卷组创建一个名为lv1的逻辑卷,大小为100M)

[root@localhost ~]# lvcreate -L 100M -n lv1 datavg

Logical volume "lv1" created.

[root@localhost ~]#

查看下逻辑卷的配置情况:

[root@localhost ~]# lvs

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

lv1 datavg -wi-a----- 100.00m

home rhel -wi-ao---- 2.00g

root rhel -wi-ao---- 23.80g

[root@localhost ~]# lvscan

ACTIVE '/dev/datavg/lv1' [100.00 MiB] inherit

ACTIVE '/dev/rhel/home' [2.00 GiB] inherit

ACTIVE '/dev/rhel/root' [23.80 GiB] inherit

[root@localhost ~]#

逻辑卷使用前和分区一样,都需要格式化一下

[root@localhost ~]# mkfs.ext4 /dev/datavg/lv1

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

25688 inodes, 102400 blocks

5120 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=33685504

13 block groups

8192 blocks per group, 8192 fragments per group

1976 inodes per group

Superblock backups stored on blocks:

8193, 24577, 40961, 57345, 73729

Allocating group tables: done

Writing inode tables: done

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

[root@localhost ~]# echo $?

0

[root@localhost ~]#

知识点:确认上一步操作是否成功可用 [root@localhost ~]# echo $? 检查,为0表示成功,其他都是失败

挂载逻辑卷到/lv1目录下

[root@localhost /]# mkdir /lv1

[root@localhost /]# mount /dev/datavg/lv1 /lv1/

[root@localhost /]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/rhel-root 24G 3.6G 19G 16% /

devtmpfs 898M 0 898M 0% /dev

tmpfs 913M 84K 913M 1% /dev/shm

tmpfs 913M 9.2M 904M 1% /run

tmpfs 913M 0 913M 0% /sys/fs/cgroup

/dev/sda1 190M 133M 43M 76% /boot

/dev/mapper/rhel-home 2.0G 12M 1.8G 1% /home

tmpfs 183M 0 183M 0% /run/user/0

tmpfs 183M 16K 183M 1% /run/user/42

/dev/mapper/datavg-lv1 93M 1.6M 85M 2% /lv1

[root@localhost /]#

当然我们也可以设置将逻辑卷永久挂载

①将逻辑卷的lv1的UUID写到/etc/fstab配置文件中

[root@localhost lv1]# blkid |grep "lv1" |awk '{print $2}' >> /etc/fstab

1

②重新加载下配置文件/etc/fstab

[root@localhost /]# mount -a

1

我们可以看到datavg卷组已经少了100M,先使用的sdb物理卷的空间

[root@localhost /]# vgs

VG #PV #LV #SN Attr VSize VFree

datavg 2 1 0 wz--n- 400.00m 300.00m

rhel 1 2 0 wz--n- 25.80g 0

[root@localhost /]#

1

2

3

4

5

二、VG的扩展pv和移除pv

扩展一个新的pv

[root@localhost /]# vgextend datavg /dev/sdd

1

移除一个pv

[root@localhost ~]# vgreduce datavg /dev/sdd

1

删除VG

[root@localhost ~]# vgremove datavg

1

三、pvmove在线数据迁移(不同物理卷之间)和快照建立(逻辑卷之间)

假如pv物理卷/dev/sdb硬盘已经老化,需要将sdb里的数据在线迁移到sdc物理卷

先检查当前逻辑卷VG中的PV使用情况

[root@localhost /]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/mapper/rhel-root 24G 3.6G 19G 16% /

devtmpfs 898M 0 898M 0% /dev

tmpfs 913M 84K 913M 1% /dev/shm

tmpfs 913M 9.2M 904M 2% /run

tmpfs 913M 0 913M 0% /sys/fs/cgroup

/dev/sda1 190M 133M 43M 76% /boot

/dev/mapper/rhel-home 2.0G 12M 1.8G 1% /home

tmpfs 183M 0 183M 0% /run/user/0

tmpfs 183M 16K 183M 1% /run/user/42

/dev/mapper/datavg-lv1 93M 33M 54M 39% /lv1

[root@localhost /]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 rhel lvm2 a-- 25.80g 0

/dev/sdb datavg lvm2 a-- 200.00m 100.00m

/dev/sdc datavg lvm2 a-- 200.00m 200.00m

/dev/sdd datavg lvm2 a-- 200.00m 200.00m

[root@localhost /]#

开始数据迁移

[root@localhost etc]# pvmove /dev/sdb /dev/sdc

/dev/sdb: Moved: 12.0%

/dev/sdb: Moved: 100.0%

[root@localhost etc]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 rhel lvm2 a-- 25.80g 0

/dev/sdb datavg lvm2 a-- 200.00m 200.00m

/dev/sdc datavg lvm2 a-- 200.00m 100.00m

/dev/sdd datavg lvm2 a-- 200.00m 200.00m

[root@localhost etc]#

迁移完成后可将老旧的物理卷pv(sdb)从卷组中除去

[root@localhost etc]# vgreduce datavg /dev/sdb

Removed "/dev/sdb" from volume group "datavg"

[root@localhost etc]# vgs

VG #PV #LV #SN Attr VSize VFree

datavg 2 1 0 wz--n- 400.00m 300.00m

rhel 1 2 0 wz--n- 25.80g 0

[root@localhost etc]#

// partprobe命令用于重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。

//partprobe命令k可以不用重启系统即可配合fdisk、gdisk工具创建新的分区

[root@localhost /]# partprobe

lvm建立快照lv1-bak

// 制作/dev/datavg/lv1的快照lv1-bak

[root@localhost lv1]# df -h

.......

/dev/mapper/datavg-lv1 93M 1.6M 85M 2% /lv1

[root@localhost lv1]#

// 制作快照前最好先卸载/dev/datavg/lv1

[root@localhost /]# umount /lv1/

[root@localhost /]# lvcreate -L 35M -n lv1-bak -s /dev/datavg/lv1

Rounding up size to full physical extent 36.00 MiB

Logical volume "lv1-bak" created.

[root@localhost /]# df -h

........

/dev/mapper/datavg-lv1--bak 93M 33M 54M 39% /lv1

四、LVM管理知识扩展及易错问题的出现及方法

lvm的拉伸与缩减

针对xfs文件系统—–lvm设备的扩大(只可以扩大,不可以缩小)

// 此操作只能扩大

[root@server188 ~]# lvextend -L 500M /dev/datavg/lv1

Extending logical volume lv0 to 500.00 MiB

Logical volume lv0 successfully resized

[root@server188 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

….. ….. ….. …

/dev/mapper/datavg-lv1 197M 11M 187M 6% /lv1

// xfs格式同步下设备

[root@server188 ~]# xfs_growfs /dev/datavg/lv1

[root@server188 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

……. …… … …

/dev/mapper/datavg-lv1 497M 11M 487M 3% /lv1

针对ext文件系统—–lvm设备的扩大(可拉伸也可缩减)

lvm设备的拉伸

//将/dev/mapper/datavg-lv1格式化为ext格式

[root@server188 ~]# umount /dev/mapper/datavg-lv1

[root@server188 ~]# mkfs.ext4 /dev/mapper/vg0-lv0

//此时要扩展到600M,但vg中容量<600M,因此vg中加入新的物理卷pv

[root@localhost /]# vgextend datavg /dev/sdd

[root@server188 ~]# lvextend -L 2G /dev/vg0/lv0

Extending logical volume lv0 to 2.00 GiB

Insufficient free space: 387 extents needed, but only 130 available

lvm也可以缩减,但是一般很少会缩减,具体方法参考:

使用逻辑卷管理器管理灵活存储 lvm

易错问题的出现及方法

// lvm丢失pv设备:unknown device datavg lvm2 a-m 200.00m 200.00m

[root@localhost ~]# pvs

WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter.

WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter.

PV VG Fmt Attr PSize PFree

/dev/sda2 rhel lvm2 a-- 25.80g 0

/dev/sdb lvm2 --- 204.00m 204.00m

/dev/sdc datavg lvm2 a-- 200.00m 200.00m

unknown device datavg lvm2 a-m 200.00m 200.00m

unknown device datavg lvm2 a-m 200.00m 200.00m

// 当想删除未知设备[unknown device]时用下面的命令

[root@localhost ~]# vgreduce --removemissing datavg

WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter.

WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter.

WARNING: Device for PV MQ1kYt-eH2x-ECas-Gmd6-QNje-j8fq-Of62rx not found or rejected by a filter.

WARNING: Device for PV 8MPnLa-2u7t-UJus-XZev-M3wj-zbx0-q3AZwT not found or rejected by a filter.

Wrote out consistent volume group datavg

[root@localhost ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sda2 rhel lvm2 a-- 25.80g 0

/dev/sdb lvm2 --- 204.00m 204.00m

/dev/sdc datavg lvm2 a-- 200.00m 200.00m

[root@localhost ~]#


http://www.niftyadmin.cn/n/3528644.html

相关文章

前端黑科技:美团网页首帧优化实践

前言 自JavaScript诞生以来&#xff0c;前端技术发展非常迅速。移动端白屏优化是前端界面体验的一个重要优化方向&#xff0c;Web 前端诞生了 SSR 、CSR、预渲染等技术。在美团支付的前端技术体系里&#xff0c;通过预渲染提升网页首帧优化&#xff0c;从而优化了白屏问题&…

fastjson 判断是否包含_fastjson如何判断JSONObject和JSONArray

1 package com.fline.aic.utils;23 import org.json.JSONArray;4 import org.json.JSONObject;5 import org.json.JSONTokener;67 public classOrgJsonUtils {89 /**10 * 单层的orgJson判断是否是JSONObject还是JSONArray.11 */12 public static voidsimpleJSONObjectOrgJson()…

mysql优化小点

1。设置栏位名时&#xff0c;不要用关键字。如果用了关键字&#xff0c;尽量避免不必要的时候查询这个字段。sql解析会对该栏位名反复解析&#xff0c;导致查询奇慢转载于:https://www.cnblogs.com/xlban163/p/9968338.html

“2018中国企业互联网CEO峰会”听e签宝金宏洲讲新趋势

很多年前就有“移动互联网的流量红利已经消失”的说法&#xff0c;许多说法认为&#xff0c;一线城市的人都完成了从功能机到智能机的转化&#xff0c;互联网应用的使用习惯也逐步稳定&#xff0c;大量针对一线城市人群的新应用也难以获得用户流量。然后这时候大量三四五线城市…

C++多线程学习(十二、特殊的原子类型atomic_flag,自旋锁)

目录 atomic_flag 自旋锁 自旋锁与互斥锁的不同 1. 等待方式不同&#xff1a; 2. 资源消耗不同&#xff1a; 3. 适用场景不同&#xff1a; 简单案例 其他的原子类型是可以通过is_lock_free()来判定是否无锁 atomic_flag atomic_flag&#xff1a;是无锁的 atomic_flag的…

用法 stl_每日干货丨STL string容器用法

STL string容器用法概述string是C标准库的一个重要的部分&#xff0c;主要用于字符串处理。C的算法库对string类也有着很好的支持&#xff0c;并且string类还和c语言的字符串之间有着良好的接口。string概念string是STL的字符串类型&#xff0c;通常用来表示字符串。而在使用st…

的字符串连接_ABP vNext框架文档解读7-连接字符串

ABP框架的设计是模块化的, 微服务兼容 和 多租户. 同时设计了连接字符串管理来支持这些场景;允许为每个模块设置单独的连接字符串,这样每个模块都可以有自己的物理数据库. 甚至可以将模块配置为使用不同的DBMS.允许为每个租户设置单独的连接字符串使用单独的数据库(在SaaS应用程…

jchdl - RTL实例 - MOS6502 SoC

https://mp.weixin.qq.com/s/H2UBmZa9fpM6_FM2_MucTQ 实现一个SoC作为顶层模块&#xff0c;包含Cpu、Mem两个子模块&#xff0c;并驱动运行。参考链接https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Mos6502/Soc.java1.创建Soc.java, 并生成构造…