linux 磁盘管理分fdisk parted 和LVM三种方式,我们这里重点是说lvm

我们来看看LVM基本术语(lvm和传统fdisk分区方式有区别)由于传统的磁盘管理不能对磁盘进行磁盘管理,因此诞生了LVM技术,LVM技术最大的特点就是对磁盘进行动态管理。由于LVM的逻辑卷的大小更改可以进行动态调整,且不会出现丢失数据的情况。前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。

首先我们讨论以下几个LVM术语:

物理存储介质这里指系统的存储设备:硬盘,如:/dev/hda1(ide硬盘块设备)、/dev/sda(scsi硬盘块设备)等等,是存储系统最低层的存储单元。物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

简单来说就是:

PV:是物理的磁盘分区VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘。LV:也就是从VG中划分的逻辑分区

【lvm制作过程】

(1)挂载物理磁盘;
(2)将物理磁盘初始化为物理卷PV;
(3)将一个或多个物理卷PV转变为一个卷组VG。
(4)从VG中创建逻辑卷。
(5)根据实际需要将逻辑卷挂载使用。
(6)根据需要对磁盘or逻辑卷进行扩展和缩减。

首先确定系统中是否安装了lvm工具

[root@fp-web-126 mapper]# rpm -qa|grep lvm
lvm2-2.02.130-5.el7.x86_64
lvm2-libs-2.02.130-5.el7.x86_64
说明系统已经安装了LVM管理工具;如果命令没有输出则说明没有安装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所有的文件系统后, 才能成功执行

分区的三种情况

一、主分区:一块硬盘只能分四个主分区;
二、扩展分区:将一个主分区拿出来做扩展分区;
三、逻辑分区:在一个扩展分区里再分的分区。
分区后,只有格式化了才能使用

查看分区挂载点的 UUID

 lvm创建卷组和格式化

* 前提条件:  /dev/sda为一块空的硬盘或空的一个分区

* 创建物理卷: pvcreate /dev/sda

* 创建卷组:   vgcreate mapper /dev/sda (mapper 为卷组名字)

* 创建逻辑卷: lvcreate -L 30G -n centos-root mapper (假设卷的大小为30G,centos-root为逻辑卷的名字)

* 格式化:     mkfs.xfs  /dev/mapper/centos-root

* 新建挂载点:  mkdir  /

* 挂载文件系统: mount /dev/mapper/centos-root   /

* 逻辑卷扩容: lvextend –L +100g  /dev/mapper/centos-root (给/dev/mapper/centos-root扩容100g)

* 扩容生效 :  resize2fs /dev/mapper/centos-root

* 查看物理卷信息: pvs 、 pvdisplay

* 查看逻辑卷信息: lvs 、lvdisplay

* 若卷组给一个卷使用,如何设置最大可用容量

获取卷组容量(以兆的单位) vgs --units=m | grep qogir |  awk '{print $6}'   (例如卷组为qogir)

容量换算为G: CAPACITY = 卷组容量/1024(取得的容量减掉小数部分)

lvcreate -L CAPACITY -n centos-root mapper

#查看已经存在的LV信息

[root@fp-web-130 storage]# lvdisplay
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID kTXzQ2-IThd-QhWt-Jcs1-sdQ2-cMX4-p0GBDn
LV Write Access read/write
LV Creation host, time localhost, 2017-06-07 15:50:34 +0800
LV Status available
# open 0
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1

--- Logical volume ---
LV Path /dev/centos/root 
LV Name root      #逻辑卷名root
VG Name centos    #卷组名centos
LV UUID dJV7IE-OlgL-puzI-27kI-mrhM-DprK-hYd3xz
LV Write Access read/write  lv写访问 读/写
LV Creation host, time localhost, 2017-06-07 15:50:35 +0800
LV Status available  lv状态有效
# open 1
LV Size 95.51 GiB
Current LE 24450
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

[root@fp-web-130 storage]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size 99.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25474
Free PE 0
Allocated PE 25474
PV UUID dJcKYm-10WN-Vsy8-n11y-B8wY-vsFt-N76qpy

[root@fp-web-130 storage]# lvs
LV   VG     Attr       LSize  Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 95.51g
swap centos -wi-a----- 4.00g

[root@fp-web-130 storage]# pvs
PV       VG      Fmt  Attr PSize PFree
/dev/sda2 centos lvm2 a--  99.51g 0

最新文章

  1. 【引】runtime全解析,P1:Programming Guide
  2. socket学习之聊天室
  3. ForeignKey 的第二个位置参数on_delete
  4. ORA-00257: archiver error. Connect internal only, until freed——解决
  5. HDOJ 1102 生成树
  6. ASP.NET jquery ajax传递参数
  7. [LeetCode] Distinct Subsequences 解题思路
  8. 解决使用angularjs时页面因为{{ }}闪烁的两种方式ng-bind,ng-cloak
  9. alloc & init & dealloc
  10. 掌上快递 APP 项目之概述篇
  11. MySQL replace into (insert into 的增强版)
  12. Python之路(第十七篇)logging模块
  13. Codeforces.871D.Paths(莫比乌斯反演 根号分治)
  14. JS stacktrace(Node内存溢出)
  15. Java编程思想__内部类
  16. C#多线程图片爬虫
  17. 前端 -----jQuery的选择器
  18. iOS 使用xib定义一个View,修改frame无效问题解决
  19. word中替换【换行符】与【回车符】
  20. Java学习之静态代码块

热门文章

  1. w10环境vs2017,vs2019配置Opengl快捷方法
  2. 『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件
  3. JVM学习总结(一)
  4. java案例—遍历字符串
  5. Paypal标准支付对接
  6. Java——spring中session的获取
  7. EXCEL数据处理-经纬度转换:度分秒转换为小数
  8. ORM,Django对数据库的连接和使用
  9. [转载]详解ssh端口转发(二)
  10. 羽夏看Win系统内核——调试篇