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轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
阿里云实时数仓实战 - 用户行为数仓搭建
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3&nbsp;)前置知识要求:熟练掌握 SQL 语法熟悉 Linux 命令,对 Hadoop 大数据体系有一定的了解 &nbsp; 课程大纲 第一章&nbsp;了解数据仓库概念 初步了解数据仓库是干什么的 第二章&nbsp;按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章&nbsp;数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章&nbsp;采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章&nbsp;用户行为数据仓库 严格按照企业的标准开发 第六章&nbsp;搭建业务数仓理论基础和对表的分类同步 第七章&nbsp;业务数仓的搭建&nbsp; 业务行为数仓效果图&nbsp;&nbsp;
目录
相关文章
|
10月前
|
存储 监控 Linux
Linux: 检测磁盘坏块 你得会吧!
Linux: 检测磁盘坏块 你得会吧!
696 19
Linux: 检测磁盘坏块 你得会吧!
|
9月前
|
Linux
在线对Linux进行磁盘扩容的技术指南。
综上所述,Linux磁盘扩容的过程,重要的不仅是技术,更是对每一步骤的深刻理解和投入的爱心。只要手握正确的工具,我们不仅能满足"孩子"的成长需求,还能享受其中的乐趣和成就。
582 10
|
10月前
|
监控 固态存储 Linux
如何判断Linux磁盘是SSD还是HDD?
总的来说,判断磁盘是SSD还是HDD并不复杂,只需要使用正确的命令和方法,就可以轻松得到结果。希望这些信息对你有所帮助,如果你还有其他问题,欢迎随时提问。
1166 15
|
11月前
|
Linux
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
1185 10
|
Ubuntu Linux 网络安全
Linux磁盘挂接教程
Linux磁盘挂接教程
272 14
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
229 0
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控三
Linux系统命令与网络,磁盘和日志监控三
217 0
|
5月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
640 1
二、Linux文本处理与文件操作核心命令
|
5月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
411 137
|
5月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
984 57