linux下的lvm软件制作过程演示

之前一篇文章介绍了lvm,今天在这里演示制作lvm的过程。lvm的制作过程有以下几个步骤:

磁盘分区

使用分区制作pv

以pv建立vg

从vg分割出lv

格式化lv并挂载到目录中使用

接下来,我们来完成上面的流程吧。

分区

首先,我们看看磁盘的分区情况。

# lsblkNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda      8:0    0   40G  0 disk ├─sda1   8:1    0    2M  0 part ├─sda2   8:2    0    1G  0 part /boot├─sda3   8:3    0    1G  0 part [SWAP]├─sda4   8:4    0   10G  0 part /└─sda5   8:5    0  100M  0 part sdb      8:16   0    1G  0 disk sdc      8:32   0    1G  0 disk sdd      8:48   0    1G  0 disk sde      8:64   0    1G  0 disk

可以看到,我的主机上面有5块磁盘,除了sda这块磁盘,其他的磁盘还没有分区,另外sda这块磁盘也还有剩余空间。现在,把另外4块磁盘也分区。分区使用fdisk或gdisk工具,具体过程这里就省略了。分完区后信息如下:

# lsblkNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda      8:0    0   40G  0 disk ├─sda1   8:1    0    2M  0 part ├─sda2   8:2    0    1G  0 part /boot├─sda3   8:3    0    1G  0 part [SWAP]├─sda4   8:4    0   10G  0 part /└─sda5   8:5    0  100M  0 part sdb      8:16   0    1G  0 disk └─sdb1   8:17   0 1023M  0 part sdc      8:32   0    1G  0 disk └─sdc1   8:33   0 1023M  0 part sdd      8:48   0    1G  0 disk └─sdd1   8:49   0 1023M  0 part sde      8:64   0    1G  0 disk └─sde1   8:65   0 1023M  0 part

制作pv

首先,我们需要安装lvm2这个软件。

yum install lvm2

关于pv有几个相关的命令:

pvscan 查看系统上的pv

pvdisplay 列出pv的使用情况

pvcreate 制作pv

pvremove 删除该pv,即使某分区没有了pv属性

现在我们来使用分区来制作pv。

用法:pvcreate 分区 ……

# pvcreate /dev/sdb1 /dev/sdc1  Physical volume "/dev/sdb1" successfully created.  Physical volume "/dev/sdc1" successfully created.# 这样就制作好了两个pv

下面通过pvscan查看系统上所有的pv

# pvscan  PV /dev/sdc1                      lvm2 [1023.00 MiB]  PV /dev/sdb1                      lvm2 [1023.00 MiB]  Total: 2 [<2.00 GiB] / in use: 0 [0   ] / in no VG: 2 [<2.00 GiB]# 共有2个pv,总大小2G左右,0个pv被使用

查看某个pv的使用情况:pvdispaly [分区名]

# pvdisplay /dev/sdb1  "/dev/sdb1" is a new physical volume of "1023.00 MiB"  --- NEW Physical volume ---  PV Name               /dev/sdb1  VG Name                 PV Size               1023.00 MiB  Allocatable           NO  PE Size               0     Total PE              0  Free PE               0  Allocated PE          0  PV UUID               6sl1Eg-S6BJ-1QYX-NAFs-9dIB-zEKN-jz7lYM

然后,我们再将这两个pv给删除掉

# pvremove /dev/sd{b,c}1  Labels on physical volume "/dev/sdb1" successfully wiped.  Labels on physical volume "/dev/sdc1" successfully wiped.

最后,我们还是制作3个pv吧

# pvcreate /dev/sd{b,c,d}1  Physical volume "/dev/sdb1" successfully created.  Physical volume "/dev/sdc1" successfully created.  Physical volume "/dev/sdd1" successfully created.

制作vg

vg也有几个相关的命令,如下:

vgcreate 制作vg,这个命令是这些命令中最复杂的。

vgscan 浏览系统上的vg

vgremove 删除一个vg

vgdisplay 查看vg的使用情况

vgextend 对vg扩容,即增加pv

vgreduce 从vg移除pv

首先看制作vg的命令使用:

芦笋演示 芦笋演示

一键出成片的录屏演示软件,专为制作产品演示、教学课程和使用教程而设计。

芦笋演示 34 查看详情 芦笋演示

vgcreate [-s N[m|g|t]] vg名称 pv名称

选项与参数:

-s 后接大小,m、g、t大小写均可,用来设置pe大小。省略该参数,则使用默认大小,一般为4M

vg名称: 和pv过程不一样,这里需要自定义vg的名称,

pv名称, 由哪几个pv制作vg。

下面来制作vg

# vgcreate vgwww /dev/sd{b,c,d}1   Volume group "vgwww" successfully created

浏览vg有哪些

# vgscan   Reading volume groups from cache.   Found volume group "vgwww" using metadata type lvm2

查看vg的相关信息

# vgdisplay   --- Volume group ---  VG Name               vgwww  System ID               Format                lvm2  Metadata Areas        3  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                3  Act PV                3  VG Size               <2.99 GiB  PE Size               4.00 MiB  Total PE              765  Alloc PE / Size       0 / 0     Free  PE / Size       765 / <2.99 GiB  VG UUID               pd3HIi-NnES-DsdO-d35L-qoJB-OrwI-vkhfqV

现在我们对vgwww进行扩容操作

# vgextend vgwww /dev/sde1  Volume group "vgwww" successfully extended

制作lv

关于lv也有一些相关命令,分别如下:

lvcreate :制作lv

lvscan :查询系统上的lv

lvdisplay :显示lv的状况

lvextend :增加lv容量

lvreduce :减少lv容量

lvremove :删除一个lv

lvresize :对lv容量大小进行调整

下面我们来看制作lv的命令

lvcreate [-L N[m/g/t]] [-n lv名称] vg名称

lvcreate [-l N] [-n lv名称] vg名称

选项参数:

-L 后接容量,设置lv的大小

-l 后接使用多少个pe的数量

可以不设置lv名称,那么系统会自动设置lv名称

# lvcreate -L 1G -n lvwww vgwww  Logical volume "lvwww" created.# lvscan  ACTIVE            '/dev/vgwww/lvwww' [1.00 GiB] inherit

下面再来演示如何给lv进行扩容增大1G,扩容要使用lvresize命令了。首先,确定vg剩余空间大于1G,然后进行扩容

# vgdisplay vgwww  --- Volume group ---  VG Name               vgwww  System ID               Format                lvm2  Metadata Areas        4  Metadata Sequence No  5  VG Access             read/write  VG Status             resizable  MAX LV                0  Cur LV                1  Open LV               0  Max PV                0  Cur PV                4  Act PV                4  VG Size               3.98 GiB  PE Size               4.00 MiB  Total PE              1020  Alloc PE / Size       256 / 1.00 GiB  Free  PE / Size       764 / 2.98 GiB  <=== 还有剩余3G的空间  VG UUID               pd3HIi-NnES-DsdO-d35L-qoJB-OrwI-vkhfqV    # lvresize -L +1G /dev/vgwww/lvwww   Size of logical volume vgwww/lvwww changed from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).  Logical volume vgwww/lvwww successfully resized.

格式化、挂载

这个/dev/vgwww/lvwww就相当于一个分区,想要使用该分区就需要先进行格式化,然后挂载使用

# mkfs.xfs /dev/vgwww/lvwww# blkid……/dev/mapper/vgwww-lvwww: UUID="fcbff612-a169-4542-ad92-6d53abe7b982" TYPE="xfs" # mount /dev/vgwww/lvwww /www[root@localhost ~]# df -h……/dev/mapper/vgwww-lvwww  2.0G   33M  2.0G    2% /www

到此,整个流程就结束了,新的文件系统已经创建完毕了。

更多相关技术文章,请访问linux系统教程栏目!

以上就是linux下的lvm软件制作过程演示的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/270380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月4日 12:02:09
下一篇 2025年11月4日 12:04:35

相关推荐

  • 解决Go语言go get命令中“可执行文件未找到”错误的实用指南

    当使用go语言的`go get`命令获取远程包时,若遇到“exec: “xxx”: executable file not found in %path%”错误,通常意味着系统缺少该远程仓库所依赖的版本控制系统(如mercurial、git、svn)的客户端工具,或者这些工具…

    好文分享 2025年12月16日
    000
  • Go语言中CGO静态链接C库的实践指南

    本文详细阐述了在go语言中使用cgo静态链接c库的方法。核心在于确保go版本为1.1及以上,并正确配置#cgo ldflags指向静态库文件。同时,文章也探讨了如何通过cgo_enabled=0构建完全静态的go可执行文件,以避免运行时对系统动态库的依赖。 引言:CGO与静态链接C库 Go语言通过C…

    2025年12月16日
    000
  • Go语言go get命令:解决“hg”可执行文件未找到错误

    本文旨在解决go语言开发中,使用`go get`命令获取基于mercurial版本控制系统的远程包时,出现的“exec: “hg”: executable file not found in %path%”错误。核心解决方案是安装mercurial客户端,并确保其可执行文件路…

    2025年12月16日
    000
  • 解决Go安装包权限问题:正确配置GOPATH与GOBIN

    本文旨在解决go语言开发中go install命令因权限不足而失败的问题,即go尝试将编译产物安装到goroot而非用户定义的gopath。我们将深入探讨gopath和gobin的正确配置方法,并提供详细的步骤和示例,确保go包能被正确安装到用户可写的路径,从而避免“权限拒绝”错误。 在Go语言开发…

    2025年12月16日
    000
  • Go Cgo项目中使用环境变量灵活配置C/C++库路径

    本文旨在解决go语言c++go编译中,c/c++库路径硬编码导致的环境不兼容问题。通过深入解析cgo编译指示(`// #cgo`)与`cgo_cflags`、`cgo_ldflags`等环境变量的协同工作机制,教程将指导开发者如何利用环境变量动态指定库的包含路径和链接路径,从而实现跨平台、多开发者环…

    2025年12月16日
    000
  • Go Cgo项目中使用环境变量灵活配置外部C库路径

    本文旨在解决Go Cgo项目中外部C库路径硬编码导致的跨环境兼容性问题。我们将深入探讨为何不能直接在`#cgo`指令中使用环境变量,并详细介绍如何通过Go提供的`CGO_CFLAGS`和`CGO_LDFLAGS`等环境变量,在编译时动态指定C库的包含和链接路径,从而实现更灵活、可移植的Go C绑定编…

    2025年12月16日
    000
  • Go Web 服务器无响应问题排查与解决

    本文旨在帮助开发者解决Go Web服务器在本地运行时无法访问的问题。通过分析常见原因,例如监听地址配置错误和潜在的权限、防火墙问题,提供切实可行的解决方案,并强调错误处理的重要性,确保服务器稳定运行。 在开发Go Web应用程序时,有时会遇到服务器启动后无法通过浏览器访问 localhost:808…

    2025年12月16日
    000
  • 解决 Go Get 获取 Mercurial 仓库包时 ’hg’ 未找到的问题

    本文详细阐述了在使用 `go get` 命令获取基于 mercurial (hg) 版本控制系统的 go 语言包时,遇到 ‘exec: “hg”: executable file not found in %path%’ 错误的解决方案。核心在于需要安…

    2025年12月16日
    000
  • Cgo构建中利用环境变量动态管理外部库路径

    本文探讨了在go语言的cgo绑定中,如何解决硬编码外部库路径导致的环境不兼容问题。通过利用cgo_cflags和cgo_ldflags等环境变量,开发者可以动态指定编译和链接所需的库路径,从而避免在cgo指令中固定路径,提高项目的可移植性和跨平台兼容性。文章提供了具体的示例代码和实践指导,帮助开发者…

    2025年12月16日
    000
  • 文件IO操作性能优化实践

    文件IO优化需减少系统调用、提升吞吐量,核心方法包括:使用缓冲流(如Java的BufferedInputStream、C的setvbuf)合并小IO;批量写入与预分配空间以降低磁盘开销;内存映射(mmap/MappedByteBuffer)加速大文件访问;结合异步IO(如io_uring)与多线程并…

    2025年12月16日
    000
  • Golang开发环境安全加固与配置优化方法

    Go开发环境安全需从最小权限、模块校验、静态扫描和构建优化入手。1. 使用非特权账户运行开发工具,减少攻击面;2. 配置可信GOPROXY与GOSUMDB,启用模块完整性验证,定期检查依赖;3. 集成gosec和govulncheck进行安全扫描,结合CI流程提升代码质量;4. 编译时禁用CGO、启…

    2025年12月16日
    000
  • 动态 Kind 在 App Engine 中的索引配置

    本文档介绍了在 Google App Engine (GAE) 中处理动态 Kind 的索引配置问题。由于 GAE 仅允许通过 `index.yaml` 文件和 `appcfg.py` 工具进行索引配置,因此针对 Kind 名称动态生成的情况,提出了一种通过外部服务器动态生成 `index.yaml…

    2025年12月16日
    000
  • Go语言:使用gofmt进行快速语法检查

    本文详细介绍了在go语言开发中,如何不进行完整项目构建的前提下,快速有效地检查源代码的语法错误。我们将重点探讨`gofmt`工具及其关键的`-e`选项,该选项能够报告代码中的所有语法问题。文章将通过命令行示例演示其用法,并解释如何利用命令的退出状态码来判断语法检查结果,帮助开发者实现高效的代码预检和…

    2025年12月16日
    000
  • Go语言跨平台开发:利用构建约束实现条件编译

    在go语言中开发跨平台应用时,经常会遇到需要针对特定操作系统或架构编写不同代码逻辑的情况。go语言通过其强大的构建约束(build constraints)机制,提供了一种优雅且原生的解决方案,无需预处理器即可实现条件编译。本文将详细介绍如何利用文件命名约定和文件注释两种方式来管理平台特定的模块,确…

    2025年12月16日
    000
  • Go Web服务器无响应问题排查与解决

    本文旨在帮助开发者解决Go Web服务器无法正常响应请求的问题。通过分析常见原因,并提供修改后的代码示例,帮助开发者确保服务器能够正确监听指定端口,并处理客户端请求,同时提供错误日志记录以便于问题排查。 Go语言编写Web服务器非常简洁高效。然而,在开发过程中,可能会遇到服务器无法正常响应请求的情况…

    2025年12月16日
    000
  • Golang编译器安装与版本管理示例

    Go编译器安装与版本管理可通过手动安装或使用g工具实现。1. 手动安装:下载官方二进制包解压至/usr/local,配置PATH环境变量并验证go version。2. 使用g工具:通过go install获取g工具,执行g list查看可用版本,g install安装指定版本如go1.20,运行时…

    2025年12月16日
    000
  • Go语言中如何高效创建指定大小的零填充文件

    本文详细介绍了在go语言中高效创建指定大小文件的方法,尤其适用于需要预分配磁盘空间并填充逻辑零的场景,如日志系统或磁盘队列。通过使用`os.create`和`file.truncate`函数,开发者可以快速生成大文件,并理解其在文件系统中的行为,包括稀疏文件的概念及相关注意事项。 在开发高性能系统,…

    2025年12月16日
    000
  • Golang跨平台交叉编译环境配置技巧

    Go语言通过设置GOOS和GOARCH环境变量实现跨平台交叉编译,如GOOS=linux GOARCH=arm64生成Linux ARM64版本,配合CGO_ENABLED=0可避免动态依赖,使用脚本可自动化构建多平台二进制文件。 Go语言原生支持跨平台交叉编译,无需依赖第三方工具链即可生成不同操作…

    2025年12月16日
    000
  • 如何使用Golang开发命令行工具

    使用Golang开发命令行工具首选spf13/cobra库,通过cobra init和cobra add创建项目结构与子命令,在root.go和各子命令文件中定义全局或专属参数,利用Run函数实现逻辑,并通过go build或交叉编译生成可执行文件,结合Makefile与GitHub Release…

    2025年12月16日
    000
  • Go并发程序与操作系统进程:htop显示多进程的解析

    go程序在并发运行时,`htop`可能显示多个“轻量级进程”,这常引起误解。本文将阐明操作系统进程、轻量级进程(线程)与go goroutine的区别,解释go运行时如何利用底层线程,并指导如何正确理解和运行go并发程序,避免因监控工具差异导致的困惑,并强调使用`go build`和适当的程序同步机…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信