首页 > 系统相关 >Linux 下 LVM 的基础使用

Linux 下 LVM 的基础使用

时间:2024-01-02 14:01:45浏览次数:34  
标签:逻辑 卷组 -- 创建 基础 dev Linux LVM 物理

基础概念

Logical Volume Manager (LVM)

LVM 是一种可用在 Linux 内核 的 逻辑分卷管理器。

物理卷 Physical Volume (PV)

一个可供存储LVM的块设备。用于添加到 卷组(PV) 中成为卷组的一部分并将自身的空间添加到卷组供卷组使用。

卷组 Volume Group (VG)

作为存放逻辑卷的容器。多个 物理卷(PV) 的集合,整合多个物理卷的空间用于再分配。

逻辑卷 Logical Volume (LV)

存放在一个卷组中并由物理块组成。是一个类似于物理设备的块设备。在 卷组(VG) 中划出来的一个虚拟卷,可以直接挂在到系统中。

物理块 Physical Extent (PE)

一个卷组中最小的连续区域(默认为4 MiB),多个物理块将被分配给一个 逻辑卷(LV)。你可以把它看成物理卷的一部分。

使用

在 Linux 发行版 中操作 LVM,须先安装 lvm2 包。

创建过程:

  • 创建分区
  • 创建物理卷
  • 创建卷组
  • 将物理卷添加到卷组
  • 在卷组上创建逻辑卷
  • 格式化逻辑卷
  • 将逻辑卷挂载到系统
创建分区

在配置 LVM 前,须先将硬盘分区。 根据个人习惯使用相应命令(如 fdisk 、 cfdisk 、 sfdisk 等)创建分区。

创建物理卷

查询可被用作物理卷的设备

lvmdiskscan

在列出的设备上创建物理卷
该命令在各个设备上创建 LVM 头信息,其中设备可以是磁盘(/dev/sdb)、分区(/dev/sdb1)或环回设备,例如pvcreate /dev/sdb

pvcreate <设备>

查看已创建好的物理卷

pvdisplay
创建卷组

创建完物理卷之后,就需要开始创建卷组了。
首先必须先在其中一个物理卷(PV)创建一个卷组。

开始创建卷组

vgcreate <卷组名> <物理卷>

例如 vgcreate storage /dev/sdb1

让该卷组扩大到其他所有的物理卷

vgextend <卷组名> <物理卷>
vgextend <卷组名> <其它物理卷>

例如 vgextend storage /dev/sdb2 例如 vgextend storage /dev/sdc

创建卷组时也可以一次性添加多个物理卷,例如 vgcreate storage /dev/sdb1 /dev/sdb2 /dev/sdc

用以下命令查看已创建的卷组

vgdisplay
创建逻辑卷

创建完卷组,即可开始创建逻辑卷。
创建卷组

lvcreate -L <卷大小> <卷组名> -n <卷名>

例如 lvcreate -L 10G storage -n document,该命令执行完成后,即可通过 /dev/mapper/storage-document/dev/storage/document 来访问。

你还可以指定一个或多个物理卷来限制 LVM 分配数据空间的位置,仅需把物理卷设备加入到命令中,例如:

lvcreate -L 10G storage -n document /dev/sdb1

如果你想让逻辑卷拥有卷组的所有未使用空间,可以使用以下命令

lvcreate -l +100%free storage -n document

查看已经创建的逻辑卷

lvdisplay
格式化逻辑卷

创建完成逻辑卷你的逻辑卷应该已经在 /dev/mapper//dev/<卷组名> 中了。
如果你无法在以上位置找到它,请使用以下命令来加载模块、并扫描与激活卷组:

modprobe dm-mod
vgscan
vgchange -ay

在使用逻辑卷之前,应当先格式化为对应的分区

mkfs.<类型> /dev/mapper/<卷组名>-<卷名>

例如 mkfs.ext4 /dev/mapper/storage-document,将逻辑卷 /dev/mapper/storage-document 格式化为 Ext4 。

将逻辑卷挂载到系统

格式化完成分区后,即可将对应逻辑卷挂载到系统了

mount <逻辑卷> <挂载点>

例如 mount /dev/mapper/storage-document /usr/document

其他

配置 mkinitcpio

如果你的根文件系统基于LVM,你需要启用适当的 mkinitcpio 钩子,否则你的系统可能无法启动。

  • 若使用基于busybox的initramfs,请启用udev和lvm2。
  • 若使用基于systemd的initramfs,请启用systemd和sd-lvm2。

基于busybox的initramfs ,修改 /etc/mkinitcpio.conf

HOOKS="base udev ... block lvm2 filesystems"

基于systemd的initramfs ,修改 /etc/mkinitcpio.conf

HOOKS=(base systemd ... block sd-lvm2 filesystems)

之后你就可以继续下一步的创建和启用镜像操作了。

相关命令

通用参数
-v|--verbose 显示执行过程
    -y|--yes 跳过创建过程中的确认提示
pvcreate 初始化物理卷以供 LVM 使用
pvcreate <物理卷>
    -f|--force 强制创建物理卷,即使设备已经包含文件系统或者 LVM 元数据
    -M|--metadatatype lvm2 用于指定物理卷元数据的大小
    -u|--uuid <UUID> 用于指定要创建的物理卷的 UUID
    -Z|--zero <y|n> 创建物理卷时填充零
pvchange 更改物理卷的属性
pvchange <参数> <物理卷>
    -a|--all 更改所有物理卷的属性
    -x|--allocatable <y|n> 是否允许分配PE
    -u|--uuid 生成新的UUID
pvresize 调整物理卷大小
pvresize <物理卷>
    --setphysicalvolumesize <大小[m|UNIT]> 用于设置物理卷的新大小
    --reportformat <basic|json> 设置当前报告的输出格式
pvremove 从物理卷中删除LVM标签
pvremove <物理卷>
    -f|--force 强制删除
    --reportformat <basic|json> 设置当前报告的输出格式
pvdisplay 显示物理卷的各种属性
pvdisplay
    -a|--all 显示所有定义的物理卷
    -C|--colon 以冒号分隔每个字段
    -m|--maps 显示物理卷的映射信息
    -s|--short 只显示物理卷的UUID和大小信息
    -v<详细程度>|--verbose=<详细程度> 指定显示的详细程度,范围为1~4
vgcreate 创建卷组
vgcreate <新卷组名> <物理卷> ...
    -A|--autobackup <y|n> 是否自动备份卷组的元数据,默认为y
    -c|--clustered <y|n> 是否创建为一个集群卷组,默认为n
    -l|--maxlogicalvolumes <数字> 卷组上允许创建的最大逻辑卷数
    -p|--maxphysicalvolumes <数字> 卷组中允许添加的最大物理卷数
    -s|--physicalextentsize <大小[m|UNIT]> 卷组上的物理卷的PE大小
    -Z|--zero <y|n> 创建卷组时填充零
vgextend 将物理卷添加到卷组
vgextend <卷组> <物理卷>
vgremove 删除卷组
vgremove <卷组>
vgmerge 合并卷组
vgremove <卷组1> <卷组2>
    -A|--autobackup <y|n> 是否自动备份卷组的元数据,默认为y
    -l|--list 显示合并的卷组名
vgrename 重命名一个卷组
vgrename <卷组> <新卷组名>
lvcreate 创建逻辑卷
创建线性逻辑卷
lvcreate -L|--size <大小[m|UNIT]> <卷组>
    --type linear ] (隐性) 逻辑卷类型
    -l|--extents <数字[百分比]> 以物理块数量设置大小

创建条带化逻辑卷
lvcreate -i|--stripes <条带数量> -L|--size <大小[m|UNIT]> <卷组>
    --type striped (隐性) 逻辑卷类型
    -l|--extents <数字[百分比]> 以物理块数量设置大小
    -I|--stripesize <大小[k|UNIT]> 条带大小

创建一个 RAID1 或 镜像 的逻辑卷
lvcreate -m|--mirrors <镜像数量> -L|--size <大小[m|UNIT]> <卷组>
    --type raid1|mirror (隐性) 逻辑卷类型
    -l|--extents <数字[百分比]> 以物理块数量设置大小
    -I|--stripesize <大小[k|UNIT]> 条带大小

创建 RAID 逻辑卷 (必须使用特定的raid级别,例如raid1).
lvcreate --type raid -L|--size <大小[m|UNIT]> <卷组>
    -l|--extents <数字[百分比]> 以物理块数量设置大小
    -i|--stripes <条带数量>
    -I|--stripesize <大小[k|UNIT]> 条带大小
    -m|--mirrors <镜像数量>

创建 RAID10 逻辑卷
lvcreate -m|--mirrors Number -i|--stripes Number -L|--size <大小[m|UNIT]> <卷组>
    --type raid10 (隐性) 逻辑卷类型
    -l|--extents <数字[百分比]> 以物理块数量设置大小
    -I|--stripesize <大小[k|UNIT]> 条带大小

创建一个写时复制快照逻辑卷 或 原始逻辑卷
lvcreate -s|--snapshot -L|--size <大小[m|UNIT]> <卷组>
    --type snapshot (隐性) 逻辑卷类型
    -l|--extents <数字[百分比]> 以物理块数量设置大小
    -i|--stripes <条带数量>
    -I|--stripesize <大小[k|UNIT]> 条带大小
    -c|--chunksize <大小[k|UNIT]> 块大小

创建一个瘦池
lvcreate --type thin-pool -L|--size <大小[m|UNIT]> <卷组>
    -l|--extents <数字[百分比]> 以物理块数量设置大小
    -i|--stripes <条带数量>
    -I|--stripesize <大小[k|UNIT]> 条带大小
    -T|--thin
    -c|--chunksize <大小[k|UNIT]> 块大小

创建一个缓存池
lvcreate --type cache-pool -L|--size <大小[m|UNIT]> <卷组>
    -l|--extents <数字[百分比]> 以物理块数量设置大小
    -i|--stripes <条带数量>
    -I|--stripesize <大小[k|UNIT]> 条带大小
    -H|--cache
    -c|--chunksize <大小[k|UNIT]> 块大小
    --cachemode writethrough|writeback|passthrough
    --cachepolicy String
    --cachesettings String
    --cachemetadataformat auto|1|2
    --poolmetadatasize Size[m|UNIT]
    --poolmetadataspare y|n

在瘦池中创建逻辑卷
lvcreate -V|--virtualsize Size[m|UNIT] --thinpool LV VG
    --type thin (隐性) 逻辑卷类型
    -T|--thin


# 通用参数
    -a|--activate <y|n|ay> 设置活动状态
    -A|--autobackup <y|n> 是否自动备份元数据
    -C|--contiguous y|n 逻辑卷的连续分配策略
    -M|--persistent y|n
    -j|--major Number
    -k|--setactivationskip y|n
    -K|--ignoreactivationskip
    -n|--name String
    -p|--permission rw|r
    -r|--readahead auto|none|Number
    -W|--wipesignatures y|n
    -Z|--zero y|n
lvchange 更改逻辑卷的属性
lvchange <逻辑卷>
    -C|--contiguous y|n 试图设置或重置连续分配策略
    -p|--permission rw|r 设置权限
    -r|--readahead auto|none|Number 
    -k|--setactivationskip y|n 启用或禁用激活跳过标志
    -Z|--zero y|n 填充零
    -M|--persistent n 使次要号码指定为永久
    -a|--activate y|n|ay 设置活动状态
    -A|--autobackup y|n 是否自动备份元数据
    -f|--force 强制执行
lvremove 从系统中删除逻辑卷
lvremove <逻辑卷>
    -f|--force 强制删除
lvrename 重命名逻辑卷
lvrename [卷组] <逻辑卷> <新逻辑卷名称>
lvresize 调整逻辑卷的大小
lvresize -L|--size <[+|-]大小[m|UNIT]> 逻辑卷
    -l|--extents <[+|-]数字[百分比]>


标签:逻辑,卷组,--,创建,基础,dev,Linux,LVM,物理
From: https://blog.51cto.com/u_16488918/9069096

相关文章

  • Linux系列之不解压直接查看gzip压缩日志
    Linux系列之不解压直接查看gzip压缩日志文件在Linux服务器上,日志文件经常会用gzip格式进行压缩,以节省磁盘,对于这种压缩文件,需要解压?然后再用cat、grep这些命令进行查看?其实不需要,Linux系统提供了zgrep、zcat这些命令。可以支持不解压gzip文件,直接查看常用命令zcat:cat查看压缩文件z......
  • 音视频编码基础知识
    视频编码指的是通过特定的压缩技术将一种视频格式文件转换成另一种视频格式文件的过程。常见的视频编码:MPEG类MPEG1(VCD等使用),MPEG2(DVD等使用),MPEG4(DivX,XviD是它的变体),MPEG4AVC等H.26x类H.261,H.262,H.263,H.263+,H.263++,H.264,H.265常见的音频编码:MPEGAudioLayer1/2,MPE......
  • 【练习】爬虫-基础2 - GlidedSky 源码参考!
    前面本渣渣分享过爬虫-基础1-GlidedSky,这篇就来分享爬虫-基础2,希望对你有帮助吧,当然仅记录分享,为了更有帮助,这里升级了一下爬虫难度,采用了多线程。本身相对于基础1,基础2提升了一下难度,从单页爬取提升到分页爬取,分成了1000个页面,需要请求一千次,而网页结构没有变化,很典型的Boo......
  • 【数据库】浅析DDL的基础操作
    本文的主要围绕着下面这些问题展开的,在阅读之前可以先自己思考一下问题的答案是什么定义数据库和数据表的语法是什么?定义数据表时,都有哪些约束?设计数据库时,有哪些需要注意的点?定义数据库的结构和数据表的结构主要使用数据库的DDL语言,DDL的全称是DataDefinitionLanguage,中文是数据......
  • 【计算机组成原理】你知道计算的基础结构有哪些吗?
    常见的个人计算机包括哪些组成部分?冯诺依曼体系结构包括哪些组成部分?个人计算机当我们自己组装一台计算机时,需要购买下面的这些东西:CPU、内存、主板、显卡和硬盘。下面简单的说说各部分。CPU,我们经常说是处理器,这个实际的全称是中央处理器(CentralProcessingUnit)。内存(Memory),计算......
  • 【数据库】基础概念以及主流的DBMS介绍
    最近看了一些数据库的基础知识,这里主要涉及三个问题:DB、DBS和DBMS都是什么意思?主流的DBMS都有哪些,各自都有哪些特点?SQL语言都有哪些分类DB、DBS和DBMSDB(DataBase):就是数据库。数据库表示存储数据的集合,可以理解为多个数据表DBMS(DataBaseManagementSystem):数据库管理系统,可以对......
  • Linux系统命令和使用技巧
    1、处理特殊的文件名假设Linux系统中有一个文件名叫“-ee”,如果我们想对它进行操作,例如要删除它,按照一般的删除方法在命令行中输入rm-ee命令,界面会提示我们是“无效选项”(invalidoption),原来由于文件名的第一个字符为“-”,Linux把文件名当作选项了,我们可以使用“--”符号来解决这......
  • Linux系统目录结构介绍
    Linux与Windows目录结构对比相信很多读者已经熟悉了Linux的目录结构,图6-1可以进一步帮助读者对比Windows和Linux这两个系统的结构,不太了解Linux系统目录结构的读者,通过图6-1也可快速理解。Windows的目录形式为c:\windows\,路径分隔符是“\”(撬棍,反斜线),D、E等盘的目录结构与之类似。Li......
  • RockyLinux配置AutoFs自动挂载
    一、AutoFS简介Autofs是一个自动挂载文件系统的工具,它可以自动地在需要时挂载文件系统并在不需要时卸载。与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。换句话说,将挂载信息填入/etc/fstab文件后,系统在......
  • Linux 静态链接和动态链接相关知识点总结
    staticlibrary和sharedlibrary的区别静态库(StaticLibrary)和共享库(SharedLibrary)是两种不同的库的形式,它们在链接和加载的方式上有一些关键的区别。静态库(StaticLibrary):文件格式:静态库的代码和数据在编译时被复制到程序的可执行文件中。文件扩展名:在大多数系统中,静态......