八、磁盘管理
磁盘在存储数据的介质上分为机械硬盘(HHD)和固态硬盘(SSD),机械硬盘采用磁性碟片来存储数据,固态硬盘通过闪存颗粒来存储数据
对比 | 固态磁盘 | 机械硬盘 |
容量 | 较小 | 较大 |
读/写速度 | 极快 | 一般 |
写入次数 | 5000到10万次 | 没有限制 |
工作噪声 | 极低 | 有 |
工作温度 | 极低 | 较高 |
防震 | 很好 | 怕震动 |
重量 | 低 | 高 |
价格 | 高 | 低 |
8.1 磁盘分区
8.1.1 为什么要分区
- 易于管理和使用:挺过分区可以归纳文件到对应的区方便对文件进行系统管理
- 有利于数据的安全:通过粪污可以降低数据损失的风险。出现磁盘坏道、错误操作、重装系统都有可能造成数据损失,如果分区了,就可以将损失只局限在某个盘。
- 节约寻找文件的时间:分区后寻找对应文件只需在对应分区里寻找,不用进行全盘搜索
8.1.2 硬盘分区表示
在linux中一切皆文件,硬盘等设备也表示文件
/dev/hda1
/dev代表硬盘设备文件所在的目录
hda1:
- hd
hd代表IDE设备
sd代表SCSI设备
vd代表虚拟设备
- a
硬盘的数序号以子母表示从a开始
- 1
分区的数序号
8.1.3硬盘的分区结构
硬盘中的主分区数目只有4个,主分区和扩展分区的序号也就限制在1-4,扩展分区再分为逻辑分区,所以逻辑分区的序号是从5开始。
物理磁盘:真实的硬盘称为物理磁盘
逻辑磁盘:分区后使用的磁盘,称为逻辑磁盘,一部物理磁盘可以分为一个逻辑磁盘,也可以分为多个逻辑磁盘
扩展分区:扩展分区可以被继续划分为多个逻辑分区,逻辑分区是可以进行格式化的
8.2 磁盘分区挂载格式化文件系统
linux的磁盘分区至少要有一个根分区(挂载点\)和一个交换分区(SWAP)
磁盘设备是由大量的扇区组成的,每个扇区的容量为512字节,第一个扇区保存着主引导纪录与分区表信息。主引导记录占446字节,分区表占64字节,结束符占2字节;其中分区表中每记录一个分区就需要16字节,所以只有4各分区的信息可以写到第一个扇区中,这四个分区就是主分区。
扩展分区并不是一个真正的分区,而是一个占用了16个字节分区表空间的指针————一个指向另外一个分区的指针。
8.2.1磁盘分区
在linux中使用fdisk命令或者parted进行磁盘分区,fdisk较为常用,它不支持2TB以上的分区;如果需要分区大于2TB以上大小的磁盘需要使用parted命令。
在分区前需要再加一块虚拟磁盘,以防止格式化当前磁盘
使用fdisk -l 列出系统分区
使用fdisk 跟设备文件名
8.2.2 磁盘格式化
格式化:指将分区格式化成不同的文件系统
文件系统:指操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织组织文件的方法
linux下的文件类型有ext2、ext3、ext4、xfs等等,可以使用mkfs.然后Tab补全查看有哪些文件类型
磁盘格式化:使用
mkfs.ext3(文件类型) /dev/sda2
8.2.3 磁盘挂载
一般我们把磁盘文件挂载在/media 和 /mnt 这两个目录,我们也可以自己创建一个目录进行挂载
使用命令
mount /dev/sda2 /media
将 sda2 挂载到了media目录下
使用
umount /dev/sda2
进行卸载
使用
df -h
查看挂载的详细情况
如果想要永久挂载就要使用vim或vi进入/etc/fstab
在最后一行写入 挂载的文件位置 挂载的位置 文件类型 defaults 0 0 ,写完一项敲Tab写下一项,而不是敲空格
8.3 RAID 磁盘冗余阵列
磁盘阵列就是把多块独立的硬盘组合成一个容量巨大的硬盘组,利用个别硬盘的提供数据所产生的加成效果提升整个系统效能,并通过存储冗余数据增加容错能力
常见的RAID组合方式为: RAID0、RAID1、RAID5、RAID6、RAID10、RAID01
RAID 0(条带式):至少需要两块盘,每个数据分开写到各个盘中
优点
成本低,可以提高整个磁盘的性能和吞吐量
提高读写速度,对硬盘的总容量没有损失
处理大文件很快
缺点
一旦阵列中某块硬盘损坏了,所有数据将不可恢复
RAID:1至少需要两块盘,每个数据都备份
优点
读取性能翻倍。
提供数据冗余,如果其中一块数据丢失,可以通过另一块还原
缺点
磁盘的利用率低,成本高
磁盘控制器的负载大
RAID2:类似于RAID0只是加入了汉明码来做数据的纠错
优点
加入了数据纠错机制
缺点
成本增高,需要额外的盘做汉明码纠错
RAID 3:如果有n快盘,其中1块盘作为效验盘。当其中的一个数据坏掉时可通过校验盘恢复数据
优点:
加入了数据纠错机制
提高读取和写入速度
缺点:
做奇偶校验会消耗系统性能,容易导致系统出现性能瓶颈
校验盘坏掉数据就无法恢复
RAID 4:和 RAID 3 一样,唯一的区别是在数据分割上 RAID 3 对数据的访问是按位进行的,RAID 4 是以数据块为单位,也就是按磁盘进行的,每次是一个盘
RAID5:最少包括三个磁盘,RAID 5 综合了 RAID 0 的条带化技术以及阵列数据冗余技术。与RAID3不同的是校验码分布在不同磁盘中
优点:
块式的集体访问效率高
有校验机制。
空间利用率高
缺点:
组成 RAID 5 的磁盘越多,安全性能越差,容易丢失数据。连续两块硬盘损坏,数据就找不回来了
读出效率很高,写入效率一般
RAID6:和RAID5类似,比RAID5多了一个校验码
RAID01: 至少需要四快盘,RAID 0 + RAID 1,两边都是条带化的 RAID 0 存储数据,然后互为备份,组成镜像存储。一个盘故障不会影响数据,并提高了读取速度。
优点:
有数据备份,出现单点故障时可以恢复数据
有全冗余能力
快速读/写能力
缺点:
成本高
RAID10:至少需要四块盘,RAID 1 + RAID 0。先备份同一份数据然后再整体完成镜像,所以需要4n块盘
优点
高速度和低容错差控制
缺点
成本高
扩充性差
8.4 软 RAID和硬 RAID
8.4.1 软RAID
无独立的RAID控制卡,由操作系统和cpu来实现偶有的RAID功能。
因为软RAID吃cpu,所以速度比硬RAID慢
8.4.2 硬RAID
拥有独立的RAID控制卡,通过RAID卡实现所有的RAID功能,不占用cpu资源。
价格相对软RAID较高
8.4.3 构建软RAID磁盘阵列
要构建磁盘阵列首先需要在linux服务器上添加四块scsi硬盘,使用mdadm软件包,构建RAID5磁盘阵列,提高磁盘存储的性能和可靠性
- 构建磁盘阵列
首先需要安装mdadm工具
yum install mdadm
安装依赖包
yum install libreport-filesystem -y
下载对应的rpm包然后执行安装
rpm-ivh mdadm-4.1-9.el_9.x86_64.rpm
- 准备四块scsi硬盘,使用fdisk工具各划分出一块2GB的分区
- 创建RAID设备
mdadm -Cv /dev/md0 -a yes -n4 -l5 /dev/sd[bcde]1
- 创建并挂载文件系统
mkfs-t xfs /dev/md0
mkdir /raidme
mount /dev/md0 /raidme/
df -hT
cp /etc/fstab /etc/fstab.bak
vim /etc/fstab
8.5 LVM 逻辑卷
LVM 是 Logical Volume Manager 的简称,意思为逻辑卷管理。它是linux下对硬盘分区的一种管理机制。LVM适合于管理大存储设备,并允许用户动态调整文件系统的大小。LVM的快照功能可以帮助我们快速备份数据。LVM为我们提供了逻辑概念上的磁盘,时的文件系统不在关系底层物理磁盘的概念。
LVM 是在硬盘分区至上建立一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一块逻辑硬盘,然后把这块逻辑硬盘分成逻辑卷之后使用,。大大提高了分区的灵活性。我们把真实的物理硬盘或分区称作物理卷(PV);把多个物理卷组成的一块大的逻辑硬盘,叫做卷组(VG);将卷组划分成多个可以使用的分区叫做逻辑卷(LV)。而在LVM中最小的存储单位不再是block,而是物理扩展块(PE)
8.5.1 LVM操作
使用fdisk,建立物理分区
fdisk /dev/sdb
查看所建立的分区
创建物理卷(PV)
pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
创建卷组(VG)
vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3
创建逻辑卷(LV)
lvcreate -L 100M -n lv1 volume-group1
格式化并挂载逻辑卷
mkfs.ext4 /dev/volume-group1/lv1
mkdir /lvm-mount
mount /dev/volume-group1/lv1 /lvm-mount/
使用lvremove删除逻辑卷
首先需要取消挂载
umount /lvm-mount/
lvremove /dev/volume-group1/lv1
扩建和缩减LVM 卷
- 扩大
将创建的100m大小的逻辑卷扩大为300m
lvresize /lvextend -L 300M /dev/volume-group1/lv1
检查磁盘错误
e2fsck -f /dev/volume-group1/lv1
运行以下命令扩展文件系统以后,ex4信息就更新了
resiz2fs /dev/volume-group1/lv1
检查LV 的状态来验证
lvdisplay
- 缩减
首先需要先取消挂载
umount /dev/volume-group1/lv1
检查磁盘
e2fsck -f /dev/volume-group1/lv1
缩小文件系统
resize2fs /dev/volume-group1/lv1 100M
减小逻辑卷
lvresize -L 100M /dev/volume-group1/lv1
检查状态
lvdisplay
- 扩建一个卷组
如果想要扩建卷组,需要再加一块磁盘(sdc)
检查当前卷组状态
vgdisplay volume-group1
创建一个1GB的分区sdc1,类型为LVM(8e)
fdisk /dev/sdc
创建一个物理卷 /dev/sdc1
pvcreate /dev/sdc1
增加到已存在对的卷组'volume-group1'上
vgextend volume-group1 /dev/sdc1
验证
vgdisplay