逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。

LVM使用分层结构,如下图所示。

图中顶部,首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV)。一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷(LV)。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。

LVM测试说明

本文将介绍怎么在linux中创建和管理LVM卷。我们将会分成两个部分。第一个部分,我们首先要在一个硬盘上创建多个逻辑卷,然后将它们挂载在/lvm-mount目录。然后我们将要对创建好的卷调整大小。而第二部分,我们将会从另外一块硬盘增加额外的卷到LVM中。

准备磁盘分区

通过使用fdisk,创建磁盘分区。我们需要创建3个1G分区,注意,并不要求分区的大小一致。同样,分区需要使用‘8e’类型来使他们可用于LVM。

# fdisk /dev/sdb

Command (m for help): n ## 新建

Command action

e extended

p primary partition (1-4)

p ## 主分区

Partition number (1-4): 1 ## 分区号

First cylinder (1-1044, default 1): ## 回车用默认的1

Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): +1G ## 大小

Command (m for help): t ## 改变类型

Selected partition 1

Hex code (type L to list codes): 8e ## LVM 的分区代码

Changed system type of partition 1 to 8e (Linux LVM)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# fdisk /dev/sdb

Command(mforhelp):n## 新建

Commandaction

eextended

pprimarypartition(1-4)

p## 主分区

Partitionnumber(1-4):1## 分区号

Firstcylinder(1-1044,default1):## 回车用默认的1

Lastcylinder,+cylindersor+size{K,M,G}(1-1044,default1044):+1G## 大小

Command(mforhelp):t## 改变类型

Selectedpartition1

Hexcode(typeLtolistcodes):8e## LVM 的分区代码

Changedsystemtypeofpartition1to8e(LinuxLVM)

重复上面的操作来创建其他两个分区。分区创建完成后,我们应该有类似如下的输出:

# fdisk -l

Device Boot Start End Blocks Id System

/dev/sdb1 1 132 1060258+ 8e Linux LVM

/dev/sdb2 133 264 1060290 8e Linux LVM

/dev/sdb3 265 396 1060290 8e Linux LVM

1

2

3

4

5

# fdisk -l

DeviceBootStartEndBlocksIdSystem

/dev/sdb111321060258+8eLinuxLVM

/dev/sdb213326410602908eLinuxLVM

/dev/sdb326539610602908eLinuxLVM

准备物理卷(PV)

刚创建的分区是用来储存物理卷的。LVM可以使用不同大小的物理卷。

# pvcreate /dev/sdb1

# pvcreate /dev/sdb2

# pvcreate /dev/sdb3

1

2

3

# pvcreate /dev/sdb1

# pvcreate /dev/sdb2

# pvcreate /dev/sdb3

使用下列命令检查物理卷的创建情况。下面截取部分输出。”/dev/sdb2″是一个新的”1.01 GiB”物理卷。

# pvdisplay

--- NEW Physical volume ---

PV Name /dev/sdb2

VG Name

PV Size 1.01 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID jszvzz-ENA2-g5Pd-irhV-T9wi-ZfA3-0xo092

1

2

3

4

5

6

7

8

9

10

11

# pvdisplay

---NEWPhysicalvolume---

PVName/dev/sdb2

VGName

PVSize1.01GiB

AllocatableNO

PESize0

TotalPE0

FreePE0

AllocatedPE0

PVUUIDjszvzz-ENA2-g5Pd-irhV-T9wi-ZfA3-0xo092

使用下列命令可以删除物理卷。

# pvremove /dev/sdb1

1

# pvremove /dev/sdb1

准备卷组(VG)

下列命令用来创建名为’volume-group1′的卷组,使用/dev/sdb1, /dev/sdb2 和 /dev/sdb3创建。

# vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3

--- Volume group ---

VG Name volume-group1

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 3.02 GiB

PE Size 4.00 MiB

Total PE 774

Alloc PE / Size 0 / 0

Free PE / Size 774 / 3.02 GiB

VG UUID bwd2pS-fkAz-lGVZ-qc7C-TaKv-fFUC-IzGNBK

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3

---Volumegroup---

VGNamevolume-group1

SystemID

Formatlvm2

MetadataAreas3

MetadataSequenceNo1

VGAccessread/write

VGStatusresizable

MAXLV0

CurLV0

OpenLV0

MaxPV0

CurPV3

ActPV3

VGSize3.02GiB

PESize4.00MiB

TotalPE774

AllocPE/Size0/0

FreePE/Size774/3.02GiB

VGUUIDbwd2pS-fkAz-lGVZ-qc7C-TaKv-fFUC-IzGNBK

从输出中,我们可以看见卷组的使用量/总量。物理卷给卷组提供空间。只要在这个卷组中还有可用空间,我们就可以随意创建逻辑卷。

使用下列命令删除卷组

# vgremove volume-group1

1

# vgremove volume-group1

创建逻辑卷(LV)

下列命令创建一个名为’1v1′、大小为100MB的逻辑卷。我们使用小分区减少执行时间。这个逻辑卷使用之前创建的卷组的空间。

# lvcreate -L 100M -n lv1 volume-group1

1

# lvcreate -L 100M -n lv1 volume-group1

逻辑卷可使用lvdisplay命令查看。

# lvdisplay

--- Logical volume ---

LV Name /dev/volume-group1/lv1

VG Name volume-group1

LV UUID YNQ1aa-QVt1-hEj6-ArJX-I1Q4-y1h1-OFEtlW

LV Write Access read/write

LV Status available

# open 0

LV Size 100.00 MiB

Current LE 25

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 253:2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# lvdisplay

---Logicalvolume---

LVName/dev/volume-group1/lv1

VGNamevolume-group1

LVUUIDYNQ1aa-QVt1-hEj6-ArJX-I1Q4-y1h1-OFEtlW

LVWriteAccessread/write

LVStatusavailable

# open                 0

LVSize100.00MiB

CurrentLE25

Segments1

Allocationinherit

Readaheadsectorsauto

-currentlysetto256

Blockdevice253:2

现在逻辑卷已经准备好了,我们可以格式化和挂载逻辑卷,就像其它ext2/3/4分区一样!

# mkfs.ext4 /dev/volume-group1/lv1

# mkdir /lvm-mount

# mount /dev/volume-group1/lv1 /lvm-mount/

1

2

3

# mkfs.ext4 /dev/volume-group1/lv1

# mkdir /lvm-mount

# mount /dev/volume-group1/lv1 /lvm-mount/

一旦逻辑卷挂载,我们就可以到挂载点 /lvm-mount/ 上读写了。要创建和挂载其它的逻辑卷,我们重复这个过程。

最后,使用lvremove我们可以删除逻辑卷。

# umount /lvm-mount/

# lvremove /dev/volume-group1/lv1

1

2

# umount /lvm-mount/

# lvremove /dev/volume-group1/lv1

扩展一个LVM卷

调整逻辑卷大小的功能是LVM最有用的功能。这个部分会讨论我们怎么样扩展一个存在的逻辑卷。下面,我们将会扩展先前创建的逻辑卷‘lv1’扩大到200MB。

注意,调整逻辑卷大小之后,也需要对文件系统调整大小进行匹配。这个额外的步骤各不相同,取决于创建文件系统的类型。在本文中,我们使用’lv1′创建了ext4类型的文件系统,所以这里的操作是针对ext4文件系统的。(ext2/3文件系统也类同)。命令的执行顺序是很重要的。

首先,我们卸载掉lv1卷

# umount /lvm-mount/

1

# umount /lvm-mount/

然后,设置卷的大小为200M

# lvresize -L 200M /dev/volume-group1/lv1

1

# lvresize -L 200M /dev/volume-group1/lv1

接下来,检查磁盘错误

# e2fsck -f /dev/volume-group1/lv1

1

# e2fsck -f /dev/volume-group1/lv1

运行以下命令扩展文件系统以后,ext4信息就更新了。

# resize2fs /dev/volume-group1/lv1

1

# resize2fs /dev/volume-group1/lv1

现在,这个逻辑卷应该已经扩展到200MB了。我们检查LV的状态来验证。

# lvdisplay

--- Logical volume ---

LV Name /dev/volume-group1/lv1

VG Name volume-group1

LV UUID 9RtmMY-0RIZ-Dq40-ySjU-vmrj-f1es-7rXBwa

LV Write Access read/write

LV Status available

# open 0

LV Size 200.00 MiB

Current LE 50

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 253:2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# lvdisplay

---Logicalvolume---

LVName/dev/volume-group1/lv1

VGNamevolume-group1

LVUUID9RtmMY-0RIZ-Dq40-ySjU-vmrj-f1es-7rXBwa

LVWriteAccessread/write

LVStatusavailable

# open                 0

LVSize200.00MiB

CurrentLE50

Segments1

Allocationinherit

Readaheadsectorsauto

-currentlysetto256

Blockdevice253:2

现在,这个逻辑卷可以再次挂载,同样这个方法也可用于其他分区。

缩减一个LVM卷

这章节介绍缩减LVM卷大小的方法。命令的顺序同样重要。并且,下列命令对ext2/3/4文件系统同样有效。

注意减少逻辑卷的大小值若小于储存的数据大小,存储在后面的数据会丢失。

首先,卸载掉卷。

# umount /dev/volume-group1/lv1

1

# umount /dev/volume-group1/lv1

然后,检测磁盘错误

# e2fsck -f /dev/volume-group1/lv1

1

# e2fsck -f /dev/volume-group1/lv1

接下来缩小文件系统,更新ext4信息。

# resize2fs /dev/volume-group1/lv1 100M

1

# resize2fs /dev/volume-group1/lv1 100M

完成以后,减少逻辑卷大小

# lvresize -L 100M /dev/volume-group1/lv1

1

# lvresize -L 100M /dev/volume-group1/lv1

WARNING: Reducing active logical volume to 100.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv1? [y/n]: y Reducing logical volume lv1 to 100.00 MiB Logical volume lv1 successfully resized

最后,验证调整后的逻辑卷大小。

# lvdisplay

--- Logical volume ---

LV Name /dev/volume-group1/lv1

VG Name volume-group1

LV UUID 9RtmMY-0RIZ-Dq40-ySjU-vmrj-f1es-7rXBwa

LV Write Access read/write

LV Status available

# open 0

LV Size 100.00 MiB

Current LE 25

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 253:2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# lvdisplay

---Logicalvolume---

LVName/dev/volume-group1/lv1

VGNamevolume-group1

LVUUID9RtmMY-0RIZ-Dq40-ySjU-vmrj-f1es-7rXBwa

LVWriteAccessread/write

LVStatusavailable

# open                 0

LVSize100.00MiB

CurrentLE25

Segments1

Allocationinherit

Readaheadsectorsauto

-currentlysetto256

Blockdevice253:2

转自:http://xmodulo.com/2014/05/use-lvm-linux.html

译文:http://blog.jobbole.com/71858/

linux lvm 查看,Linux LVM 详解相关推荐

  1. linux mysql 查看缓存_详解MySQL查询缓存

    查询缓存是指存储使用SELECT语法查询到的返回到客户端的文本.当相同的请求再次发生时,会从查询缓存中获取数据,而非再执行一遍查询.查询缓存是共享Session会话的,所以一个客户端的请求可能与另一个 ...

  2. linux怎么查看硬件信息详解

    一.整机信息: 1.1 整机制造商:dmidecode -t system  中的 Manufacturer 1.2 整机型号:dmidecode -t system  中的 Product Name ...

  3. 使用ls命令查看Linux的目录结构,linux ls命令查看目录文件详解

    首页 > Linux教程 > 常用命令 > ls 查看目录文件 linux ls命令查看目录文件详解 linux中ls命令用来查看目录中的所有文件和子目录,可选的参数比较多,本文筛选 ...

  4. ceph存储原理_赠书 | Linux 开源存储全栈详解——从Ceph到容器存储

    // 留言点赞赠书我有书,你有故事么?留言说出你的存储故事留言点赞前两名,免费送此书截止日期12.27号12.30号公布名单 // 内容简介 本书致力于帮助读者形成有关Linux开源存储世界的细致的拓 ...

  5. Linux操作系统上lsof命令详解

    Linux操作系统上lsof命令详解 2011-10-08 18:31:31 http://xjsunjie.blog.51cto.com/999372/682865 标签:Linux lsof命令 ...

  6. linux脚本日期时间,Linux 日期和时间操作详解

    Linux 日期和时间操作详解 发布时间:2012-11-27 15:10:07   作者:佚名   我要评论 Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Cl ...

  7. Linux账号和权限管理详解(超详细示例操作)!

    Linux账号和权限管理详解 一.用户账号和组账号概述 1.1 Linux基于用户身份对资源访问进行控制 1.2 用户账号 1.3 组账号 二.用户账号文件 2.1 用户账号文件 /etc/passw ...

  8. python定时任务crontab_【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调度 ...

  9. Linux文件读写改权限详解

    Linux文件读写改权限详解 文件的rwx权限 [ r ] [ w ] [ x ] 该文件可读(read) 该文件可修改(write) 该文件可执行(execute) 注意:只有当该文件所在目录有写权 ...

  10. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入Lin ...

最新文章

  1. Codeforces 1209D Cow and Snacks
  2. gdb来调式多线程(转)
  3. httpclient妙用一 httpclient作为客户端调用soap webservice(转)
  4. 66319d电源使用说明书_矿用防爆交换机如何正确安装调试和使用?
  5. mysql属于数据库三级模式_数据库系统的三级模式指的是什么
  6. Vim设置支持鼠标,光标定位,滚轮上下移动
  7. Three.js 基础
  8. 彪马PUMA源代码被盗,称客户数据不受影响
  9. (转)关于同步和异步的理解(ajax网络编程)
  10. IJCAI 2019 融合角色信息的多样性对话生成
  11. mysql 写出高性能sql 防止索引失效总结
  12. Java开发支付宝支付功能
  13. oppo系统android版本下载,oppo手机助手
  14. AI教程之谷歌的新 Imagen 视频从文本生成视频
  15. Qt定时器QTimer使用教程与代码演示
  16. Android 版本号及对应的版本名称
  17. iMindMap12免费下载安装激活教程及如何免费用思维导图学习
  18. vmware 虚拟机启动失败, Intel VT-x 处于禁用状态
  19. 报错:TypeError: Image data of dtype object cannot be converted to float
  20. 关于DDK中的编译知识

热门文章

  1. 计算机概论在线阅读,计算器概论 or 计算机概论
  2. hdu Caocao's Bridges(无向图边双连通分量,找出权值最小的桥)
  3. poj3422 Kaka's Matrix Travels(最小费用最大流问题)
  4. java 持续集成工具_Jenkins-Jenkins(持续集成工具)下载 v2.249.2官方版--pc6下载站
  5. 深度学习编译:MLIR初步
  6. android app应用后台休眠,安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行...
  7. 2021 使用IDEA创建并编写你的第一个Maven项目【图文详解】
  8. DIY 主机 所有AMD IntelCPU及主板
  9. Linux查看系统cpu个数、核心书、线程数
  10. eclipse中项目内存溢出问题