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=1 024TB) 的
卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 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 来改变
看看分区记录
gdisk 和 fdisk 非常类似
创建新分区的时候可以看见可以有 128 个分区
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 类似 windows 的虚拟内存/page file,当内存
不足的时候,数据保存在 swap 中。
有两种方式可以使用:
第一种单独用一个分区来作为 swap
创建一个分区(如: /dev/sdb3),并更改分区 ID 为 82
执行 partx –a /dev/sdb 命令,使分区修改生效
在分区上创建 swap 文件系统
修改 fstab 实现自动加载,并查看
第二种方式是创建一个文件块,这个文件所占有的空间作为 swap 使用
创建一个2G的文件并改变文件格式类型,然后启用swap文件。
对于普通的分区,扩展度不高,一旦分区格式化完成,很难灵活的再增加或者减少分区大小。
为了解决这个问题,可以使用 LVM(逻辑卷)。基本过程是把物理磁盘或者分区初始化称为
物理卷( PV),然后把 PV 加入 VG(卷组),最后在 VG 上划分逻辑的分区( LVM), LVM 可
以当做普通的分区进行格式化和挂载。
将准备的磁盘或分区创建 PV
可以执行 pvdisplay 查看 PV 的详细信息, pvremove 删除 PV
创建完 PV,之后,需要创建 VG,然后添加 PV 到 VG 中
可以通过 vgdisplay 查看具体的信息,注意 PE 的 Size 是 4M,这个是增减的最小计算单位
注:创建 VG 时:使用–s 选项的作用是在创建时指定 PE 块(物理扩展单元) 的大小,默认是
4M。
如: # vgcreate volGroup03 -s 8M /dev/sdb[12])
我们可以继续往 vg 里面添加新的分区
若事先没有把 sdb3 转化为 pv,而是直接添加到 vg 里面,不过一旦添加了他自动就初始化
成 pv 了。
可以添加当然也可以减少 pv。 #vgreduce vg00 /dev/sdb3
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 里面去。方便等下做试验
现在我们就为逻辑卷/dev/vg00/lv00 来做快照
执行 lvscan 查看创建好的逻辑卷
可以看到/dev/vg00/lv00 是原始逻辑卷,而/dev/vg00/lvsp00 是快照
执行 lvdisplay 或 lvs 命令查看逻辑信息
可以看到逻辑卷快照创建成功了,
注意:这个快照卷建好之后,是不需要格式化也不需要进行挂载的。格式化或挂载都会出现
的错误提示的。
模拟将原逻辑卷中的数据删除
如何恢复原逻辑卷的数据?有两方式可以恢复删除的数据
方式一是先将原逻辑卷卸除挂载#umount /dev/vg00/lv00
然后挂载逻辑卷快照即可 #mount /dev/vg00/lvsp00 /data,就可以正常访问数据了
方式二可以通过 lvconvert 把快照的内容重新写回原有的 lvm
先将原逻辑卷卸除挂载#umount /dev/vg00/lvsp00
执行 lvconvert 将快照的数据合并到原逻辑卷 #lvconvert --merge /dev/vg00/lvsp00
最后挂载原逻辑卷,查看数据是否恢复成功
注:当我们把原逻辑卷里面的数据给删除了,逻辑卷快照里面的数据还在,所以可以用快照
恢复数据。 而当我们在逻辑卷里面添加数据, 快照是不会发生改变的, 是没有这个文件的。
因为快照只会备份当时逻辑卷的一瞬间。
使用 ssm(系统存储管理器)进行逻辑管理
逻辑卷管理器( LVM)是一种极其灵活的磁盘管理工具,它让用户可以从多个物理硬驱创建
逻辑磁盘卷,并调整大小,根本没有停机时间。 最新版本的 CentOS/RHEL 7 现在随带系统存
储管理器(又叫 ssm),这是一种统一的命令行界面,由红帽公司开发,用于管理各种各样
的存储设备。目前,有三种可供 ssm 使用的卷管理后端: LVM、 Btrfs 和 Crypt
准备 ssm, 在 CentOS/RHEL 7 上,你需要首先安装系统存储管理器。 可以通过 rpm 或 yum
首先我们来检查关于可用硬盘和 LVM 卷的信息。下面这个命令将显示关于现有磁盘存储设
备、存储池、 LVM 卷和存储快照的信息。
执行 #ssm list来查看,如下图所示:
上图显示,有两个物理设备( “/dev/sda”和“/dev/sdb”)、 二个存储池( “centos 和 vg00”) ,
以及存储池vg00 中创建的两个 LVM 卷( “dev/vg00/lv00”和“/dev/vg00/lv01”),存储池 vg00 中
创建的一个 LVM 卷( /dev/vg00/lv00)。
下面来讲解如何通过 ssm 创建、管理逻辑卷和逻辑卷快照
至少新添加一块磁盘,执行 ssm 命令显示现有磁盘存储设备、存储池、 LVM 卷的信息
可以看到有两块空闲磁盘( sdc、 sdd)
创建新的 LVM 池/卷,不妨看一下如何在物理磁盘驱动器上创建新的存储池和新的 LVM 卷。如果使用传统的 LVM 工具,整个过程相当复杂,需要准备分区,需要创建物理卷、卷组、逻辑
卷,最后还要建立文件系统。不过,若使用 ssm,整个过程一蹴而就!
下面这个命令的作用是,创建一个名为 mypool 的存储池,创建存储池中名为 lv01 的 500MB
大小的 LVM 卷,使用 XFS 文件系统格式化卷,并将它挂载到/mnt/test 下。
验证 ssm 创建的结果
或执行 ssm list
将物理磁盘(sdd)添加到 LVM 池
新设备添加到存储池后,存储池会自动扩大,扩大多少取决于设备的大小。检查名为 centos
的存储池的大小执行 ssm list 查看
接下来,我们来扩大现有的 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 扩展成功
逻辑卷快照
对现有的 LVM 卷(比如/dev/mypool/lv01 ) 生成快照
一旦快照生成完毕,它将作为一个特殊的快照卷存储起来,存储了原始卷中生成快照时的所
有数据
每次原 LVM 中的数据更改,都可以手动执行 ssm snapshot 生成快照
当原 LVM 数据损坏就可以用快照恢复了
方式一是先将原逻辑卷卸除挂载 #umount /dev/vg00/lv00
然后挂载逻辑卷快照即可 #mount /dev/vg00/lvsp00 /data,就可以正常访问数据了