许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。

LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。

LVM的配置过程也很简单,并不是很难,为此,我画了一张图文并茂的解析图,解析了LVM创建的整个过程。更详细的理论知识还请参看一些教程或者去Google哦!

实验环境:

首先从空的硬盘sdb上创建两个分区sdb1 1G,sdb2 2G. 为接下来做LVM做准备.

为了后期便于维护管理,记得给分区加上标示,这样即使你不在的情况下,别人看到标示了就不会轻易动这块区域了. LVM的标识是8e,设置完成后记得按w保存

一、创建逻辑卷

将新创建的两个分区/dev/sdb1 /dev/sdb2转化成物理卷,主要是添加LVM属性信息并划分PE存储单元.

创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组.可以看出默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。

从物理卷vgdata上面分割500M给新的逻辑卷lvdata1.

使用mkfs.ext4命令在逻辑卷lvdata1上创建ext4文件系统.

将创建好的文件系统/data1挂载到/data1上.(创建好之后,会在/dev/mapper/生成一个软连接名字为”卷组-逻辑卷”)

便于以后服务器重启自动挂载,需要将创建好的文件系统挂载信息添加到/etc/fstab里面.UUID可以通过 blkid命令查询.

为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷data1,然后使用mount –a 使内核重新读取/etc/fstab,看是否能够自动挂载.

二、逻辑卷lvdata1不够用了,如何扩展。

给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令lvextend –L +500M /dev/vgdata/lvdata1或者lvextend –l 2.5G /dev/vgdata/lvdata1 给lvdata1增加500M空间(lvdata1目前是2G空间)设置完成之后,记得使用resize2fs命令来同步文件系统。

三、当卷组不够用的情况下,如何扩大卷组

重新从第二块硬盘上创建一个分区sdb3,具体操作步骤省略。并将创建好的分区加入到已经存在的卷组vgdata中。通过pvs命令查看是否成功。

四、当硬盘空间不够用的情况下,如果减少逻辑卷的空间释放给其他逻辑卷使用。

减少逻辑卷空间,步骤如下

1、 先卸载逻辑卷data1

2、 然后通过e2fsck命令检测逻辑卷上空余的空间。

3、 使用resize2fs将文件系统减少到700M。

4、 再使用lvreduce命令将逻辑卷减少到700M。

注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。

完成之后,就可以通过mount命令挂载重新使用了。

五、如果某一块磁盘或者分区故障了如何将数据快速转移到相同的卷组其他的空间去。

1、通过pvmove命令转移空间数据

2、通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去。

3、通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。

4、手工拆除硬盘或者通过一些工具修复分区。

六、删除整个逻辑卷

1、先通过umount命令卸载掉逻辑卷lvdata1

2、修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来。

3、通过lvremove 删除逻辑卷lvdata1

4、通过vgremove 删除卷组vgdata

5、通过pvremove 将物理卷转化成普通分区。

删除完了,别忘了修改分区的id标识。修改成普通Linux分区即可。

总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。

LVM(Logical Volumn Manager):

总体思路:分区成LVM格式(8e)---PV创建--VG创建---LV创建---格式化分区---MOUNT分区----e2fsadm调整LV大小

几个关键词:

PV (Physical Volumn);VG(Volumn Group); LV(Logical Volumn);PE(Physical Extend物理块 default 4M); LE(Logical Extend逻辑块) PE:LE=1:1(Normal)

LVM的结构简图如下:
   hda1  hdc1  sdc     (PV:s  物理卷,一般为分区或整个硬盘)                        
         |   /                                                                    
         |  /                                                                     
       diskvg          (VG 卷组由物理卷组成)                                                       
       /  |                                                                    
      /   |                                                                    
  usrlv rootlv varlv   (LV:s 逻辑卷在卷组上创建)
    |      |     |                                                              
 ext2  reiserfs  xfs   (建立在逻辑卷上的文件系统)

PV:  实体分割区(Partition)/dev/had...

VG:  虚拟硬盘   /dev/vg_name

LV: 虚拟分割区  /dev/vg_name/lv_name

LVM创建过程:

如有三个硬盘hda2(3G)/hdb2(3G)/hdc2(3G)/hdd2(3G)+hda1(100M boot分区)

1、创建分区:

fdisk /dev/hda(..hdb..hdc..hdd) -----p---n--t--8e---p--w--- reboot

(分出hda2/hdb2/hdc2/hdd2各3G的分区,分区格式为8e(lvm分区)

2、创建物理卷(PV):

pvcreate [-v] /dev/hda2 /dev/hdb2 /dev/hdc2 /dev/hdd2

***创建物理卷(PV)之前可以通过pvscan 查看是否有物理卷及其信息,如pvscan查看到现有PV(如/dev/hdb1、/dev/hdc1)属于VG (如VG0),则可以通过

pvdisplay /dev/hdb1查看现有LVM的情况。

****-v显示创建的全部过程,可以省略

3、创建卷组(VG):

vgcreate [-v]  [-s 8M]vg01 /dev/hda2 /dev/hdb2 /dev/hdc2 /dev/hdd2

***创建卷组((VG)之前可以通过vgdisplay查看现有卷组信息;

*** -s 创建的VG的PE大小(如8M),默认省略不写为4M,必须是4的整数倍;

***VG创建好后,自动就Active起来,若没有自动Active则可以通过  vgchange -a y vg01激活 VG;也可以通过vgchange -a n vg01 关闭Actice 的VG为Deactive;

***只有对Deactive 的VG才能进行更改、删除;VG的重命名不需要Deactive,如 vgrename old_vg_name new_vg_name;

***vgremove 删除现有VG :vgremove vg_name;必须是Deactive VG.

***若在创建了LVM后发现硬盘空间不够,则可以创建一个LVM分区,通过pvcreate激活此分区,再通过vgextend加入到现有VG中以扩充空间。

pvcreate /dev/hde2  ; vgextend -v vg01 /dev/hde2   将hde2加入到现有vg01中以扩充空间。

***若要删除VG中的PV,必须先确认此PV没有被VG所使用:如/dev/hdd2,先查看pvdisplay /dev/hdd2 中的PV Status,若为Not Availiable则可以删除;

vgreduce -v vg01 /dev/hdd2

4、创建逻辑卷(LVM):

命令lvcreate的常用方法: 
   lvcreate [options]  -n 逻辑卷名  卷组名
   其中的常用可选项有:
   "-i Stripes :采用交错(striped)方式创建LV,其中Stripes指卷组中PV的数量。
   "-I Stripe_size :采用交错方式时采用的块大小(单位为KB),Stripe_size必须为2的指数:2N ,N=2,3...9。
   "-l LEs :指定LV的逻辑块数。
   "-L size :指定LV的大小,其后可以用K、M、G表示KB、MB、GB。
   "-s :创建一已存在LV的snapshot卷。
   "-n name :为LV指定名称。

创建普通LV:

lvcreate -L 5G -n lv01 vg01  创建一个名为lv01的5G 虚拟分区在虚拟硬盘vg01上   /dev/vg01/lv01

lvcreate -i 4 -I 8 -L 4G -n lv02  vg01  [-i 是VG中组成PV的分区个数,-I 块大小,-L LV的大小]

创建快照LV:

lvcreate -s -i 4 -I 16 -L 2G -n lv03_snapshot vg01

5、创建文件系统:

mke2fs -j /dev/vg01/lv01   (mkfs.ext3 /dev/vg01/lv02;  mkfs.ext3 /dev/vg01/lv_snapshot)

6、挂载:

mkdir /mnt/lv01 ;

mount -t ext3 /dev/vg01/lv01  /mnt/lv01;

7、增、减LV大小:

umount  /lv01;

e2fsadm -L+100M(-100M) /dev/vg01/lv01

****

总结:

1) fdisk /dev/hd?--8e (/dev/hda2;/dev/hdb2;/dev/hdc2/;dev/hdd2)

2) pvcreate /dev/hda2 /dev/hdb2 /dev/hdc2

3)vgcreate vg01 /dev/hd2 /dev/hdb2 /dev/hdc2

4)lvcreate [-s] [-i pv_pation_count] [-I n*2k] -L 分区大小 [-n lv_name]  vg01

5)mke2fs [-j] /vg01/lv_name

6) mkdir /mnt/mnt_point;  mount -t ext3 /dev/vg01/lv_name  /mnt/mnt_point;

增加硬盘已扩充分区容量:

1) pvcreate /dev/hdd2;

2) vgextend vg01 /dev/hdd2;

3)lvextend -L+100M /dev/vg01/lv_name; (在线扩充分区大小)  lvreduce -L -100M /dev/vg01/lv_name (在线扩充分区大小)

若VG中有容量未分配可以通过以下方法增加(或减少)分区容量:

1) umount /mnt/mnt_point;

2) e2fsadm -L+100M /dev/vg01/lv_name

**以上扩充必须是LV中最后一个LV(如/dev/vg01/lv01;/dev/vg01/lv02; /dev/vg01/lv03)

只能正常、正确扩充最后一个LV :lv03;若扩充lv01、lv02可能会有问题发生。

1:将物理磁盘设备条带化为物理卷

[root@gechong ~]# pvcreate /dev/sdb

查看物理卷:

[root@gechong ~]# pvs

或者

[root@gechong ~]# pvdisplay

2:创建卷组,并添加PV到卷组

[root@gechong ~]# vgcreate vg_gechong /dev/sdb

查看卷组

[root@gechong ~]# vgs

或者

[root@gechong ~]# vgdisplay

现在创建好了物理卷和卷组还不能使用。

创建完卷组后/dev/vgname多了一个文件夹

[root@gechong ~]# ll /dev/vg*
crw-rw----. 1 root root 10, 63 11月 6 19:11 /dev/vga_arbiter /dev/vg_gechong:
总用量 0
lrwxrwxrwx. 1 root root 7 11月 6 19:11 lv_root -> ../dm-0
lrwxrwxrwx. 1 root root 7 11月 6 19:11 lv_swap -> ../dm-1 实际位置是在这里

[root@gechong vg_gechong]# cd /dev/mapper/

 

3:基于卷组创建逻辑卷

[root@gechong ~]# lvcreate -n lv_root -L 16G vg_gechong

查看逻辑卷

[root@gechong ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root vg_gechong -wi-ao--- 16.51g
lv_swap vg_gechong -wi-ao--- 3.00g
[root@gechong ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg_gechong/lv_root
LV Name lv_root
VG Name vg_gechong
LV UUID yatm0L-pnIX-d9Rf-zfTf-0PPq-9zJC-K0Lh5J
LV Write Access read/write
LV Creation host, time gechong, 2013-10-13 23:57:50 +0800
LV Status available
# open 1
LV Size 16.51 GiB
Current LE 4226
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0 --- Logical volume ---
LV Path /dev/vg_gechong/lv_swap
LV Name lv_swap
VG Name vg_gechong
LV UUID cxINGt-Nae0-XJYA-6gEV-N6lM-20zG-cWhY0Z
LV Write Access read/write
LV Creation host, time gechong, 2013-10-13 23:58:02 +0800
LV Status available
# open 2
LV Size 3.00 GiB
Current LE 768
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:1

4:为逻辑卷创建文件系统

[root@gechong vg_gechong]# mkfs.ext4 /dev/vg_gechong/lv_swap

5:将格式化好的逻辑卷挂载使用

[root@gechong vg_gechong]# mount /dev/vg_gechong/lv_swap /mnt/vg/lv_swap

6:删除逻辑卷

删除逻辑卷之前必须先卸载

[root@gechong vg_gechong]# lvremove /dev/vg_gechong/lv_swap

7:删除卷组

[root@gechong vg_gechong]# vgremove vg_gechong

8:删除物理卷

[root@gechong vg_gechong]# pvremove /dev/sdb

Linux随笔 - Linux LVM逻辑卷配置过程详解[转载]的更多相关文章

  1. Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)

    Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据, ...

  2. Linux LVM逻辑卷配置过程详解

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  3. (转)Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)

    一.预备知识 LVM全称为Logical Volume Manager 逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘 ...

  4. Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)(未完)

    转:http://blog.csdn.net/xuanfeng407/article/details/51465472

  5. Linux系统LVM逻辑卷创建过程以及自动化脚本

    转至:https://cloud.tencent.com/developer/article/1068328 Linux系统LVM逻辑卷创建过程以及自动化脚本 2018-03-21阅读 6300   ...

  6. Linux下的I/O复用与epoll详解(转载)

    Linux下的I/O复用与epoll详解 转载自:https://www.cnblogs.com/lojunren/p/3856290.html  前言 I/O多路复用有很多种实现.在linux上,2 ...

  7. Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)

    当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间.如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区 ...

  8. 1.4 Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统)

      当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间.如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷 ...

  9. Linux shell利用sed如何批量更改文件名详解[转载]

     需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...

随机推荐

  1. Maven仓库存在jar包但依旧提示无法下载

    介绍最近服务器的迁移,把原来服务器的地址都更改了,所以私服的地址也改动了,原来项目下载到本地仓库的包,但是重新构建过程中竟然发现依然要提示下载,本地仓库里面明明有包,为什么还要下载? 解决去maven ...

  2. solr的moreLikeThis实现“相似数据”功能

    在我们使用网页搜索时,会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档.Solr 使用 MoreLikeThisComponent(ML ...

  3. [Codeforces 163D]Large Refrigerator (DFS+剪枝)

    [Codeforces 163D]Large Refrigerator (DFS+剪枝) 题面 已知一个长方体的体积为V,三边长a,b,c均为正整数,求长方体的最小表面积S V以质因数分解的形式给出 ...

  4. each of which 用法

    each of which 在以下為 同位語,非關代. 1. An urn contains two balls, each of which is known to be either white ...

  5. sqlserver创建索引语句

    CREATE INDEX PersonIndex ON 表名 (字段名)   DROP INDEX PersonIndex ON 表名

  6. quotaon - 开启关闭文件系统配额

    总览 (SYNOPSIS) quotaon [ -e | d ] [ -vug ] filesystem... quotaon [ -e | d ] [ -avug ] quotaoff [ -e | ...

  7. Collection集合家族

    集合家族 数组:存储相同类型的多个元素 对象:存储不同类型的多个元素 集合:存储多个不同类型的对象 List List继承自Collection接口,是有序可重复的集合. 它的实现类有:ArrayLi ...

  8. C Primer Plus 学习 第三章

    这里只记录我自己以前不懂得地方,明白的地方就略过了 位  字节  字 位    0,1 字节  8位  也就有8位0,1的组合   2的8次方的组合 字      设计计算机时给定的自然存储单元.8位 ...

  9. txt_to_csv

    import csv def txt2csv(inf, outf): with open(inf,'r') as fin, open(outf,'w',newline='') as fout: wrt ...

  10. 吉首大学2019年程序设计竞赛(重现赛) J 滑稽树下你和我 (递归)

    链接:https://ac.nowcoder.com/acm/contest/992/J来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...