CentOS7
--9--磁盘分区、格式化及LVM
管理
目录
RHEL7
如何对磁盘进行分区和格式化以及如何配置LVM
,与以前版本的RHEL
区别不大,可以通过disk
工具(在图形桌面中运行)或命令工具(如:fdisk
、gdisk
、parted
)管理硬盘设备。fdisk
可以配置MBR
格式;
gdisk
配置gpt
格式,parted
可以自己选择。
传统的硬盘分区都是MBR
格式,MBR
分区位于0
扇区,他一共512
字节,前446
字节是grub
引导程序,这个会在后面学习;中间64
字节是分区表,每个分区需要16
个字节表示,因此主分区和扩展分区一共只能有4
个分区,超过4
个的分区只能从扩展分区上再设置逻辑分区来表示。每个分区的大小无法超过2T
。
MBR
的最后2
个字节是结束符号
GPT
格式,打破了MBR
的限制,可以设置多达128
个分区,分区的大小根据操作系统的不同有所变化,但是都突破了2T
空间的限制。支持高达18EB
(1EB=1024PB
,1PB=1024TB
)
的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区ID
(GUID)。与 MBR
分区的磁盘不同,GPT
的分区信息是在分区中,而不象MBR一样在主引导扇区。为保护GPT不受MBR类磁盘管理软件的危害,GPT
在主引导扇区建立了一个保护分区(Protective MBR
)的MBR
分区表,这种分区的类型标识为0xEE
,这个保护分区的大小在Windows下为128MB
,Mac OS X
下为200MB
,在Window
磁盘管理器里名为GPT
保护分区,可让MBR类磁盘管理软件把GPT
看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘
在MBR
硬盘中,分区信息直接存储于主引导记录(MBR
)中(主引导记录中还存储着系统的引导程序)。但在GPT
硬盘中,分区表的位置信息储存在GPT
头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR
,之后才是GPT
头。
一、分区概述
GPT
的结构如下图:
首先看看当前的硬盘信息
可以在/proc/partitions
这个文件查看当前的分区
先试试MBR
格式的分区,fdisk
选项如下所示
输入n
,可以创建新的MBR
分区,然后输入p
可以显示当前的分区状态
重复n
的操作,添加其他分区。
注:MBR
格式磁盘最多可以创建4个主分区或3个主分区1个扩展分区,在扩展分区中可以创建若干个逻辑分区。
注意id
代表了磁盘的用途,可以通过t来改变
看看分区记录
1. gdisk
使用
gdisk
和fdisk
非常类似
创建新分区的时候可以看见可以有128
个分区
2.parted
使用
parted
,和前两个相比,更灵活,可以自行设定MBR
或GPT
格式和分区
通过mklabel msdos
可以设定为MBR
格式,然后可以通过mkpart
来划分分区
msdos
设定为MBR
格式,gpt
设定为GPT
格式
primary
代表主分区,extended
代表扩展分区,logical
代表逻辑分区。
set number flag
state
用于设置分区的用途,flag:boot、lvm、raid
。State:on/off
表示开启或关闭。
parted
工具分完区后无需保存,输入q
退出即可。
划分好分区之后,还需要格式化才能使用。可以通过mkfs/mkswap
来格式化文件系统
#mkfs.xfs /dev/分区设备名或#mkfs -t xfs /dev/分区设备名
可以修改fstab
实现自动加载
测试是否能自动挂载
通过df -h
查看已经挂载了的设备
-T
选项可以显示设备的文件系统类
有的挂载点路径比较长,自动分2行显示,可以-P
强制一行显示
如同进程有pid
,用户有uid
,每个文件系统也有自己的id
,称为uuid
,但是不是每个分区都有;如果某个分区没有文件系统,那么这个分区是没有uuid
的。
可以通过 blkid
(block id
)来查看。注意uuid
标记的是文件系统,而不是分区。uuid
的好处在于可以通过uuid
这个唯一值来挂载系统,这样可以避免因为删除硬盘造成的错位,sda6
变成了sda5
等等
我们可以通过xfs_admin -U
来手动更改文件系统的uuid
附:在目录里面可以通过 ls -ld
查看目录的属性,ls -la
查看内容的属性,但是-ld
显示的目录大小只有4K
,这仅仅是目录本身的大小,要想查看目录和其内容的整个大小,可以通过du
来查看,如果只想看最终结果,使用-s
(summary
)就行了
二、创建swap
下面我们来看看swap
分区如何手动创建。swap
类似windows
的虚拟内存/page file
,当内存不足的时候,数据保存在swap中。
有两种方式可以使用:
1.第一种单独用一个分区来作为swap
创建一个分区(如:/dev/sdb3
),并更改分区ID
为82
执行partx –a /dev/sdb
命令,使分区修改生效
在分区上创建swap
文件系统
修改fstab
实现自动加载
2.第二种方式是创建一个文件块,这个文件所占有的空间作为swap
使用
三、LVM
对于普通的分区,扩展度不高,一旦分区格式化完成,很难灵活的再增加或者减少分区大小。为了解决这个问题,可以使用LVM
(逻辑卷)。基本过程是把物理磁盘或者分区初始化称为物理卷(PV
),然后把PV
加入VG
(卷组),最后在VG
上划分逻辑的分区(LVM
),LVM
可以当做普通的分区进行格式化和挂载。
1.创建PV
将准备的磁盘或分区创建PV
可以执行pvdisplay
查看PV
的详细信息,pvremove
删除PV
创建完PV
,之后,需要创建VG
,然后添加PV
到VG
中
可以通过vgdisplay
查看具体的信息,注意PE
的Size
是4M
,这个是增减的最小计算单位
注:创建VG
时:使用–s
选项的作用是在创建时指定PE
块(物理扩展单元)的大小,默认是。
如:# vgcreate volGroup03 -s /dev/sdb[12]
我们可以继续往vg
里面添加新的分区
若事先没有把sdb3
转化为pv
,而是直接添加到vg
里面,不过一旦添加了他自动就初始化成pv
了。
可以添加当然也可以减少pv
。#vgreduce vg00 /dev/sdb3
2.创建LVM
VG
准备就绪,可以创建了LVM
了
注意看他的大小其实是112M
,因为PE
的大小是4M
,这个4M
是最小单位,不能破开,因此28
个PE
就是112M
注:大L
可以直接指定大小,小l
是指定多少个PE的值
也可以设置剩余空间的百分比
删除逻辑卷#lvremove /dev/vg00/lv01
对已经创建的逻辑卷,可以当做普通分区一样格式化和挂载
修改/etc/fstab
文件实现开机自动挂载。
扩展一个逻辑卷,增加300M
,首先要确保卷组有大于300M
的空闲空间。
执行lvextend
扩展逻辑卷大小
注意逻辑卷的文件系统仍然是109M
没有改变,我们还需要填充文件系统的空白。
RHEL7
可以用xfs_growfs
来扩大XFS
文件系统,也可以直接用resize2fs
来处理设备
注意的是
XFS
系统只能增长,不能减少!因此如果需要减少LVM
的话,分区只能使用ext4
了
执行df
查看扩展后的文件系统
四、逻辑卷快照
LVM
提供一个极妙的设备,它是snaphot
。允许管理员创建一个新的块装置,在某个时间点提供了一个精确的逻辑卷副本,快照提供原始卷的静态视图LVM
快照通过把文件系统的改变记录到一个快照分区,因此当你创建一个快照分区时,你不需要使用和你正创建快照的分区一样大小的分区,所需的空间大小取决于快照的使用,所以没有可循的方法来设置此大小。如果快照的大小等于原始卷的大小那么快照永远可用。
快照是特殊的逻辑卷,只可以对逻辑卷做快照。逻辑卷快照和需要做快照的逻辑卷必须在同一个卷组里面
现在在我们的系统中有个逻辑卷/dev/vg00/lv00
,我们用lvdisplay
来查询一下这个逻辑卷
可以看到,这个逻辑卷/dev/vg00/lv00
的大小是309M
。我们将这个逻辑卷/dev/vg00/lv00
挂载到/data
下面。复制一些数据到/data
里面去。方便等下做试验
1.lvcreate
创建快照
现在我们就为逻辑卷/dev/vg00/lv00
来做快照
执行lvscan
查看创建好的逻辑卷
可以看到/dev/vg00/lv00
是原始逻辑卷,而/dev/vg00/lvsp00
是快照
执行lvdisplay
或lvs
命令查看逻辑信息
可以看到逻辑卷快照创建成功了,
注意:这个快照卷建好之后,是不需要格式化也不需要进行挂载的。格式化或挂载都会出现的错误提示的。
模拟将原逻辑卷中的数据删除
2.恢复逻辑卷数据
如何恢复原逻辑卷的数据?有两方式可以恢复删除的数据
方式一是先将原逻辑卷卸除挂载#umount /dev/vg00/lv00
然后挂载逻辑卷快照即可 #mount /dev/vg00/lvsp00 /data
,就可以正常访问数据了
方式二可以通过lvconvert
把快照的内容重新写回原有的lvm
先将原逻辑卷卸除挂载#umount /dev/vg00/lv00
执行lvconvert
将快照的数据合并到原逻辑卷#lvconvert --merge /dev/vg00/lvsp00
最后挂载原逻辑卷,查看数据是否恢复成功
注:当我们把原逻辑卷里面的数据给删除了,逻辑卷快照里面的数据还在,所以可以用快照恢复数据。而当我们在逻辑卷里面添加数据,快照是不会发生改变的,是没有这个文件的。因为快照只会备份当时逻辑卷的一瞬间。
五、使用ssm
(系统存储管理器)进行逻辑管理
逻辑卷管理器(LVM
)是一种极其灵活的磁盘管理工具,它让用户可以从多个物理硬驱创建逻辑磁盘卷,并调整大小,根本没有停机时间。最新版本的CentOS/RHEL7
现在随带系统存储管理器(又叫ssm
),这是一种统一的命令行界面,由红帽公司开发,用于管理各种各样的存储设备。目前,有三种可供ssm
使用的卷管理后端:LVM
、Btrfs
和Crypt
1.安装ssm
准备ssm
,在CentOS/RHEL 7
上,你需要首先安装系统存储管理器。可以通过rpm
或yum
工具安装
首先我们来检查关于可用硬盘和LVM
卷的信息。下面这个命令将显示关于现有磁盘存储设备、存储池、LVM
卷和存储快照的信息。
#ssm list
在这个例子中,有两个物理设备(/dev/sda
和/dev/sdb
)、二个存储池(rhel
和vg00
),以及存储池rhel
中创建的两个LVM
卷(dev/rhel/root
和/dev/rhel/swap
),存储池vg00
中创建的一个LVM
卷(/dev/vg00/lv00
)。
下面来讲解如何通过ssm创建、管理逻辑卷和逻辑卷快照
至少新添加一块磁盘,执行ssm
命令显示现有磁盘存储设备、存储池、LVM
卷的信息
可以看到有两块空闲磁盘(sdc
、sdd
)
2.创建新的LVM池/卷
在这个示例中,不妨看一下如何在物理磁盘驱动器上创建新的存储池和新的LVM卷。如果使用传统的LVM
工具,整个过程相当复杂,需要准备分区,需要创建物理卷、卷组、逻辑卷,最后还要建立文件系统。不过,若使用ssm
,整个过程一蹴而就!
下面这个命令的作用是,创建一个名为mypool
的存储池,创建存储池中名为lv01
的500MB
大小的LVM
卷,使用XFS
文件系统格式化卷,并将它挂载到/mnt/test
下。
验证ssm
创建的结果
或执行ssm list
将物理磁盘sdd
添加到LVM
池
新设备添加到存储池后,存储池会自动扩大,扩大多少取决于设备的大小。检查名为centos
的存储池的大小执行ssm list
查看
3.使用ssm
扩展LVM
接下来,我们来扩大现有的LVM
卷
扩大LVM
卷,不妨将/dev/mypool/lv01
卷的大小增加300MB
。
如果你在存储池中有额外空间,可以扩大存储池中现有的磁盘卷。为此,使用ssm
命令的resize
选项
`
执行ssm list
查看扩大后逻辑卷
可以看到逻辑卷扩大到800M
,即在原来的基础上增加了300M
,但文件系统大小(Fs size
)还没有改变,仍然是原来的大小。
为了让文件系统识别增加后的卷大小,你需要“扩大”现有的文件系统本身。有不同的工具可用来扩大现有的文件系统,这取决于你使用哪种文件系统。比如说,有面向EXT2/EXT3/EXT4
的resize2fs
、面向XFS
的xfs_growfs
以及面向Btrfs
的btrfs
,不一而足。
在这个例子中,我们使用CentOS 7
,XFS
文件系统在默认情况下创建。因而,我们使用xfs_growfs
来扩大现有的XFS
文件系统。
扩大XFS
文件系统后,查看结果
或执行#df -hT
可以看到LVM
扩展成功
3.逻辑卷快照
对现有的LVM
卷(比如/dev/mypool/lv01
)生成快照
一旦快照生成完毕,它将作为一个特殊的快照卷存储起来,存储了原始卷中生成快照时的所有数据
每次原LVM
中的数据更改,都可以手动执行ssm snapshot
生成快照
4.快照恢复
当原LVM
数据损坏就可以用快照恢复了
方式一是先将原逻辑卷卸除挂载 #umount /dev/vg00/lv00
然后挂载逻辑卷快照即可#mount /dev/vg00/lvsp00 /data
,就可以正常访问数据了
方式二可以通过lvconvert
把快照的内容重新写回原有的lvm
先将原逻辑卷卸除挂载#umount /dev/vg00/lv00
执行lvconvert
将快照的数据合并到原逻辑卷 #lvconvert --merge /dev/vg00/lvsp00
最后挂载原逻辑卷,查看数据是否恢复成功
有磁ssm
的具体用法可以参考ssm
的帮助手删页
如:删除LVM卷#ssm remove <volume>
删除存储池#ssm remove <pool-name>