Linux 温习(六): LVM 磁盘(一)

简介: 逻辑卷管理器(Logical volume Manager)是 Linux 系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而 LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的低层架构和布局,就可以实现对硬盘分区的动态调整。

LVM(逻辑卷)概念

逻辑卷管理器(Logical volume Manager)是 Linux 系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而 LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的低层架构和布局,就可以实现对硬盘分区的动态调整。

LVM 就是通过将底层的物理硬盘封装,然后以逻辑卷的方式呈现给上层应用。当我们对底层的物理硬盘进行操作时,不再是针对分区进行操作,而是通过逻辑卷对底层硬盘进行管理操作。

结构

  • 物理卷( Physical Volume)处于 LVM 的最底层,它们可以是实际物理硬盘上的分区、整个物理硬盘或 RAID 设备
  • 卷组(Volume Group)建立在物理卷之上,卷组建立后便可动态添加物理卷到卷组中
  • 逻辑卷(Logical Volume)建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后便可动态地扩展和缩小空间

LVM 的优势

  • 灵活的容量
  • 重新设定存储池大小
  • 在线数据重新定位
  • 方便设备命名

创建 LVM

创建逻辑卷的过程是把若干物理卷整合到一起组成卷组,在卷组上重新划分出新的分区。

首先添加一个 20Gb 硬盘。

创建物理卷(PV)

使用 lsblk 查看块设备

> lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   40G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   39G  0 part
  ├─centos-root 253:0    0 35.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk


使用 pvcreate 创建物理卷PV

> pvcreate /dev/sdb
 Physical volume "/dev/sdb" successfully created.
# 查看是否创建成功
> pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <39.00g  4.00m
  /dev/sdb          lvm2 ---   20.00g 20.00g


使用 pvdisplay 查看详情

> pvdisplay /dev/sdb
  "/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               2M2Is3-ZD7F-lZH0-Ea1o-TAiL-I7S0-xQlXH1


创建卷组(VG)

使用 vgcreate 创建卷组VG,并且此处可以 -s 选项指定PE(LE)的大小,(默认PE大小4M)

> vgcreate datavg /dev/sdb
  Volume group "datavg" successfully created
# 查看是否创建成功
> vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <39.00g   4.00m
  datavg   1   0   0 wz--n- <20.00g <20.00g


使用 vgdisplay 查看详情

> vgdisplay datavg
  --- Volume group ---
  VG Name               datavg
  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               bccduc-FvjJ-yCpe-as1Z-KeQH-W1kg-2WON8u


PE大,读取速度快,但浪费空间。反之,读取速度慢,但节省空间。类似于 socket

创建逻辑卷(LV)

使用 lvcreate 创建LV。

lvcreate -n lvname -L lvsize(M,G) vgname
> lvcreate -n lv1 -L 900M datavg
  Logical volume "lv1" created.
# 查看是否创建成功
> lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <35.12g                                                 
  swap centos -wi-ao----  <3.88g                                                 
  lv1  datavg -wi-a----- 900.00m


使用 lvdisplay 查看详情

> lvdisplay /dev/datavg/lv1
  --- Logical volume ---
  LV Path                /dev/datavg/lv1
  LV Name                lv1
  VG Name                datavg
  LV UUID                FOfx3Z-Nr2j-gjdL-eMSs-7Gu3-ZtLR-ro5zF0
  LV Write Access        read/write
  LV Creation host, time centos-ps, 2023-01-13 17:06:06 +0800
  LV Status              available
  # open                 0
  LV Size                900.00 MiB
  Current LE             225
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2


格式化逻辑卷(LV)

xfs文件系统只支持增大,不支持减小。ext2、ext3、ext4增大减小都支持。

使用 mkfs 格式化逻辑卷

> mkfs.ext4 /dev/datavg/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
57600 inodes, 230400 blocks
11520 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=236978176
8 block groups
32768 blocks per group, 32768 fragments per group
7200 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成


挂载并使用

使用 mount 挂载

> mkdir  /opt/lv1
> mount /dev/datavg/lv1 /opt/lv1
> df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G   16K  1.9G    1% /dev/shm
tmpfs                    1.9G   12M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   36G  9.4G   26G   27% /
/dev/sda1               1014M  195M  820M   20% /boot
vmhgfs-fuse              293G  144G  150G   49% /mnt/hgfs
tmpfs                    378M     0  378M    0% /run/user/1002
tmpfs                    378M     0  378M    0% /run/user/0
/dev/mapper/datavg-lv1   870M  2.3M  807M    1% /opt/lv1


可以看到挂载成功了,但是重启后又需要挂载。

我们可以编辑 /etc/fstab 添加一行 /dev/datavg/lv1 /opt/lv1 ext4 defaults 0 0

> vim /etc/fstab
# /etc/fstab
# Created by anaconda on Thu Jul 28 16:11:47 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=e3727324-7c1e-4dd2-8821-ab4a6fec3316 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/datavg/lv1 /opt/lv1 ext4 defaults 0 0
> mount -a
> df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G   16K  1.9G    1% /dev/shm
tmpfs                    1.9G   12M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   36G  9.4G   26G   27% /
/dev/sda1               1014M  195M  820M   20% /boot
vmhgfs-fuse              293G  144G  150G   49% /mnt/hgfs
tmpfs                    378M     0  378M    0% /run/user/1002
tmpfs                    378M     0  378M    0% /run/user/0
/dev/mapper/datavg-lv1   870M  2.3M  807M    1% /opt/lv1

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
目录
相关文章
|
1月前
|
Linux Shell C语言
【Shell 命令集合 磁盘维护 】Linux 分区管理的工具 sfdisk命令使用教程
【Shell 命令集合 磁盘维护 】Linux 分区管理的工具 sfdisk命令使用教程
30 1
|
1月前
|
Shell Linux API
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
【Shell 命令集合 磁盘维护 】Linux 查找指定目录下的所有符号链接文件 symlinks 命令使用教程
33 1
|
1月前
|
监控 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 交换分区的特殊文件或设备 swapon命令使用指南
【Shell 命令集合 磁盘维护 】Linux 交换分区的特殊文件或设备 swapon命令使用指南
38 1
|
5天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
17天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
21 0
|
1月前
|
存储 缓存 Shell
【Shell 命令集合 磁盘维护 】⭐⭐⭐Linux 将文件系统的缓冲区数据立即写入磁盘 sync 命令使用教程
【Shell 命令集合 磁盘维护 】⭐⭐⭐Linux 将文件系统的缓冲区数据立即写入磁盘 sync 命令使用教程
52 1
|
1月前
|
存储 Linux Shell
【Shell 命令集合 磁盘维护 】Linux 关闭Linux系统中的交换空间 swapoff命令使用教程
【Shell 命令集合 磁盘维护 】Linux 关闭Linux系统中的交换空间 swapoff命令使用教程
29 1
|
8月前
|
Linux Shell KVM
【Linux系统KVM虚拟机实战】LVM逻辑卷之扩展Swap交换分区
【Linux系统KVM虚拟机实战】LVM逻辑卷之扩展Swap交换分区
160 0
|
Linux
11.14 Linux LVM(逻辑卷管理)的删除
创建好 LVM 之后,如果经过一段时间的运行,我们发现 LVM 技术并未像有些人吹嘘的那样为系统的管理和维护工作带来很大的方便,可以手动删除它。
724 0
11.14 Linux LVM(逻辑卷管理)的删除
|
存储 Linux 数据库
11.10 Linux LVM逻辑卷管理机制
我们在实际使用 Linux 服务器的时候,总会有一个让人头疼的问题,随着业务的增加,文件系统负载会越来越大,当到了空间不足的情况时,如果我们还在使用传统的分区方式管理硬盘,就不得不将现有的所有分区全部删除,并重新规划新的存储方案。
116 0
11.10 Linux LVM逻辑卷管理机制