前言 (空格) :分区挂载和扩容是两码事
每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某个分区需要的容量,还要预见该分区以后可能需要的容量的最大值。因为如果估 计不准确,当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。
虽然有很多动态调整磁盘的工具可以使用,例如PartitionMagic等等,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要 重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解决问题。
因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。幸运的是Linux提供的逻辑盘卷管理(LVM,LogicalVolumeManager)机制就是一个完美的解决方案。
逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图4-1所示。它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备。底层的原始的磁盘不再由内核直接控制,而由LVM层来控制。对于上层应用来说卷组替代了磁盘块成为数据存储的基本单元。LVM管理着所有物理卷的物理盘区,维持着逻辑盘区和物理盘区之间的映射。LVM逻辑设备向上层应用提供了和物理磁盘相同的功能,如文件系统的创建和数据的访问等。但LVM逻辑设备不受物理约束的限制,逻辑卷不必是连续的空间,它可以跨越许多物理卷,并且可以在任何时候任意的调整大小。相比物理磁盘来说,更易于磁盘空间的管理。
从用户态应用来看,LVM逻辑卷相当于一个普通的块设备,对其的读写操作和普通的块设备完全相同。而从物理设备层来看,LVM相对独立于底层的物理设备,并且屏蔽了不同物理设备之间的差异。因而在LVM层上实现数据的连续保护问题,可以不需要单独考虑每一种具体的物理设备,避免了在数据复制过程中因物理设备之间的差异而产生的问题。从LVM的内核实现原理上看,LVM是在内核通用块设备层到磁盘设备驱动层的请求提交流之间开辟的另外一条路径,即在通用块设备层到磁盘设备驱动层之间插入了LVM管理映射层用于截获一定的请求进行处理,如图4-2所示。 [1]
用户通过lvm提供接口,依靠内核创建一系列LVM逻辑卷,所有对lvm逻辑卷的读写操作最终都会由LVM在通用块设备层下方截获下来,进行更进一步的处理。这里的进一步处理主要指的是完成写请求的映射,是将请求的数据根据实际情况进行一些拆分和重定位操作,从而可以将请求和数据分发到实际的物理设备中去。 [1]
基本术语
前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。首先我们讨论以下几个LVM术语:
- 物理存储介质(PhysicalStorageMedia)
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。 - 物理卷(Physical Volume,PV)
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。 - 卷组(Volume Group,VG)
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。 - 逻辑卷(Logical Volume,LV)
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。 - 物理块(Physical Extent,PE)
PE是物理卷PV的基本划分单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。 - 逻辑块(Logical Extent,LE)
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
图1所示LVM抽象模型,展示了PV、VG、LV三者之间关系:
一、LVM结构
二、数据盘划分
命令
#管理磁盘分区
fdisk /dev/sda #其中sda是一块虚拟磁盘
#查看磁盘和下面的分区情况
lsblk
#查看虚拟机磁盘使用情况
df -Th
#分区格式化
mkfs.xfs /dev/sda3 #其中,mkfs是命令,xfs将分区格式化为什么类型的文件系统,/dev/sda3就是需要格式化的分区
#实现(取消)挂载
mount(umount) /dev/sda3 /mnt/test #其中/dev/sda3是新增的分区,/mnt/test是挂载的目录
#查看挂载信息
mount
1. 开始划分
1-1. 创建磁盘分区。
注意,分区需要使用‘8e’类型来使他们可用于LVM
预先在linux服务器/ 或VMware上添加一块磁盘。随后通过 lsblk 命令查看新添加的磁盘。通过fdisk /dev/<新增磁盘名>对新增磁盘进行管理,实现分区,磁盘情况如下:
需要将vda、vdb剩余资源划分给/data下
1-2 进行磁盘扩展之后发现我的sda这块磁盘变为了80G,但是sda下的sda1和sda2分区依旧是之前的70个G。此时就需要将新增的磁盘利用起来,就需要进行分区。
1-3 进行分区
------------------------------- -----------------------------------------------------
fdisk /dev/vda
n-->p-->t-->8e-->w-->partprobe
fdisk /dev/vdb
n-->p-->t-->8e-->w-->partprob
使用fdisk /dev/sda对sda磁盘进行管理,然后就会进入到管理界面。通过使用m来查看帮助。
按下n来创建新的分区,然后再按p来创建主分区。此时会叫你选择分区号,因为我之前有sda1和2,所以默认就是3号分区。这时候回车就行。
然后就是对这块分区进行设置大小。默认回车就是将刚才新加的磁盘大小全部放入这个分区中。然后可以按下p来查看此时这个磁盘的分区,我显示的为三块分区,sda1、2、3。第三块是刚才创建的,为10G。最后按下w进行保存。
————————————————