linux系统创建lvm卷,LVM逻辑卷创建管理

一、简介

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

基本的逻辑卷管理概念:

PV(Physical Volume)- 物理卷

物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。

VG(Volumne Group)- 卷组

卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

LV(Logical Volume)- 逻辑卷

逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

好的我们了解了这么多,那么我们就来玩下吧!

一、准备好我们的分区,然后更改好分区的格式

[root@linuxidc ~]# fdisk -l

Disk /dev/sdb: 128.8 GB, 128849018880 bytes, 251658240 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

#查看下有哪些空闲的磁盘,我这里使用/dev/sdb和块,部分信息省略。

[root@linuxidc ~]# fdisk /dev/sdb

Command (m for help): t

Partition number (1-4, default 4):

Hex code (type L to list all codes): 8e ##更改格式为8e

Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sdb: 128.8 GB, 128849018880 bytes, 251658240 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x6428a1e6

Device Boot      Start        End      Blocks  Id  System

/dev/sdb1            2048    62916607    31457280  8e  Linux LVM

/dev/sdb2        62916608  125831167    31457280  8e  Linux LVM

/dev/sdb3      125831168  188745727    31457280  8e  Linux LVM

/dev/sdb4      188745728  251658239    31456256  8e  Linux LVM

########################################看此时我们的格式都全部改为了8e lvm格式。

[root@linuxidc ~]# ls /dev/sdb* #查看下有没有识别到我们分区

/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3  /dev/sdb4

[root@linuxidc ~]# partprobe /dev/sdb #如果分区没识别我们需要刷新下强制识别。

二、创建pv卷

PV 有关的命令:

pvcreate :将实体 partition 创建成为 PV ;

pvscan :扫描系统存在的pv,pvs简要显示

pvdisplay :显示出目前系统上面的 PV 状态;

pvremove :将 PV 属性移除,让该 partition 不具有 PV 属性。

[root@linuxidc ~]# pvcreate /dev/sdb{1,2,3}

Device /dev/sdb1. not found (or ignored by filtering).

Physical volume "/dev/sdb2" successfully created

Physical volume "/dev/sdb3" successfully created

##我们一次创建了三个pv,分别为/dev/sdb1 /dev/sdb2 /dev/sdb3

[root@linuxidc ~]# pvscan

PV /dev/sdb2        lvm2 [30.00 GiB]

PV /dev/sdb3        lvm2 [30.00 GiB]

PV /dev/sdb1        lvm2 [30.00 GiB]

Total: 3 [90.00 GiB] / in use: 0 [0  ] / in no VG: 3 [90.00 GiB]

## 显示pv的基本信息,总共pv大小,vg已经使用pv大小,剩余pv的大小

[root@linuxidc ~]# pvdisplay ##显示pv的详细信息

"/dev/sdb2" is a new physical volume of "30.00 GiB"

--- NEW Physical volume ---

PV Name              /dev/sdb2 ##pv的名称

VG Name              ##没有被分配所以显示空白

PV Size              30.00 GiB ##pv容量大小

Allocatable          NO #是否被分配

PE Size              0  #PE的大小

Total PE              0  已分配出去PE大小

Free PE              0 空闲PE大小

Allocated PE          0 #剩下可用PE大小

PV UUID              bmWNn0-7PND-2yVL-TGT7-U9mf-Du01-ERq7FY#pv的id号

##由于PE是在啊VG创建的时候才会指定各种的大小,所以此次大不分都显示0

"/dev/sdb3" is a new physical volume of "30.00 GiB"

--- NEW Physical volume ---

PV Name              /dev/sdb3

VG Name

PV Size              30.00 GiB

Allocatable          NO

PE Size              0

Total PE              0

Free PE              0

Allocated PE          0

PV UUID              sRE2ko-dd80-RxF3-zTGi-OMFH-z1AD-KFN0cL

"/dev/sdb1" is a new physical volume of "30.00 GiB"

--- NEW Physical volume ---

PV Name              /dev/sdb1

VG Name

PV Size              30.00 GiB

Allocatable          NO

PE Size              0

Total PE              0

Free PE              0

Allocated PE          0

PV UUID              67mTD7-OroO-n5iK-GWBQ-Mqow-BYzi-HXraKm

三、创建VG

创建 VG 相关的命令:

vgcreate -s  大小  VG名  pv名(创建的时候可以指定PE大小)

vgcreate :就是主要创建 VG 的命令

vgscan :搜寻系统上面是否有 VG ,vgs显示简要信息

vgdisplay :显示目前系统上面的 VG 状态

vgextend :扩展VG

vgreduce :在 VG 内移除 PV

vgchange :配置 VG 是否启动 (active)

vgremove :删除一个 VG

[root@linuxidc ~]# vgcreate vg0 /dev/sdb{1,2,3}

Volume group "vg0" successfully created

[root@linuxidc ~]# vgs

VG  #PV #LV #SN Attr  VSize  VFree

vg0    3  0  0 wz--n- 89.99g 89.99g

[root@linuxidc ~]# vgscan

Reading all physical volumes.  This may take a while...

Found volume group "vg0" using metadata type lvm2

[root@linuxidc ~]# vgdisplay

--- Volume group ---

VG Name              vg0

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              89.99 GiB##VG总共的大小90G(我pv每个大小30G)

PE Size              4.00 MiB ##每个PE的大小为4MB

Total PE              23037

Alloc PE / Size      0 / 0

Free  PE / Size      23037 / 89.99 GiB

VG UUID              p8dacU-UFYP-eazU-Jelp-vRAN-wEP3-hxzXfW

四、创建LVM

LVM创建相关命令:

lvcreate :创建 LV

lvscan :查询系统上面的

lvdisplay :显示系统上面的 LV 状态啊

lvextend :扩展容量

lvreduce :减少容量

lvremove :删除一个 LV

[root@linuxidc ~]# lvcreate -L +50G -n lv0 vg0 ##创建LVM大小50G,名称lv0,从vg0中调容量

Logical volume "lv0" created.##创建成功

[root@linuxidc ~]# lvs

LV  VG  Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

lv0  vg0  -wi-a----- 50.00g

[root@linuxidc ~]# lvscan

ACTIVE            '/dev/vg0/lv0' [50.00 GiB] inherit

[root@linuxidc ~]# lvdisplay

--- Logical volume ---

LV Path                /dev/vg0/lv0#lv全名称

LV Name                lv0

VG Name                vg0

LV UUID                bCpncg-nTn7-V5vk-NWVq-NTT5-lmQx-Ayfcqd

LV Write Access        read/write ##可读可写权限

LV Creation host, time linuxidc, 2016-06-04 15:16:40 +0800#创建时间和创建人

LV Status              available

# open                0

LV Size                50.00 GiB

Current LE            12800

Segments              2

Allocation            inherit

Read ahead sectors    auto

- currently set to    8192

Block device          253:0

五、将创建好的lvm卷进行文件系统格式处理,然后挂载供我们使用

[root@linuxidc ~]# mkfs.ext4 /dev/vg0/lv0

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

3276800 inodes, 13107200 blocks

655360 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=2162163712

400 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424

Allocating group tables: done

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

[root@linuxidc ~]# mkdir /lvmtest/

[root@linuxidc ~]# mount /dev/vg0/lv0 /lvmtest/

[root@linuxidc ~]# mount

/dev/sda5 on /testdir type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

tmpfs on /run/user/42 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=100136k,mode=700,uid=42,gid=42)

tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=100136k,mode=700)

/dev/mapper/vg0-lv0 on /lvmtest type ext4 (rw,relatime,seclabel,data=ordered)

[root@linuxidc ~]# cd /lvmtest/

[root@linuxidc lvmtest]# ls

lost+found

[root@linuxidc lvmtest]# mkdir lvmtest1

[root@linuxidc lvmtest]# ls

lost+found  lvmtest1

创建了/lvmtest目录,然后挂载到此目录下,去写了点东西,测试OK没有问题!

当我们的vg和lv空间不够用了那么我们该怎么办呢?

六、vg的扩展,缩减,移除

扩展vg卷大小

我之前还有一个/dev/sdb4分区没有,现在可以派上用场了。

[root@linuxidc ~]# vgextend vg0 /dev/sdb4

Physical volume "/dev/sdb4" successfully created##将/dev/sdb4分区创建成了pv

Volume group "vg0" successfully extended###/dev/sdb4这个pv成功的加入到了vg中来了

[root@linuxidc ~]# pvscan

PV /dev/sdb1  VG vg0  lvm2 [30.00 GiB / 0    free]

PV /dev/sdb2  VG vg0  lvm2 [30.00 GiB / 9.99 GiB free]

PV /dev/sdb3  VG vg0  lvm2 [30.00 GiB / 30.00 GiB free]

PV /dev/sdb4  VG vg0  lvm2 [30.00 GiB / 30.00 GiB free]##看此时相比前面多了一个pv

Total: 4 [119.98 GiB] / in use: 4 [119.98 GiB] / in no VG: 0 [0  ]

[root@linuxidc ~]# vgscan

Reading all physical volumes.  This may take a while...

Found volume group "vg0" using metadata type lvm2

[root@linuxidc ~]# vgdisplay

--- Volume group ---

VG Name              vg0

System ID

Format                lvm2

Metadata Areas        4

Metadata Sequence No  3

VG Access            read/write

VG Status            resizable

MAX LV                0

Cur LV                1

Open LV              1

Max PV                0

Cur PV                4

Act PV                4

VG Size              119.98 GiB###看大小发生了改变了

PE Size              4.00 MiB

Total PE              30716

Alloc PE / Size      12800 / 50.00 GiB

Free  PE / Size      17916 / 69.98 GiB

VG UUID              p8dacU-UFYP-eazU-Jelp-vRAN-wEP3-hxzXfW

缩减vg大小

[root@linuxidc ~]# pvscan

PV /dev/sdb1  VG vg0  lvm2 [30.00 GiB / 0    free]

PV /dev/sdb2  VG vg0  lvm2 [30.00 GiB / 9.99 GiB free]

PV /dev/sdb3  VG vg0  lvm2 [30.00 GiB / 30.00 GiB free]

PV /dev/sdb4  VG vg0  lvm2 [30.00 GiB / 30.00 GiB free]

Total: 4 [119.98 GiB] / in use: 4 [119.98 GiB] / in no VG: 0 [0  ]

##查看下pv有哪些是没有被使用的,由此我们可以看出/dev/sdb3 /dev/sdb4没用

[root@linuxidc ~]# vgreduce vg0 /dev/sdb4

Removed "/dev/sdb4" from volume group "vg0"

[root@linuxidc ~]# pvscan

PV /dev/sdb1  VG vg0  lvm2 [30.00 GiB / 0    free]

PV /dev/sdb2  VG vg0  lvm2 [30.00 GiB / 9.99 GiB free]

PV /dev/sdb3  VG vg0  lvm2 [30.00 GiB / 30.00 GiB free]

PV /dev/sdb4            lvm2 [30.00 GiB]

Total: 4 [119.99 GiB] / in use: 3 [89.99 GiB] / in no VG: 1 [30.00 GiB]

[root@linuxidc ~]# vgdisplay

--- Volume group ---

VG Name              vg0

System ID

Format                lvm2

Metadata Areas        3

Metadata Sequence No  9

VG Access            read/write

VG Status            resizable

MAX LV                0

Cur LV                1

Open LV              1

Max PV                0

Cur PV                3

Act PV                3

VG Size              89.99 GiB

PE Size              4.00 MiB

Total PE              23037

Alloc PE / Size      12800 / 50.00 GiB

Free  PE / Size      10237 / 39.99 GiB

VG UUID              p8dacU-UFYP-eazU-Jelp-vRAN-wEP3-hxzXfW

七、扩展、缩减LV

扩展逻辑卷:(支持在线扩展)

[root@linuxidc ~]# lvextend -L +30G /dev/vg0/lv0

Size of logical volume vg0/lv0 changed from 80.00 GiB (20480 extents) to 110.00 GiB (28160 extents).

Logical volume lv0 successfully resized.##o扩展成功

[root@linuxidc ~]# lvs

LV  VG  Attr      LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

lv0  vg0  -wi-ao---- 110.00g

[root@linuxidc ~]# df -h

Filesystem          Size  Used Avail Use% Mounted on

/dev/sda2            94G  3.2G  90G  4% /

devtmpfs            475M    0  475M  0% /dev

tmpfs                489M  84K  489M  1% /dev/shm

tmpfs                489M  7.1M  482M  2% /run

tmpfs                489M    0  489M  0% /sys/fs/cgroup

/dev/sda5            19G  33M  19G  1% /testdir

##lv已经扩展成功了,但是我们文件系统中的大小没加大,所以我么还需要处理下。

[root@linuxidc ~]# resize2fs /dev/vg0/lv0 ##通过此命令让文件系统容量确实增大

resize2fs 1.42.9 (28-Dec-2013)

Filesystem at /dev/vg0/lv0 is mounted on /lvmtest; on-line resizing required

old_desc_blocks = 7, new_desc_blocks = 14

The filesystem on /dev/vg0/lv0 is now 28835840 blocks long.

[root@linuxidc ~]# df -h

Filesystem          Size  Used Avail Use% Mounted on

/dev/sda2            94G  3.2G  90G  4% /

devtmpfs            475M    0  475M  0% /dev

tmpfs                489M  84K  489M  1% /dev/shm

tmpfs                489M  7.1M  482M  2% /run

tmpfs                489M    0  489M  0% /sys/fs/cgroup

/dev/sda5            19G  33M  19G  1% /testdir

/dev/sda1            473M  153M  321M  33% /boot

tmpfs                98M  16K  98M  1% /run/user/42

tmpfs                98M    0  98M  0% /run/user/0

/dev/mapper/vg0-lv0  109G  60M  104G  1% /lvmtest ### ok显示现在已经是110G

缩减逻辑卷:(不支持在线扩展,必须先卸载)

确保缩减后的空间可以存储原来所有数据。并且在缩减前先要进行强制检查,确保文件系统处于一致状态

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 [root@linuxidc ~]# umount /lvmtest/##卸载

[root@linuxidc ~]# e2fsck -f /dev/vg0/lv0 ##强行检查文件系统

e2fsck 1.42.9 (28-Dec-2013)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

/dev/vg0/lv0: 12/7208960 files (0.0% non-contiguous), 500575/28835840 blocks

[root@linuxidc ~]# resize2fs /dev/vg0/lv0 5G ##缩减逻辑空间到5G

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/vg0/lv0 to 1310720 (4k) blocks.

The filesystem on /dev/vg0/lv0 is now 1310720 blocks long.

[root@linuxidc ~]# lvreduce -L 5G /dev/vg0/lv0 ##缩减逻辑空间到5G

WARNING: Reducing active logical volume to 5.00 GiB

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce lv0? [y/n]: y #输入y同意

Size of logical volume vg0/lv0 changed from 110.00 GiB (28160 extents) to 5.00 GiB (1280 extents).

Logical volume lv0 successfully resized.##缩减成功

[root@linuxidc ~]# lvs

LV  VG  Attr      LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

lv0  vg0  -wi-a----- 5.00g  ##查看lv已经变成5G大小了

[root@linuxidc ~]# mount /dev/vg0/lv0 /lvmtest/##重新挂载我么的文件系统

[root@linuxidc ~]# df -h

Filesystem          Size  Used Avail Use% Mounted on

/dev/sda2            94G  3.2G  90G  4% /

devtmpfs            475M    0  475M  0% /dev

tmpfs                489M  84K  489M  1% /dev/shm

tmpfs                489M  7.1M  482M  2% /run

tmpfs                489M    0  489M  0% /sys/fs/cgroup

/dev/sda5            19G  33M  19G  1% /testdir

/dev/sda1            473M  153M  321M  33% /boot

tmpfs                98M  16K  98M  1% /run/user/42

tmpfs                98M    0  98M  0% /run/user/0

/dev/mapper/vg0-lv0  4.8G  33M  4.6G  1% /lvmtest

[root@linuxidc ~]# cd /lvmtest/

[root@linuxidc lvmtest]# ls

lost+found  lvmtest1#####测试看ok没有问,数据没损坏。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVM (Logical Volume Manager) 是 Linux 系统中的一种逻辑卷管理器,可以将多个物理分区或硬盘合并成一个逻辑卷,并且能够方便地调整逻辑卷的大小。下面是在 Linux 系统中进行 LVM 逻辑卷管理的一些基本操作。 1. 安装 LVM 在大多数 Linux 发行版中,LVM 已经默认安装好了,如果没有安装,可以使用以下命令安装: ``` sudo apt-get install lvm2 ``` 2. 创建物理LVM 中,需要将物理分区或硬盘转换为物理(PV)。使用以下命令将 `/dev/sdb1` 转换为物理: ``` sudo pvcreate /dev/sdb1 ``` 可以使用 `pvdisplay` 命令查看物理的信息: ``` sudo pvdisplay ``` 3. 创建组(VG)是多个物理的集合。使用以下命令创建一个名为 `myvg` 的组,将 `/dev/sdb1` 加入其中: ``` sudo vgcreate myvg /dev/sdb1 ``` 可以使用 `vgdisplay` 命令查看组的信息: ``` sudo vgdisplay ``` 4. 创建逻辑卷 逻辑卷(LV)是组中的一个逻辑分区。使用以下命令创建一个名为 `mylv` 的逻辑卷,大小为 10G: ``` sudo lvcreate -L 10G -n mylv myvg ``` 可以使用 `lvdisplay` 命令查看逻辑卷的信息: ``` sudo lvdisplay ``` 5. 格式化逻辑卷 使用以下命令将逻辑卷格式化为 ext4 文件系统: ``` sudo mkfs.ext4 /dev/myvg/mylv ``` 6. 挂载逻辑卷 创建挂载点目录: ``` sudo mkdir /mnt/mylv ``` 将逻辑卷挂载到该目录: ``` sudo mount /dev/myvg/mylv /mnt/mylv ``` 7. 调整逻辑卷大小 可以使用 `lvextend` 命令来扩大逻辑卷的大小: ``` sudo lvextend -L +5G /dev/myvg/mylv ``` 以上命令将逻辑卷 `mylv` 的大小增加了 5G。 如果需要缩小逻辑卷的大小,可以先使用 `umount` 命令卸载逻辑卷,然后使用 `lvreduce` 命令缩小逻辑卷的大小,最后再重新挂载逻辑卷。 以上就是在 Linux 系统中进行 LVM 逻辑卷管理的一些基本操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值