如何在LINUX下使用LVM

如何在LINUX下使用LVM,第1张

LVM是Logical Volume Manager(逻辑卷管理器)的简写,它为主机提供了更高层次的磁盘存储管理能力。LVM可以帮助系统管理员为应用与用户方便地分配存储空间。在LVM管理下的逻辑卷可以按需改变大小或添加移除。另外,LVM可以为所管理的逻辑卷提供定制的命名标识。因此,使用LVM主要是方便了对存储系统的管理,增加了系统的扩展性。

一、准备lvm环境

1.硬盘的准备

添加了一块硬盘/dev/hdb。

准备了三个分区,方案如下:容量为100M,仅为了实验准备。

/dev/hdb1

/dev/hdb2

/dev/hdb3

2.转换分区类型为lvm卷

fdisk /dev/hdb

t转换为lvm卷类型

Device Boot StartEnd Blocks Id System

/dev/hdb11 208 98248+ 8e Linux LVM

/dev/hdb2209 416 98280 8e Linux LVM

/dev/hdb3417 624 98280 8e Linux LVM

然后w保存并且

#partprobe /*使用磁盘分区生效*/

二、lvm创建过程

1.从硬盘驱动器分区中创建物理卷(physical volumes-PV)。

2.从物理卷中创建卷组(volume groups-VG)

3.从卷组中创建逻辑卷(logical volumes-LV),并分派逻辑卷挂载点,其中只有逻辑卷才可以写数据。

lvm的最大的特点就是可以动态的调整分区的大小,并且可以随着分区容量的增长而增加磁盘空间的容量。

LVM配置与创建

三、LVM的物理卷PV

1.相关命令

pvcreate 创建PV

pvscan扫描PV

pvdisplay 显示PV

pvremove 删除PV

partprobe

2.创建物理卷

如果以上容量不够,可以再添加其它分区到物理卷中。

[root@redhat ~]# pvcreate /dev/hdb1 /dev/hdb2

Physical volume “/dev/hdb1″ successfully created

Physical volume “/dev/hdb2″ successfully created

[root@redhat ~]# pvscan

PV /dev/hdb1 lvm2 [95.95 MB]

PV /dev/hdb2 lvm2 [95.98 MB]

Total: 2 [191.92 MB] / in use: 0 [0 ] / in no VG: 2 [191.92 MB]

[root@redhat ~]# pvdisplay

— NEW Physical volume —

PV Name /dev/hdb1

VG Name

PV Size 95.95 MB

Allocatable NO

PE Size (KByte) 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID 2Ni0Tx-oeSy-zGUP-t7KG-Fh22-0BUi-iyPhhQ

— NEW Physical volume —

PV Name /dev/hdb2

VG Name

PV Size 95.98 MB

Allocatable NO

PE Size (KByte) 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID 2XLXfY-V3L2-Mtsl-79U4-ovuJ-YaQf-YV9qHs

四、创建LVM的卷组VG

1.相关命令

vgcreate 创建VG

vgscan 扫描VG

vgdispaly

vgextend

vgreduce

vgchange

vgremove

2.创建逻辑卷VG

[root@redhat ~]# vgcreate vg0 /dev/hdb1 /dev/hdb2

Volume group “vg0″ successfully created

[root@redhat ~]# vgscan

Reading all physical volumes. This may take a while…

Found volume group “vg0″ using metadata type lvm2

[root@redhat ~]# vgdisplay

对于Linux用户而言,在安装一台Linux机器的时候,遇到的问题之一就是给各分区估计和分派足够的硬盘空间。无论对一个正在为服务器寻找空间的系统管理员,还是一个磁盘即将用尽的普通用户来说,这都是一个非常常见的问题。解决的方法通常是使用符号链接,或者一些调整分区大小的工具(比如parted)。但是,这只是一个暂时性的解决办法,不久,我们又会面临同样的问题。

如果你是一个站点的系统管理员,管理着数量众多的、连接在Internet之上的服务器,那么你每关机一分钟,都会给公司带来很大损失。此外,使用这种方法,在修改了分区表之后,每一次都得重新启动系统。LVM(逻辑卷管理程序)可以帮助我们解决这些问题。

LVM简介

Linux LVM可以使管理工作更加轻松。相对于硬盘和分区,LVM是从更高的层次来看待存储空间的。在使用LVM之前,先来看一些将要使用到的相关概念。

物理卷

物理卷是指硬盘分区或者从逻辑上看起来和硬盘分区类似的设备(比如RAID设备)。

逻辑卷

一个或者多个物理卷组成一个逻辑卷。对于LVM而言,逻辑卷类似于非LVM系统中的硬盘分区。逻辑卷可以包含一个文件系统(比如/home或者/usr)。

卷组

一个或者多个逻辑卷组成一个卷组。对于LVM而言,卷组类似于非LVM系统中的物理硬盘。卷组把多个逻辑卷组合在一起,形成一个可管理的单元。

document.body.clientWidth-450) {this.height=(document.body.clientWidth-450)*this.height/this.widththis.width=document.body.clientWidth-450}" border="0">

LVM工作方式

下面来看一看LVM到底是怎样工作的。每一个物理卷都被分成几个基本单元,即所谓的PE(Physical Extents)。PE的大小是可变的,但是必须和其所属卷组的物理卷相同。在每一个物理卷里,每一个PE都有一个惟一的编号。PE是一个物理存储里可以被LVM寻址的最小单元。

每一个逻辑卷也被分成一些可被寻址的基本单位,即所谓的LE(Logical Extents)。在同一个卷组中,LE的大小和PE是相同的,很显然,LE的大小对于一个卷组中的所有逻辑卷来说都是相同的。

在一个物理卷中,每一个PE都有一个惟一的编号,但是对于逻辑卷这并不一定是必需的。这是因为当这些PE ID号不能使用时,逻辑卷可以由一些物理卷组成。因此,LE ID号是用于识别LE以及与之相关的特定PE的。正如前面所提到的,LE和PE之间是一一对应的。每一次存储区域被寻址访问或者LE的ID被使用,都会把数据写在物理存储设备之上。

你可能会觉得奇怪,有关逻辑卷和逻辑卷组的所有元数据都存到哪儿去了。类似的在非LVM系统中,有关分区的数据是存储在分区表中,而分区表被存储在了每一个物理卷的起始位置。VGDA(卷组描述符区域)功能就好象是LVM的分区表,它存储在每一个物理卷的起始处。

VGDA由以下信息组成:

·一个PV描述符

·一个VG描述符

·LV描述符

·一些PE描述符

当系统启动LV时,VG被激活,并且VGDA被加载至内存。VGDA帮助识别LV的实际存储位置。当系统想要访问存储设备时,由VGDA建立起来的映射机制就用于访问实际的物理位置来执行I/O *** 作。

开始工作

下面具体看一看如何使用LVM。

第一步:配置内核。在安装LVM之前,内核之中应该有LVM模块,可以使用以下的步骤来完成:

#cd /usr/src/linux

#make menuconfig

选择Multi-device Support (RAID and LVM)子菜单,选中以下两个选项:

[*] Multiple devices driver support (RAID and LVM)

<*>Logical volume manager (LVM) Support.

复制代码

注:如果在安装Linux系统时已经安装了LVM相关软件包,上面几步 *** 作可以省略掉,直接到第二步.

第二步:检查驱动器上空闲硬盘空间的总量。这可以通过以下命令来未完成:

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hda1 3.1G 2.7G 398M 87% /

/dev/hda2 4.0G 3.2G 806M 80% /home

/dev/hda5 2.1G 1.0G 1.1G 48% /var

第三步:在硬盘上创建一个LVM分区。使用fdisk或者其它的分区工具来创建一个LVM分区。Linux LVM的分区类型为8e。

# fdisk /dev/hda

press p (to print the partition table) and n (to create a new partition)

第四步:创建一个物理卷。下述命令将在分区的起始处创建一个卷组描述符:

# pvcreate /dev/hda6

pvcreate -- -physical volume "/dev/hda6" successfully created

# pvcreate /dev/hda7

pvcreate- -- physical volume "/dev/hda7" successfully created

第五步:创建一个卷组。通过下面的方法创建一个新的卷组,并且添加两个物理卷:

# vgcreate test_lvm /dev/hda6 /dev/hda7

vgcreate- -- INFO: using default physical extent size 4 MB

vgcreate- -- INFO: maximum logical volume size is 255.99 Gigabyte

vgcreate- -- doing automatic backup of volume group "test_lvm"

vgcreate- -- volume group "test_lvm" successfully created and activated

上述命令将创建一个名为test_lvm,包含有/dev/hda6和/dev/hda7两个物理卷的卷组。使用下面命令来激活卷组:

# vgchange -ay test_lvm

使用“vgdisplay”命令来查看所建立卷组的细节信息。

# vgdisplay

--- Volume group ---

VG Name test_lvm

VG Access read/write

VG Status available/resizable

VG # 0

MAX LV 256

Cur LV 1

Open LV 0

MAX LV Size 255.99 GB

Max PV 256

Cur PV 2

Act PV 2

VG Size 3.91 GB

PE Size 4 MB

Total PE 1000

Alloc PE / Size 256 / 1 GB

Free PE / Size 744 / 2.91 GB

VG UUID T34zIt-HDPs-uo6r-cBDT-UjEq-EEPB-GF435E

第六步:创建一个逻辑卷。使用lvcreate命令在卷组中创建一个逻辑卷:

# lvcreate -L2G -nlogvol1 test_lvm

第七步:创建文件系统。在该逻辑卷上选择使用reiserfs日志文件系统:

# mkreiserfs /dev/test_lvm/logvol1

使用mount命令来加载新创建的文件系统。

# mount -t reiserfs /dev/test_lvm/logvol1 /mnt/lv1

第八步:在/etc/fstab和/etc/lilo.conf中添加一个入口。在/etc/fstab中加入以下入口,在启动时加载文件系统:

/dev/test_lvm/logvol1 /mnt/lv1 reiserfs defaults 1 1

如果没有覆盖原来的内核,那么拷贝一份重新编译后的内核,并且在启动时选择是否使用LVM。下面是LILO文件的内容:

image = /boot/lvm_kernel_image

label = linux-lvm

root = /dev/hda1

initrd = /boot/init_image

ramdisk = 8192

添加以上内容后,使用以下命令重新加载LILO:

#/sbin/lilo

第九步:修改逻辑卷的大小。可以使用lvextend命令方便地修改逻辑卷的大小,增加逻辑卷大小的方法如下:

# lvextend -L 1G /dev/test_lvm/logvol1

lvextend -- extending logical volume "/dev/test_lvm/logvol1" to 3GB

lvextend -- doing automatic backup of volume group "test_lvm"

lvextend -- logical volume "/dev/test_lvm/logvol1" successfully extended

类似的,减小逻辑卷大小的方法如下:

# lvreduce -L-1G /dev/test_lvm/lv1

lvreduce -- -Warning: reducing active logical volume to 2GB

lvreduce- -- This may destroy your data (filesystem etc.)

lvreduce -- -do you really want to reduce "/dev/test_lvm/lv1"? [y/n]: y

lvreduce- -- doing automatic backup of volume group "test_lvm"

lvreduce- -- logical volume "/dev/test_lvm/lv1" successfully reduced

复制代码

总结

从上面的讨论可以看到,LVM具有很好的可扩展性,并且使用起来很直观。一旦卷组建立起来以后,根据需求调整每一个逻辑卷的大小也非常容易。

LVM *** 作的相关命令:

fdisk -l :查看系统中都认到了那些物理硬盘

pvdisplay:查看系统中已经创建好的物理卷

pvcreate:创建一个新的物理卷

pvremove:删除一个物理卷(也就是从物理卷中删除一个LVM标签)

vgdisplay:查看系统中的卷组

vgcreate:创建一个新的卷组

vgreduce:从卷组中删除一个物理卷(也就是缩小卷组)

vgremove:删除一个卷组

lvdisplay:查看系统中已经创建好的逻辑卷

lvcreate:创建一个新的逻辑卷

lvreduce:缩小逻辑卷(也就是从一个逻辑卷中减少一些LE)

lvremove:从系统中删除一个逻辑卷

mkfs:基于逻辑卷创建一个相应类型的文件系统

mkdir -p $mount_piont:创建一个挂载目录

创建好的文件系统位于:

/dev/$create_vg_name/$lv_name

mount /dev/$create_vg_name/$lv_name $mount_piont:挂载文件系统

vgscan:读取系统中创建的所有卷组

vgchange -a y :激活所有卷组 (开机执行,redhat可在/etc/rc.d/rc.sysinit系统启动初始化脚本里可以找到)

vgchange -a n :关闭所有卷组(提示:必须在umount所有的文件系统后,才能成功执行

裸设备使用:

1.先lvreate

2. raw /dev/raw/raw0 /dev/mapper/vgname-lvname

3.修改 /etc/sysconfig/rawdevices,添加:

/dev/raw/raw0 /dev/mapper/vgname-lvname

4.执行命令service rawdevices restart,使得/etc/sysconfig/rawdevices文件中的裸设备配置生效

5.执行/sbin/schkconfig rawdevices on 使得系统重启后,裸设备能自动加载

6.修改裸设备的属主,使得相应权限的用户对裸设备有读写权限

chown -R owner:group /dev/raw/raw0

7.将修改裸设备属主修改命令加入到系统启动执行脚本/etc/rc.local中,使得系统启动后裸设备的属主保持不变.

这是 Linux 中 LVM(逻辑卷管理)的完整初学者指南。

在本教程中,您将了解 LVM 的概念、它的组件以及为什么要使用它。

我不会仅限于理论上的解释,我还将展示在 Linux 中创建和管理 LVM 的动手示例。

简而言之,我将为您提供在现实世界中开始使用 LVM 所需的所有必要信息。

LVM 代表逻辑卷管理。这是管理存储系统的另一种方法,而不是传统的基于分区的方法。在 LVM 中,您无需创建分区,而是创建逻辑卷,然后您可以像挂载磁盘分区一样轻松地将这些卷挂载到文件系统中。

LVM 包含三个主要组件:

尽管该列表由三个部分组成,但其中只有两个是分区系统的直接对应部分,下表记录了这一点。

物理卷没有任何直接对应物,但我很快就会谈到这一点。

LVM 的主要优点是调整卷或卷组的大小非常容易。它抽象出了所有丑陋的部分(分区、原始磁盘),并为我们留下了一个中央存储池可供使用。

如果您曾经经历过分区大小调整的恐惧,那么您会想要使用 LVM。

这篇文章不仅仅是理论。在此过程中,我将展示实际的命令示例,学习某些东西的最佳方法是亲身实践。为此,我建议您使用虚拟机。

为了帮助你,我已经准备了一个简单的 Vagrantfile,你可以用它来用 VirtualBox 启动一个非常轻量级的虚拟机。此虚拟机具有三个额外的磁盘,您和我可以将它们用于下面的命令示例。

在文件系统的某处创建一个目录,并将以下内容保存在该文件中,名为Vagrantfile.

或者,如果您愿意,可以使用wget或curl从我的 gist 下载文件。

确保你安装了Vagrant和VirtualBox。

一旦 Vagrantfile 就位,将环境变量设置VAGRANT_EXPERIMENTAL为disks.

最后,使用以下命令启动虚拟机(确保您与 Vagrantfile 位于同一目录中):

机器运行后,您可以使用vagrant sshSSH 连接到它并运行本文中的示例命令。

完成后请记住vagrant destroy从与 Vagrantfile 相同的目录运行。

在您可以使用任何命令之前,您需要安装该lvm2软件包。这应该预装在大多数现代发行版中,尤其是基于 Ubuntu 的发行版中。但是,在继续之前,我不得不提到这一点。要安装lvm2,请查阅您的发行版的文档。

对于这个动手演练,我构建了一个具有 40G 根存储(不重要)和三个大小为 5G 的外部磁盘的虚拟机。这些磁盘的大小是任意的。

如您所见,我将使用的设备sdc是sdd和sde。

还记得我告诉过你 LVM 包含三个主要组件吗?

是时候一一见他们了。

关于 LVM,您首先需要了解的是物理卷。物理卷是用于实现抽象即逻辑卷的原材料或构建块。简单来说,物理卷是 LVM 系统的逻辑单元。

物理卷可以是任何东西,原始磁盘或磁盘分区。创建和初始化物理卷是一回事。两者都意味着您只是在为进一步的 *** 作准备构建块(即分区、磁盘)。这将在瞬间变得更加清晰。

实用程序:pv所有管理物理卷的实用程序都以P hysical Volume的字母开头。例如pvcreate, pvchange,pvs等pvdisplay。

您可以使用原始未分区磁盘或分区本身来创建物理卷。

正如我之前提到的,我的虚拟机连接了三个外部驱动器,让我们从/dev/sdc.

我们使用pvcreate命令来创建物理卷。只需将设备名称传递给它即可。

你应该看到这样的东西:-

接下来我将/dev/sdd分成相等的部分。使用任何工具cfdisk,,,等parted,fdisk有很多工具可以完成这项工作。

您现在可以在一个步骤中从这两个分区中快速创建另外两个物理卷,同时将这两个设备传递给pvcreate。

看一看:-

您可以使用三个命令来获取可用物理卷的列表pvscan,pvs和pvdisplay。您通常不需要向这些命令传递任何内容。

pvscan:-

pvs:-

pvdisplay:-

正如您所看到的,除了列出物理卷之外,这些命令还为您提供了大量有关这些卷的其他信息。

pvremove您可以使用该命令删除物理卷。就像pvcreate,只需将设备(初始化为物理卷)传递给pvremove命令。

为了演示,我将从/dev/sdd2列表中删除。

输出应与此相同:-

现在列出物理卷sudo pvs

/dev/sdd2不再在这里。

卷组是物理卷的集合。它是 LVM 中的下一个抽象级别。卷组是结合了多个原始存储设备的存储容量的存储池。

实用程序:所有卷组实用程序名称都以 开头vg,代表卷组,例如、等。vgcreatevgsvgrename

卷组是使用该vgcreate命令创建的。的第一个参数vgcreate是您要为该卷组指定的名称,其余的是要支持存储池的物理卷的列表。

例子:-

列出卷组类似于列出物理卷,您可以使用具有不同详细级别的不同命令vgdisplay、vgscan和vgs。

我个人更喜欢vgs命令,sudo vgs

您可以使用以下命令列出连接到特定卷组的所有物理卷:-

例子:-

您还可以获得物理卷的计数。

例子:-

扩展卷组意味着向卷组添加额外的物理卷。为此,vgextend使用该命令。语法很简单:-

让我们将lvm_tutorial音量扩大/dev/sdd2.

专注于输出:-

在物理卷部分,我们最终将其/dev/sdd2作为物理卷删除,但必须将分区或原始磁盘初始化为物理卷,否则 LVM 将无法将其作为卷组的一部分进行管理。所以在将它添加到卷组之前vgextend做好准备。/dev/sdd2

现在列出附加到此卷组的物理卷,以确保安全。

输出:-

/dev/sdd2现在按预期在列表中。

就像扩展一个卷组意味着添加另一个物理卷一样,减少它意味着删除一个或多个物理卷。

我们使用vgreduce命令来执行此 *** 作。一般语法如下:-

让我们删除物理卷/dev/sdc和/dev/sdd1.

例子:-

再次列出物理卷。

输出:-

那两个物理卷不见了。

现在,为了本文的其余部分,将这两个物理卷添加回来。

vgremove您可以使用该命令删除逻辑卷。

现在不要运行此命令,否则您必须重新创建卷组。如果您想对其进行测试,请在本文的最后运行它。

这是您将主要使用的内容。逻辑卷就像一个分区,但它不是位于原始磁盘之上,而是位于卷组之上。你可以,

在本节中,您将学习,

实用程序 :所有卷组实用程序名称都以 开头lv,代表逻辑卷。例如, ,等等, ,等等lvcreatelvslvreducevgcreatevgsvgrename

lvcreate使用该命令创建逻辑卷。常用的语法如下所示,

在虚拟机上运行以下命令:

示例输出:

正如我之前所说,您可以将文件系统放在逻辑卷上,也可以将其挂载到文件系统的任何位置。

/dev/ /创建后,您可以在路径中找到逻辑卷。例如,在我们的例子中,音量将在 /dev/lvm_tutorial/lv1 .

现在您可以像使用任何分区一样使用它。用ext4格式化,

将它安装在当前目录结构中的某个位置,例如/mnt,

您可以使用命令扩展逻辑卷lvextend并使用命令减小其大小lvreduce。或者,您可以使用单个命令lvresize来完成这两项任务。

首先让我们看看卷组中是否还有剩余空间。

输出:-

根据输出,我还有一些空间,所以让我们将卷大小增加 2GB。

请记住,逻辑卷仍安装在/mnt.

使用以下命令调整卷大小:

一般语法是这样的:

后面的符号 + 或 --L取决于您是尝试增加音量还是分别减小音量。

卷大小增加后,文件系统也必须调整大小。对于 ext4,要使用的命令是resize2fs.

输出:

减少逻辑卷是一项稍微复杂的任务,我不会在本文中讨论这个问题。我将把这个卷的大小减少 1GB。

lvremove您可以使用该命令删除逻辑卷。命令语法如下:-

在虚拟机上运行此命令:-

输出:-

在逻辑卷、物理卷和卷组上还有许多其他 *** 作可行,但不可能将所有这些都写到一篇文章中。

我/dev/sde在虚拟机中为您多留了一个磁盘,使用它,练习本文中的一些命令,创建一个新的卷组,扩展一个现有的卷组,只是练习。

我希望这篇文章对你有所帮助,如果你想在以后看到更多关于这方面的内容,请在下面的评论部分告诉我。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7494726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存