许多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. css圣杯布局

    HTML <div class="container"> <div class="content">content</div> ...

  2. PHP_CodeIgniter Github实现个人空间

    github支持github Pages 可以实现自己的个人空间 XXX.github.io/project 1 注册自己的github账户 2 需要设置自己的user_name, user_name ...

  3. [原]__ASSEMBLY__的用途

    在Linux Kernel中有些constant需要被C code 跟 assembler共同使用 在用constant的時候,不能單方面給0x1000UL因為assembler無法看這東西. 但是C ...

  4. python学习第十八天计算机字符编码

    人类语言和计算机语言二进制怎么沟通,最开始字符编码为ascii码对照表 包括数据和字母,没有汉字,中国自己搞了一套自己的编码 gb2312编码后来发展GBK编码,日本,韩国都,甚至台湾也搞自己的编码, ...

  5. C#设计模式:组合模式(Composite Pattern)

    一,C#设计模式:组合模式(Composite Pattern) using System; using System.Collections.Generic; using System.Linq; ...

  6. JS面向对象——动态原型模型、寄生构造模型

    动态原型模型 组合使用构造函数模型和原型模型,使得OO语言程序员在看到独立的构造函数和原型时很困惑.动态原型模型致力于解决该问题,它把所有的信息封装在构造函数中,通过在构造函数中初始化原型(仅在必要情 ...

  7. GeneXus笔记本—GeneXusIDE如何切换成中文语言

    嘛 有些人可能比较习惯英文IDE,但是有些人就比较难受 所以为了应对各个地区的差异 GeneXus很人性化的自带了一部分国家的语言包 只不过默认是英文 需要改动一下_(:з」∠)_ 右键你的IDE快捷 ...

  8. TMS320C6455BCTZA 原厂订购 原装正品

    作为一家科研公司,保证芯片的原厂品质和正规采购渠道是科学严谨的研发工作中重要的一环,更是保证研发产品可靠.稳定的基础.而研发中所遇到的各种不可预测的情况更是每个工程师向技术的山峰攀登中时会遇到的各种难 ...

  9. 解释ARP协议和RARP协议

    解释ARP(地址解析协议) 首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系. 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主 ...

  10. 【LeetCode】一种博弈思路 minimax(共5题)

    [292] Nim Game (2019年3月12日,E) 有一堆石头,游戏规则是每次可以从里面拿1-3颗石头,拿到最后的石头的人赢.你和你的对手都 optimal 的玩这个游戏,问先手(也就是你)能 ...