磁盘插入到使用步骤
左边是window系统的分盘方法
右边是Linux系统中磁盘的插入到使用的步骤
1 去机房插入磁盘 可看装机视频尝试
2 建议进行分区 不分区不方便,如果中毒会全盘都坏,分区只会影响那一个区
3 创建文件系统 主要用 xfs 文件系统 mkfs.xfs 磁盘路径(如果磁盘已经分区,分区的路径,如/dev/sdb3)
一定要格式化,如果没有格式化就挂载,会显示只读文件且挂载失败
4 最好在挂载目录下(/mnt)创建新目录 然后挂载在新目录下,这样新插入的磁盘不会影响原来的数据
如果挂载在已有目录上,会盖住该目录原来的数据,取消挂载时原来数据才会显示
5 挂载 没有挂载时 磁盘和Linux系统相当于是紧贴着但是互不干扰的两个东西 要进行挂载才可以使用磁盘的空间进行操作
挂载方法: 比如 将磁盘 sdb 的一个主分区 sdb3 挂在到一个新目录下
mkdir /mnt/test ; mount /dev/sdb3 /mnt/test/
6 可以在里面写入文件或者进行别的操作等等(磁盘已经可以使用)
lsblk:列出已经识别的磁盘情况
blkid:查看磁盘的文件系统类型和UUID
df -h:查看磁盘的挂载情况
查看分区表命令 :
fdisk -l [磁盘路径] (不加磁盘路径就显示全部磁盘的分区表情况)
parted 磁盘路径 print
partx -s 磁盘路径 (磁盘路径比如 /dev/sda dev/sdb …)
7 认识存储介质
1 容量单位说明
带 s | S 的数字 | 表示:扇区的个数 |
---|---|
带 b | B 的数字 | 表示:Byte字节=8个bit位 |
带 k | K 的数字 | 表示:KiB千字节=1024Byte |
带 m | M 的数字 | 表示:MiB兆字节=1024KiB |
带 t | T 的数字 | 表示:TiB=1024MiB |
带 g | G 的数字 | 表示:GiB=1024TiB |
带 p | P 的数字 | 表示:PiB=1024GiB |
2 存储介质类型
软盘 已淘汰
磁盘 用于磁性存储 (磁碟硬盘)
U盘 属于半导体存储
SSD固态硬盘 属于半导体存储
磁带机 属于磁性储存
光盘 属于光刻储存(光碟)
热插拔:就是正在使用情况下进行添加拔出操作,不支持热插拔的话,需要关机再进去插入磁盘,支持的话,可以在不使用的时候进行插入拔出
完全支持热插拔可以在使用的时候进去插入拔出操作
★ IDE 不支持 热插拔 已淘汰
★ SATA 2.0 支持 热插拔(需要主板支持和相关驱动,不建议这种)
★ SCSI 完美支持 热插拔
SATA 比如u盘接口,看颜色 黑色是2.0接口 蓝色是3.0,黑蓝结合是3.0以上比如3.1 3.2 花里胡哨的u盘一般都是2.0
不要当大冤种 还有有的过于便宜可能是扩展了内存,实际内存达不到,有条件买移动硬盘,没条件买u盘
u盘建议最高16G 因为用几年可能会损坏丢失数据,固态硬盘也会有使用年限,机械硬盘没有使用年限,但是可能会被人为损坏
3 磁盘的构造
本人只去了解了接口
接口:
IDE 接口 又称 PATA接口 (并行接口)已经淘汰
SATA接口 个人电脑泛用(串行接口)
SCSI接口 服务器泛用
SAS是 STAT 和 SCSI 的结合
7.1 存储介质的加载
1 磁盘设备名称
linux中一切皆文件
磁盘块设备的文件目录是:/dev目录 比如sda sdb… 都是磁盘名字
2 lsblk 命令
blk是block的缩写 块 lsblk 是查看 块设备文件 信息 磁盘是块设备文件 权限那里 以 b开头(详情看3.1)
功能:列出系统已识别的磁盘 刚插入的新磁盘没有进行扫描识别操作时不会列出
语法 :lsblk [选项] [指定设备]
选项有 -o 输出指定的字段,不指定会显示默认字段
默认字段没有HCTL在里面,移除 磁盘设备需要热拔出命令 其中需要HCTL ,这时候就要使用 -o 指定 HCTL 显示出来
lsblk ## 显示所有已经识别的磁盘信息
lsblk /dev/sdc ## 显示磁盘sdc的信息
lsblk -o NAME,SIZE,TYPE,HCTL /dev/sdc ## 只显示指定的字段信息
lsblk -o +NAME,SIZE,TYPE,HCTL /dev/sdc ## 显示指定的字段信息和默认字段信息
lsblk -o +HCTL /dev/sdc ## 显示HCTL字段信息和默认字段信息,热拔出时候需要查看
常用的字段意思如下
NAME # 块设备名
MHJ:MIN # 主设备号:次设备号
RM # 是否为可移动设备 1 表示:可移动(如:光驱、U盘) 0 表示:不可移动(机械硬盘等等)
SIZE # 块设备大小
RO # 是否是<只读设备> 1 表示:只读 0 表示:读写
TYPE # 块设备类型
MOUNTPOINT # 块设备的mount挂载点
HCTL # SCSI设备的<Host:Channel:Target:Lun
3 扫描新插入磁盘命令
因为大部分磁盘(STAT磁盘)是热插拔功能,新插入磁盘会访问不到,我们要进行识别
首先我们要下载扫描识别磁盘的外部命令功能
yum install sg3_utils -y ## 下载 里面有识别 功能
以新插入SCSI磁盘为例子
热插入SCSI磁盘 记不住的话重启后也能刷新 lsblk 显示新插入的磁盘(一般机房不会重启)
scsi-rescan -a ## 扫描:SCSI 设备,从而设别新插入的SCSI 设备
lsblk ## 查看是否已经可以扫描到新插入的SCSI磁盘 扫描到即为成功
热拔出 移除该磁盘不能直接移除,要先通过命令拔出,坏盘无所谓
以 磁盘设备 /dev/sdb 为例
lsblk -o +HCTL /dev/sdb ## 首先要查看该磁盘的HCTL 如果是 0 0 1 0
echo "scsi remove-single-device 0 0 1 0" > /proc/scsi/scsi ## 执行拔出命令
## 到/proc/scsi/scsi文件里面把相关的磁盘设备内容删除也可以,可通过HCTL判断是哪几行
lsblk -o +HCTL ## 查看全部硬盘设备的HCTL和默认字段信息
7.2 基本分区
7.2.1 MBR分区 与 GPT分区
注意: 一个磁盘只能使用一种分区表格式
1 MBR 分区 介绍
MBR 分区是基于MBR 分区表划分出来的磁盘分区。
特点:MBR分区一般把磁盘分为三个主分区,一个扩展分区,扩展分区又分为多个逻辑分区才能使用
扩展分区不能使用的,它只是做为逻辑分区的容器存在的;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中
注意:
主分区+扩展分区;最多只能有4个;可以理解为扩展分区属于一个主分区
扩展分区可以是0个,最多是1个 主分区最多四个 总之主分区加扩展分区加起来最多是四个
扩展分区不能直接使用,扩展分区必须首先创建成逻辑分区才能使用
逻辑分区可以是0个 1个 多个
MBR分区表保存位置:
MBR 分区表保存在磁盘的0扇区上
由于MBR 分区表中活动状态的主分区可以引导服务器启动,因此0扇区也被称之为主引导扇区
优点:
● 这是一个古老成熟的技术,兼容性好,所有系统均可识别。
● 专用于划分boot 引导分区,从而引导服务器启动。
缺点:
● 只有 4 个表记录行,因此,只能划分 4 个主分区,不能划分更多的主分区。
可以借助扩展分区,来划分更多的逻辑分区。(注意:逻辑分区不是主分区)
● 只能划分小于等于 2TB 的磁盘分区。
只能划分四个区的原因
1.MBR概述:全称为MasterBootRecord,即硬盘的主引导记录。
硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(DiskPartitiontable)和分区有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(bootloader)占446个字节,第二部分是Partitiontable区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magicnumber,占2个字节,固定为55AA。
分区编号:主分区1-4,逻辑分区5…… 1~4 不一定4就是扩展分区,可选 选好可用 lsblk 查看 内存显示分配1k即扩展分区
LINUX规定:逻辑分区必须建立在扩展分区之上,而不是建立在主分区上
2 GPT 分区 介绍
GPT 分区是:基于GPT 分区表划分出来的磁盘分区。
特点:GPT 分区最高可以分128主分区,这使得GPT成为管理大容量硬盘和多引导系统的良好选择。
GPT 分区表的保存位置:
出于兼容性考虑,0扇区用于保存MBR分区表,我们称之为PMBR(保护性MBR分区表)。
所以从1扇区开始之后的连续扇区用于保存GPT分区表。
GPT分区表最少也需占用1个扇区。
注意:Linux系统为了支持GPT 分区表,须创建一个 1MiB=1024KiB 的biosboot分区。
优点:
● 可划分更多的主分区(多于 4 个),针对 Linux 可划分多达 128 个的主分区。
● 可以划分大于 2TB 的磁盘分区。
缺点:
● 不能划分boot 引导分区,不能用于引导服务器启动。
7.2.2 fdisk 分区
适用于:管理 小于等于 2TB 分区
可以在里面进行 MBR 分区 或者 GPT 分区 都是傻瓜式操作
首先是MBR分区
1 查看磁盘分区情况
fdisk -l /dev/sdb ## 查看磁盘sdb 的分区情况 系统自带磁盘为sda
## 后面插入的都是sdb,sdc...等等
2 创建磁盘分区 有主分区和扩展分区
fdisk /dev/sdb
进去后可有选项进行选择 命令都有提示,根据提示操作即可 傻瓜式分区
常用:
m 显示帮助信息
n 添加新分区 进去后 p是添加主分区 ,e是添加扩展分区,l是添加逻辑分区 按提示来
d 删除分区
p 打印分区表 显示已有的分区 和 上面 fdisk -l /dev/sdb 一样
q 不保存更改就退出,出错时使用
w 将表写入磁盘并退出
g 创建新的空GPT分区表 默认是 MBR分区 这个命令是转变成GPT分区
o 创建一个新的空DOS分区表 (即进行MBR分区)
G 创建IRIX(SGI)分区表
l 列出已知的分区类型
s 创建一个新的空Sun磁盘标签
t 更改分区的系统id
u 更改显示/输入单位
v 验证分区表
下面是使用 fdisk 命令 为新插入的磁盘 /sdc 进行分区的例子 分一个主分区(6G) 一个扩展分区(10G) 一个逻辑区 (4G) 注意逻辑分区是使用扩展分区的内存
lsblk 查看已经识别的磁盘 发现磁盘 sdc 已经成功插入
fdisk /dev/sdc 进去对 sdc 进行操作 可分区可删区 可查看分区的情况
n 进行分区 提示 p是进行主分区 e是逻辑分区
p 进行主分区 显示起始扇区(默认是2048)可不写
回车 显示last扇区
+6G 完成分区 可按p查看分区情况
n
e 进行扩展分区
回车
+10G 完成分区,可用 p查看
n 因为已经有扩展分区,提示变成 p 和 l 分别代表进行主分区和逻辑分区
l 进行逻辑分区
回车
+4G 从扩展分区(10G)里面分出4G给它
p 查看分区信息,看是否操作有误 有误 q 不保存退出 无误 w
w 保存退出
lsblk 查看信息是否分区成功
7.2.3 parted/partx 分区
适用于:管理 大于 2TB 分区
partprobe是一个在Linux系统中用于重新读取磁盘分区表的命令。它用于通知操作系统重新扫描磁盘以更新分区信息,而无需重新启动系统。
partprobe ## 刷新磁盘的分区信息
有傻瓜式分区 有命令式分区
这里用命令式分区
语法: parted [选项] 磁盘路径 动作 [起始地址] [末尾地址]
选项有 -s 不询问 动作有 print mklabel(创建分区表) mkpart(创建分区) rm
创建分区:
parted 选项 磁盘路径mkpart [分区类型] [文件系统类型] [起始位置] [结束位置]
。
分区类型 : primary (主分区) logical(逻辑分区) extended(扩展分区) 注意:gpt分区只有主分区,所以可以使用gpt代替primary
文件系统类型 :xfs ext4 等等 可不写 可后面再进行格式化(创建文件系统)
要想给mbr创建逻辑分区,需要先创建扩展分区
扩展分区语法: mkpart extended [文件系统类型] [起始位置] [结束位置] 文件系统类型可不写
逻辑分区语法: mkpart logical [文件系统类型] [起始位置] [结束位置] 注意:是在扩展分区里面创建逻辑分区,结束位置不能超过扩展分区
查看 sdc 的分区表类型
parted -s /dev/sdc print 相当于 fdisk -l /dev/scd
1 使用 GPT 分区操作
创建 gpt 新分区表 如果本来有分区表且已经分区,会直接覆盖以前的分区表和分区
parted -s /dev/sdc mklabel gpt ## 得到一个空的分区表
创建 gpt 分区 创建两个分区 分区大小 第一个2G 第二个1G
注意:这里虽然使用 M 和 G 但是实际上是MB 和 GB
1GB 等于 1000*1000*1000等于1000MB
1G = 1024M 这里实际是创建 2GB 和 1GB
parted -s /dev/sdc mkpart gpt 2048s 2G
## 默认从2048s地址开始,2G结尾
## 大小是2048 到2G 共1999m 这里创建gpt分区1G是1000M
parted -s /dev/sdc mkpart gpt 2G 3G
注意:这里是创建gpt分区,只有主分区,所以 分区类型可以不写primary ,使用gpt代替 如果是用primary则如下
parted -s /dev/sdc mkpart primary 2048s 2G
查看分区
parted -s /dev/sdc print ## 查看分区是否创建成功
## 发现 分区1 大小是 1999MB 分区2 是 1000MB
## 使用 fdisk查看显示分区2是954mb如果是傻瓜式分区 使用+2G 这种情况 size会比较准确
删除 gpt 分区 比如删除分区 2 (sdc2)
parted -s /dev/sdc rm 2
2 使用 MBR 分区操作
注意: mbr 这里 是用 msdos 分区表 而不是 mbr 不然创建不了
创建 mbr 新分区表(msdos分区表) 如果本来有分区表且已经分区,会直接覆盖以前的分区表和分区
parted -s /dev/sdc mklabel msdos ## 得到一个空的分区表
创建 mbr 分区 创建两个主分区 分区大小 第一个2G 第二个1G 不能省略分区类型
parted -s /dev/sdc mkpart primary 2048s 2G
parted -s /dev/sdc mkpart primary 2G 3G
创建扩展分区 4G,且从扩展分区创建逻辑分区 2G
parted -s /dev/sdc mkpart extended 3G 7G ## 创建 扩展分区 4G
parted -s /dev/sdc mkpart logical 3G 5G ## 从扩展分区创建2G 的逻辑分区,也可以使用 0% 50% 作为起始和末尾进行内存分配
删除 mbr 分区 比如删除分区 2 (sdc2)
parted -s /dev/sdc rm 2
7.3 LVM 卷(分区)
7.3.1 LVM 简介
LVM 中文含义是 逻辑卷管理器
注意:只有MBR格式才能创建LVM内容,gpt不行
LVM 的主要功能 :
提高:分区管理的灵活性。
● 基本分区的扩展性受限,不能不连续扩展,不能跨磁盘扩展。
● LVM的逻辑卷的扩展性极好,可以不连续扩展,可以跨磁盘扩展。
提供:丰富的RIAD阵列功能。
LVM 的基本架构:
★ 物理硬盘 PS
★ 物理卷 PV :它是LVM中的最底层存储介质对象。每一个物理磁盘(如:硬盘、分区)均可成为一个PV。
★ 卷组 VG :组织并管理多个PV,从而实现:跨物理磁盘存储空间的统一分配与管理。
★ 逻辑卷 LV :LV是由VG分割而来的,是用于挂载并使用的文件系统分区,针对 LV 没有数量上的限制。
步骤: PS 创建 PV , PV 创建 VG , VG 创建 LV 几个PV组成VG,VG相当于一个大内存的硬盘,然后又可以根据需求创建对应内存的LV使用
格式化 LV 创建新目录 挂载 LV 开始使用
7.3.2 构建 lv 逻辑卷
步骤: PS 创建 PV , PV 创建 VG , VG 创建 LV ps就是物理硬盘(磁盘) PV 可以是磁盘,或者磁盘分区等等
个人理解: 就是先将多个磁盘或者磁盘分区(pv)合成一个大磁盘(VG),在进行分区(LV)
注意:如果忘记命令。可以用 pv vg lv ,打入后 tab 键显示所有相关的 操作,要有判断能力
1 创建PV物理卷
注意:创建成功PV的文件路径为 磁盘名 或 分区名 比如 /dev/sdb 或者 /dev/sdb1
语法 :pvcreate 选项 [ 分区 或 磁盘 或 分区里的一部分内存 ] 通过 pvs 命令查看
如果希望将整块磁盘创建为PV 物理卷,则需满足以下两个条件:
(1) 不可有分区
(2) 不可标记为GPT,只可以使用MBR
1 将/dev/sdc 整块磁盘创建为PV 物理卷
mkfs.xfs -f -y 磁盘路径
mkfs.xfs -f /dev/sdc ## 删除:所有分区(采用格式化方法),防止有分区
## -f 选项:强制
pvcreate -f -y /dev/sdc ## 创建:PV 物理卷 sdc的空间有20G
## -f 选项:强制
## -y 选项:自动同意
如果创建不了的话,说明可能没有格式化 可以进行格式化,如果格式化还不行,进行这个操作 mdadm --zero-superblock /dev/sdc清掉超级块
2 将/dev/sdb1 磁盘分区创建为PV 物理卷
pvcreate -f -y 磁盘分区路径
pvcreate -f -y /dev/sdb1 ## 创建:PV 物理卷 sdb1的空间有2G
3 将/dev/sdc1 磁盘分区的一部分创建为PV 物理卷 (了解即可,太难记)
pvcreate -f -y --setphysicalvolumesize 1G 磁盘分区路径
pvcreate -f -y --setphysicalvolumesize 1G /dev/sdb2 ## 创建:PV 物理卷 分区里面拿出1G容量,注意:分区里面必须有1G的空间未使用
## --setphysicalvolumesize 选项:指定容量大小
## sdb2的空间有2G,从里面拿出1G创建PV
pvs 查看 如下图所示
2 创建VG卷组
注意:创建成功VG的文件路径为 /dev/VG名
相当于创建新的一个自己设置容量的磁盘
相当于把VG卷组看作一个全新磁盘,然后创建LV相当于是分区,就是先将多个磁盘或者磁盘分区(pv)合成一个大磁盘(VG),在进行分区(LV)
语法 :vgcreate 选项 VG卷组名 [ pv路径… ] 可通过 vgs 命令查看
创建 VG 卷组 选项 -s 指定 物理扩展单元大小 数量会根据空间进行计算
vgcreate -s 4M vg01 /dev/sdc /dev/sdb1 /dev/sdb2 ## 创建VG 卷组 vg01 是 VG 卷组名 一共 23G,20+2+1 会有误差
vgcreate vg01 /dev/sdc /dev/sdb1 /dev/sdb2 ## 同上 默认块大小是 4MB
## -s 4M 设置:VG 卷组的PE 值,类似于 块 的容量,通过空间和容量自动计算块的数量
## PE :它是VG 卷组的最小存储单元,一旦设置,不可中途更改。
## -s 选项 是可选项,默认值为 4M = 4000K 这里是的M其实是MB
vgs 查看如下图所示
vgdisplay vg01 ## 可查看 PE Size 为多少
3 创建LV逻辑卷
注意:创建成功LV的文件路径为 /dev/VG名/LV名 或者 /dev/mapper/VG名-LV名
相当于分区
语法 :lvcreate 选项 LV名 VG卷组名 可通过 lvs 命令查看
lvcreate -L 1G -n lv01 vg01 ## 创建:固定容量为1G 大小的LV 逻辑卷 -n 指定lv名 可加 -y
lvcreate -y -L 1G -n lv02 vg01 ## 注意:这里 -n 必须写,不然无法识别是创建名
## -L 选项:设置固定大小
lvcreate -l 10 -n lv02 vg01 ## 创建:指定PE数量的 LV 逻辑卷,这里就是10个PE
## 在VG已经设置PE大小,不设置默认是4M ,这里就是设置一个40M的大小
## -l 选项:设置百分比大小或PE数量 是小写 L
lvcreate -l +10%FREE -n lv03 vg01 ## 创建:占剩余容量的10% 大小的LV 逻辑卷 注意是剩余容量不是全部容量
## -l 选项:设置百分比大小或PE数量
lvcreate -l +100%FREE -n lv04 vg01 ## 创建:占剩余容量的100% 大小的LV 逻辑卷
## -l 选项:设置百分比大小或PE数量
lvs 查看如下图
然后就是将 lv 进行 格式化,然后进行挂载,还有开机自动挂载等等
注意:这里的 lv 的文件路径是 /dev/vg01/lv01(软连接文件) 或 /dev/vg01-lv01
4 实战练习
题目:创建逻辑卷database,属于卷组datastore,逻辑卷的大小为10个物理扩展单元,物理扩展单元(physical extent)大小16M。使用ext3文件系统对新的逻 辑卷进行格式化。自动挂载在/mnt/database 目录下
逻辑卷database及其上文件系统大小为300M(290 ~ 310M是可以接受的)
创建新的swap分区512M,需要开机自动挂接,注意其它试题可能需要更多的分区。
mkfs.ext3 -f /dev/sdb 本人直接使用sdb磁盘创建PV
pvcreate -y /dev/sdb
vgcreate -y -s 16M datastore /dev/sdb
lvcreate -y -l 10 -n database datastore
mkdir /mnt/database
mkfs.ext3 -f /dev/datastore/database
vim /etc/fstab
写入 /dev/datastore/database /mnt/database ext3 default 0 0 第一步完成
示例
/dev/myvg/mylv /mnt/myvolume ext4 defaults 0 2
5 删除 LV VG PV
注意:删除一定要先删除LV,在删除VG,在删除PV
命令:lvremove
- 删除:LV
lvremove -y vg01/lv01 ## 删除:指定VG 卷组中的指定LV 逻辑卷
lvremove -y /dev/vg01/lv01 ## 这个也可以
## -y 选项:自动同意
lvremove -y vg01/lv02 ## 删除:指定VG 卷组中的指定LV 逻辑卷
lvremove -y vg01/lv03 ## 删除:指定VG 卷组中的指定LV 逻辑卷
命令:vgremove
- 删除:VG
vgremove -y vg01 ## 删除:指定VG 卷组
## -y 选项:自动同意
命令:pvremove
- 删除:PV
pvremove -y /dev/sdb /dev/sdc1 /dev/sdc2 ## 删除:指定VG 卷组
## -y 选项:自动同意
7.3.3 lvm 生产管理 扩容
注意:命令可以变成 lvresize 来代替 ,lvextend和lvreduce分别是扩大和缩小, 而 lvresize 都可以进行扩大缩写。
1 扩容:LV 逻辑卷
命令:lvextend
前提是 VG 卷组还剩未分配空间,切记给lv只能用同一个vg创建,要想扩容必须使用该vg,确保vg有空间
注意:只能使用同一个 VG 给 LV 卷扩容,所以需要先给 VG 卷组扩容
lvextend -L +2G /dev/vg01/lv01 ## 针对未格式化LV,内存增加2G
lvextend -r -L +2G /dev/vg01/lv01 ## 针对已格式化LV,内存增加2G
lvextend -r -L 2G /dev/vg01/lv01 ## 针对已格式化LV,总内存设置为 2G
## -L 选项:设置固定大小
## -r 选项:及时更新文件系统 superblock 超级块,否则后面需要resize2fs修复
lvextend -l +20%FREE /dev/vg01/lv01 ## 针对未格式化LV,增加百分比大小
lvextend -r -l +20%FREE /dev/vg01/lv01 ## 针对已格式化LV,增加百分比大小
lvextend -l +100%FREE /dev/vg01/lv01 ## 针对未格式化LV,增加所有剩余空间
lvextend -r -l +100%FREE /dev/vg01/lv01 ## 针对已格式化LV,增加所有剩余空间
## -l 选项:设置百分比大小或PE数量
注意:
lvextend -L +2G /dev/vg01/lv01 ## 已格式化lv,但是忘记加 -r
## 需要进行更新超级块操作才可以
xfs_growfs /dev/vg01/lv01 ## 针对XFS文件系统
或
resize2fs /dev/vg01/lv01 ## 针对EXT4文件系统
## 相当于修复文件系统
2 扩容VG逻辑卷
命令: vgextend
前提是还存在未被 VG 使用的 PV 物理卷
pvcreate /dev/sdb3 ## 新建PV物理卷 sdb3 是pv且没使用过
vgextend vg01 /dev/sdb3 ## 扩容VG卷组 vg01本身就存在
## 注意:扩容只能增加pv物理卷,不能设置扩展多少,增加的是pv物理卷的全部容量
3 扩容PV逻辑卷
命令: pvextend
前提是PV 物理卷还剩未分配的空间
pvcreate -f -y --setphysicalvolumesize 10G /dev/sde ## 将 /dev/sde 磁盘的部分空间创建为PV 物理卷
pvresize /dev/sde --setphysicalvolumesize 15G -y ## 扩展成为:15G
pvresize /dev/sde --setphysicalvolumesize 20G -y ## 扩展成为:20G
4 更换PV逻辑卷
使用 pvmove 命令,非常厉害该命令可以将一个物理卷上的数据移动到另一个物理卷上,而不需要停止逻辑卷的使用。这种方式可以在不停机的情况下迁移数据,对于需要24/7的系统来说非常有用
迁移完成后,源pv卷的数据就没了变为空闲卷,可以去除,会直接使用新的pv卷,无需重新加入lv
优点如下:
- 可以在不停机的情况下进行数据迁移,减少系统停机时间,提高系统可用性
- 可以通过将数据从一个物理卷上移动到另一个更快的物理卷上优化系统的性能
使用场景:PV 物理卷对应的物理磁盘用了十多年,变得很慢,又比较容易损坏需要更换,可以使用该方法从而确保数据安全或提高读写性能
注意:假设PV 所在的物理磁盘包含着/boot 分区,切不可执行更换 PV 操作
注意:pvmove迁移要保证两个pv都在同一个vg卷组下,保证新的pv的空间足够防止迁移失败
假设:我们要更换0 磁盘总线 → 第 2 块 磁盘 将 sdb 更换为 sdd,假设sdb所在的卷组为vg01
lsblk -o +HCTL ## 查看sdb 的HCTL 假设查看到的sdb的为0 0 2 0
pvcratea /dev/sdd ## 创建pv
vgextend vg01 /dev/sdd ## 将sdd的pv加入到sdb同一个卷组
pvmove /dev/sdb /dev/sdd ## 更换PV 物理卷,将 /dev/sdb 的数据,迁移到 /dev/sdd
vgreduce vg01 /dev/sdb ## 从VG 卷组中,剔除:原来的 PV 物理卷,相当于移除卷组用vgremove应该也行
pvremove /dev/sdb ## 删除原来的 PV 物理卷
注意:对于lv来说,无论是扩容还是缩容 都可以使用 lvresize(扩大和缩小),lvextend和lvreduce都可以不用记住
7.4 分区格式化 xfs
1 文件系统简介
文件系统:是一组软件,提供一种在存储设备上组织、存储、读写文件的管理方法。
下面是Linux 主流文件系统类型
主要使用 xfs 文件系统 然后还有ext4
2 文件系统格式化
注意:格式化后不能分区,要么分区后格式化分区,要么整个磁盘格式化,格式化后不能分区,如果分区了在格式化整个磁盘,那分区直接没有
要对插入的磁盘进行格式化才能进行挂载使用
格式化 相当于 创建文件系统
语法:mkfs.xxxx [选项] 磁盘路径 xxx是文件系统类型 这里用xfs
选项有 -F 强制操作
创建文件系统
mkfs.xfs /dev/sdb2 ## 格式化磁盘sdb的分区sdb2
mkfs.ext3 /dev/sdb2 ## 格式化磁盘sdb的分区sdb2
mkfs.ext4 /dev/sdb2 ## 格式化磁盘sdb的分区sdb2
显示文件系统
blkid ## 查看是否格式化 块id 的意思
如果是 swap文件系统格式化
语法为 :mkswap 文件路径
mkswap /tmp/test ## test 为 虚拟块设备映射文件,该目录至少为 40 kb才行
chmod 600 /swapfile01 ## 必须设置UGO 权限,不然操作时候会出现问题 6 rw- 可读写
7.5 挂载
1 挂载介绍
挂载就是建立已格式化的存储设备与空目录的映射关系,从而通过空目录来在存储设备上存取文件数据。必须先格式化生成文件系统,才能执行挂载操作。
不挂载的情况下介绍存储设备和linux系统是贴着关系,两者互不干扰
2 mount 用户态挂载
1 mount 和 umount
mount功能 :执行文件系统挂载
语法 :mount [-t TYPE] {<磁盘设备名> | <挂载点目录名>}
mkfs.xfs /dev/sdb1 ## 对sdb1进行格式化
mkdir /mnt/test ## 创建新目录
mount /dev/sdb1 /mnt/test/ ## 将sdb1挂载到test目录下
mount -t xfs /dev/sdb1 /mnt/test/ ## 完整语法挂载
umount功能 :执行文件系统卸载
语法 :mount [-t TYPE] {<磁盘设备名> | <挂载点目录路径>}
mount [-t TYPE] <磁盘设备名>
mount [-t TYPE] <挂载点目录路径>
以下三个命令都是取消sdb1挂载在目录test下
umount /dev/sdb1
umount /mnt/test/
umount /dev/sdb1 /mnt/test/
2 开机自动挂载
/etc/rc.d/rc.local 开机启动脚本实现
可以在启动的时候就将我们要的文件系统都挂好,这样就不需要每次进入 Linux 系统都还要在挂载一次。所以我们需要让系统自动在启动时进行挂载。
这个是开机后自动运行这个脚本,如果不是必须在开机时候就挂载的,最好使用这个,时候/etc/fstab 格式要慎重
这里直接往里面写命令就行
chmod +x /etc/rc.d/rc.local ## 针对</etc/rc.d/rc.local 开机启动脚本>,授予:可执行权限。
vi /etc/rc.d/rc.local ## 编辑:</etc/rc.d/rc.local 开机启动脚本>。
进去后面会显示下面内容
#!/bin/bash
touch /var/lock/subsys/local
## 添加如下内容,实现开机自动挂载sdc1
mount /dev/sdc1 /mnt/sdc/ 保存退出
reboot ## 重启服务器,测试能否开机自动挂载。
3 /etc/fstab 内核态挂载
(开机自动挂载)(重点)
去配置文件 /etc/fstab 增加要挂载的存储介质(比如磁盘)内容,实现开机自动挂载
使用时严格按照格式来 增加 要挂载的磁盘等等 报错有大问题
格式 : 可以对照文件本身里面的格式
磁盘设备名 挂载目录路径 文件系统类型 defaults 0 0 磁盘设备名可用UUID替换,blkid可查
vim /etc/fstab ## 配置文件系统类型实现开机自动挂载
/dev/sdb1 /mnt/test/ xfs defaults 0 0 ## 将sdb1 开机自动挂载到test目录下
注意:如果是 swap 系统类型进行开机自动挂载
磁盘设备名 挂载目录路径 文件系统类型 defaults 0 0
语法:swap交换分区映射文件 swap swap default 0 0
/tmp/test/ swap swap default 0 0 注意:在此之前已经进行了 mkswap /tmp/test ; chmod 600 /tmp/test 操作
以下是开机自动挂载swap文件系统
vim /etc/fstab
/tmp/test swap swap defaults 0 0
## 切记根据格式来 可以看/etc/fstab 里面内容的格式
4 查看文件的挂载信息
df 命令
功能:查看文件的挂载情况
语法:df [-h] <磁盘设备名> <挂载点目录名>
df -h ## 没有-h会列出多少块,一块多少内存 -h会帮我们换算单位
df -h /dev/sdb2 ## 显示sdb2的挂载信息,前提是已经挂载,否则会显示别的
df -h /dev/vg01/lv01 ## 查看lvm的挂载 后面是lv创建的路径
5 更新文件系统超级块
工作场景:
当前一个磁盘分区 或 LV逻辑卷已被格式化生产了文件系统,并且已被挂载使用。出于工作需要我们扩展磁盘分区 或 LV逻辑卷。如果你发现对应的挂载容量并未发生变化,那会是什么原因呢?我们又该如何解决这个问题呢?
原因:这是因为Linux 内核尚未及时更新该文件系统的SuperBlock 超级块信息。(扩展时候没有加 -r)
lvextend -L +2G /dev/vg01/lv01 ## 针对未格式化LV,增加固定大小
lvextend -r -L +2G /dev/vg01/lv01 ## 针对已格式化LV,增加固定大小 总内存增加2G
## 注意:如果已经对LV进行了格式化,但是使用的是第一个命令。 即没有加 -r 就会出现挂载容量没有变化,因为没有增加inode号
解决:需要手动更新该文件系统 superblock 超级块信息。
更新:文件系统 superblock 超级块信息,方法如下。
方法1:针对EXT4 文件系统,执行:resize2fs <磁盘设备名>
方法2:针对XFS 文件系统,执行:xfs_growfs <磁盘设备名 | 挂载点目录名>
resize2fs /dev/vg01/lv01 ## 针对 EXT4 文件系统,执行:resize2fs 命令,来更新SuperBlock 超级块 ext4 的方法
xfs_growfs /dev/vg01/lv01 ## 针对 XFS 文件系统,执行:xfs_growfs 命令,来更新SuperBlock 超级块 xfs 的方法
xfs_growfs /mnt/dir04 ## 针对 XFS 文件系统,执行:xfs_growfs 命令,来更新SuperBlock 超级块
注意:最好自己在进行扩展操作时候加 -r ,以免麻烦
如果是 ext3 的磁盘本来是1G,已挂载,我们扩展到了5G
可以直接使用
resize2fs /dev/vdb # 假设是 vdb 设备
## 这个命令将会重新扫描 /dev/vdb 上的 ext3 文件系统,并识别任何新增的空间
xfs 和 ext
xfs_growfs /mnt # 假设/mnt是XFS文件系统挂载的目录
resize2fs /dev/vdb1 # 假设/dev/vdb1是ext4文件系统所在的设备
注意:对于整块设备是这样
6 坏超级快解决方法
服务器掉电重启后磁盘出现坏超级快如何解决,当重启后使用 sdb 挂载发现出现坏超级快,挂载不了
解决办法如下 比如是 xfs 不同文件系统修复命令不一样,可查看 gpt
xfs_repair /dev/sdb ## 修复 XFS 文件系统设备
mount /dev/sdb /data ## 如果可以挂载说明修复成功
注意:修复前保证已经是卸载的情况下,没有任何读写操作
7.6 链接文件、磁盘dd命令
链接文件
了解 inode 节点
-
inode 节点:是文件系统中一种数据存储块,用于存储文件的元数据。文件的元数据用于保存文件的属性信息。前面有讲到,Linux中一切皆文件。Linux 中的每一个文件都会对应着一个inode 节点。
文件名 ------> inode 编号 --------> inode 节点 ----------> block(块)
块里放内容 ,一般一个块是8扇区(一扇区=512bit字节)也就是4kb 如果文件里面内容小于4kb,文件就需要一个块,大于4kb小于8kb,则需要两个块保存
1 硬连接
硬链接原理图如下
一般只适用于 文件
目录不能进行硬链接
原理 :多个文件名指向同一个 inode 节点编号,直接通过inode 节点编号来访问数据。
特点 : 由于指向同一个inode 节点编号,因此:即使删除了一个硬链接文件或者原文件,其他硬链接文件仍然有效。
类似: 相当于一个教室有两个门口,把一个门口封住了另外一个门口还可以进来 操作,就是说只有一个inode号但有两个文件名
如果一个文件删了,相当于只是删除了一个文件名,另外一个文件还可以操作,文件本身还存在。
原文件或者硬链接文件修改了内容,都会一起改变,且共用同一个inode节点,相当于是同一个文件有两个文件名,硬链接文件和原文件无区别
语法 : ln 原文件名 硬链接文件名 可以通过 ls-i 查看节点编号是不是一样
cd /tmp
touch 1.txt ## 创建一个文件
ln 1.txt a.txt ## 创建一个硬连接文件
ls -li ## 查看 两个文件的 inode节点编号一样
## 注意:无论对1.txt进行内容修改,查看2.txt也会变成和1.txt的内容一样
## 但是删除其中一个文件,另外一个文件正常不变
2 软连接 又叫符号链接
符号链接原理图如下
一般适用于 文件和目录
原理:多个文件名指向同一个文件名,再通过文件名检索inode 节点编号,最终通过inode 节点编号来访问数据。
特点:
由于指向的是文件名,因此即使删除了软链接文件,也不会删除源目录或源文件;
如果源目录或源文件被删除,则软链接文件将无法检索相应的inode 节点编号了。
类似:相当于快捷方式,原文件没了,软连接文件也使用不了 ;软连接文件没了,原文件没有影响
原文件和软连接文件都要各自的 inode 节点编号,只不过软连接文件 的节点编号对应的块里面存的是原文件名,对原文件和软连接文件进行修改,实际上都是对原文件的内容进行修改。所以修改的时候 cat查看内容一样,不过如果删除了原文件,软连接文件也使用不了。
语法 :ln -s 源目录名或源文件名 软链接文件名
cd /tmp
touch 1.txt ## 创建一个文件
ln -s 1.txt a.txt ## 创建一个软连接文件
ls -li ## 查看 两个文件的 inode节点编号不一样
## 删除软连接文件,原文件无影响
## 删除原文件,软连接文件会找不到原文件,相当于删除了整个文件
## 软连接文件只是指向原文件名,在重新创建一个和原文件名字一样的文件,软连接会指向这个新文件
## 对于目录来说也是一样的
/etc/rc.local 是 /etc/rc.d/rc.local 的软连接
[root@server ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 8月 11 12:50 /etc/rc.local -> rc.d/rc.local
CentOS 7 系统中 4 个重要的软链接文件:
/bin:链接到 /usr/bin 目录。保存着用户命令(普通用户 可执行),例如:ls 命令。
/sbin:链接到 /usr/sbin 目录。保存着系统命令(仅root可执行),例如:useradd 命令。
/lib:链接到 /usr/lib 目录。保存着32位的系统函数及模块,即:库文件目录。
/lib64:链接到 /usr/lib64 目录。保存着64位的系统函数及模块,即:库文件目录。
所以我们可以在跟目录执行 ll 会发现这几个文件,在usr目录执行 ll也会发现这几个文件
硬软链接区别
[root@server ~]# touch 1.txt
[root@server ~]# ln 1.txt 2.txt
[root@server ~]# ln -s 1.txt 3.txt
[root@server ~]# ll
总用量 40128
-rw-r--r-- 2 root root 0 9月 8 12:10 1.txt
-rw-r--r-- 2 root root 0 9月 8 12:10 2.txt
lrwxrwxrwx 1 root root 5 9月 8 12:10 3.txt -> 1.txt
## 硬链接和原文件无区别,都只是一个文件名,删除一个不影响 软连接不能删除源文件
1、本质:
硬链接:同一个inode,只是多个名字。
软链接:是不同的文件,inode不同
2、跨分区
硬链接无法跨分区、跨设备建立,软链接可以
3、目录
硬链接无法创建目录硬链接,软链接可以
4、相互关系
硬链接没有主次之分,相互独立
软链接依赖于原文件,原文件被删除,软链接即不可用
5、链接数
硬链接会删除增加会影响链接数,软链接不会,因为inode不一样。
6、相对路径
硬链接创建时,原始文件路径是相对于当前路径。
软链接创建时,原始文件路径是 相对于软链接的路径
7、文件类型
硬链接的类型与原始文件类型一致,软链接则会显示 symbolic link
8、创建方式
硬链接创建:ln [原文件] [硬链接]
软链接创建:ln -s [原文件] [软链接]
dd 命令 swap分区
1 创建 虚拟块设备映像文件
语法:dd if=输入源 of=输出的目标文件 bs=n count=n n为数字
if=/dev/zero ## 一般使用 /dev/zero 它是一个特殊的设备文件(字符设备文件),用于生成二进制0数据流,生成空文件
## 销毁磁盘用这个 /dev/urandom
of=输出文件名 ## 要创建的文件名
bs= ## 这里设置 块 的大小
count= ## 这里设置 块 的数量
## 当大小设置为1K 数量为1M 那么影像文件大小为1G
使用 dd 命令可以创建虚拟块设备映像文件,以下是一个常见的示例命令:
bs和count后面的后缀代表数量:
c=1,w=2,b=512,kB=1000,K=1024,MB=1000*1000,M=1024*1024 k*k=M k*M=G
GB=1000*1000*1000,G=1024*1024*1024
## 注意: k 不区分大小写 但是 M 一定要大写
对于T、P、E、Z、Y,GB=1000*1000*1000,G=1024*1024*1024,依此类推。
dd if=/dev/zero of=/path/to/imagefile bs=1M count=1024 ## 创建1G大小的虚拟块设备s映射文件
dd if=/dev/zero of=/tmp/test bs=4k count=1M ## 创建4G大小的虚拟块设备映射文件 1M为 1024×1024 1k 为 1024
dd if=/dev/zero of=/path/to/imagefile bs=4K count=1048576 ## 4G大小 1048576=1024 * 1024 4G=4k * 1024*1024
2 创建 swap交换分区映像文件
创建 swap交换分区映像文件,从而扩展 SWAP 分区
Swap 是一种虚拟内存技术,用于扩展计算机系统的可用内存。它作为物理内存的扩展,提供了一种在物理内存不足时将数据存储到磁盘上的方式。
当系统的物理内存不足时,操作系统会将一部分暂时不常用的内存页面(称为页)移出到硬盘上的 swap 分区(在 Linux 系统中通常是一个特殊的分区或文件),以释放物理内存供其他进程使用。在需要时,操作系统可以将页面从 swap 分区加载回物理内存。
Swap 的主要作用如下:
扩展内存容量:当系统内存不足时,使用 swap 可以提供额外的可用内存,以避免出现内存不足的情况。
提高系统的稳定性:通过使用 swap,操作系统可以更好地处理内存压力,确保系统不会因为内存不足而崩溃或出现异常情况。
支持休眠和睡眠模式:在某些操作系统中,swap 还用于保存系统状态以支持休眠(hibernate)和睡眠(suspend)功能。在这些模式下,系统的状态被写入 swap 分区,并可以在恢复时加载回内存。
需要注意的是,尽管 swap 提供了一种扩展内存的方法,但它通常比物理内存的访问速度慢得多,因为硬盘的读写速度较低。因此,过度地依赖 swap 可能会导致系统性能下降。建议在设计计算机系统时,合理规划物理内存大小,以减少对 swap 的需求。
总而言之,Swap 用于提供虚拟内存,并在物理内存不足时扩展系统可用内存。它对于处理内存压力和保持系统稳定性非常重要。
首先 dd if=/dev/zero … 创建分区,然后格式化,挂载,开机自动挂载
mkswap是格式化 swapon 是挂载 swapoff是卸载 开机自动挂载在/etc/fstab 里面写 swap交换映射文件路径 swap swap default 0 0
dd if=/dev/zero of=/tmp/test bs=4K count=512K ## 1 创建一个 2G 的swap交换分区映像文件。
mkswap /tmp/test ## 2 格式化生成:swap文件系统。这个文件当作磁盘设备格式
chmod 600 /tmp/test ## 设置UGO 权限,保障安全
swapon /tmp/test ## 3 立即生效:这个新建的swap交换分区映像文件。生效后不能rm -rf删除该文件,重启会失效
## 其实就是挂载 swap 文件作为交换分区
free -h ## 查看系统内存(Mem)和交换分区(swap)的使用情况 看swap 内存是否变大
vim /etc/fstab ## 4 编辑/etc/fstab 配置文件,实现开机自动挂载
/tmp/test swap swap default 0 0 ## 添加挂载:这个新建的swap文件系统 格式不能出错
reboot ## 重启
swapon -s 或 swapon ## 查看文件是否挂载成功 挂载成功 使用那里 不是 0B
## 如果 swap 文件已经成功挂载,该命令会显示挂载的 swap 文件路径、类型、大小等信息
free -h ## 或者通过这个查看,如果使用大小是 0B 说明没有挂载
## 一般本身就有,不能通过这个认证
swapoff /tmp/test ## 取消挂载
如图所示 swap交换分区映像文件 test 是挂载成功 aa没有挂载成功
如果是磁盘分区文件转换成 swap交换分区
前面先创建分区 比如是 /dev/sdc1
mkswap /dev/sdc1
swapon /dev/sdc1 ## 挂载
vim /etc/fstab
/dev/sdc1 swap swap default 0 0
reboot ## 重启即可自动挂载
如果想删除,需要先取消挂载 然后进行以下操作
parted -s /dev/sdc1 rm 1 或者 fdisk /dev/sdc 然后输入 d
3 销毁 磁盘分区表
使用场景:在工作中,有时候我们需要将一台服务器上已经使用的磁盘卸载下来,将其插入到另一台服务器上,来扩展另一台服务器的存储空间,这时候,该磁盘上原有的分区表信息会干扰我们,因此需要将该磁盘上的分区表全部销毁,从而确保该磁盘呈现为一个干净的状态。
dd if=/dev/urandom of=/dev/sdb bs=512K count=2 这里的sdb是本身就有,而不是在这里创建
dd if=/dev/urandom of=/tmp/test bs=512K count=2 test这里是swap交换文件要取消挂载才能进行该操作,其次进行该操作文件大小会初始化成 1M
## 备注:bs=512K count=2 共计有 2048 个扇区,正好包含了 MBR 与 GPT 分区表。
## 磁盘默认是从2048s 开始使用
## 通过填充随机数,将分区的原始数据彻底被覆盖掉。
## /dev/urandom 是一个产生随机数的设备,通过该设备产生的数据,来完全覆盖掉原来的数据。
## 创建虚拟块设备映射文件if中使用 /dev/zero
4 毁坏sda怎么办 (莫玩)
毁坏命令
硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT和分区有效标志。在总共512字节的主引导扇区里主引导程序占446个字节
将空数据覆盖前446个扇区,使其开机不了
dd if=/dev/zero of=/dev/sda bs=1 count=446
开机时候会出现问题
解决办法:
开机时候进入救援模式(第三个) 回车
进入 Rescue a CentOS system(第二个) 回车
等一会,出现四个选项
输入 1 回车 (选择Continue选项)
再次回车,左边变成[root@~](之前显示bash)
然后输出
chroot /mnt/sysimage 回车
grub2-install /dev/sda 回车
grub2-mkconfig -o /boot/grub2/grub.cfg 回车
exit
reboot 回车
如果没有救援模式,那么点击电源,进入电源固件进行下图移动操作,+是往上移动,-是往下移动,f10保存进去,看看有没有救援模式,注意查看要连网。
5 关闭 swap 分区
swapoff -a ## 临时关闭
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
7.7 RAID 阵列简介
1 RAID 阵列简介
常用 0 1 5 10
RAID 阵列存储技术,多年以来都是存储系统的基石,它已被成功的用于存储几乎所有类型的数据。通过不同的RAID 级别,从而实现如下功能:提高IO读写性能:磁盘数据并行读写;保障数据不丢失:磁盘数据冗余校验。
了解:硬RAID阵列和软RAID阵列,可去百度查看,插入磁盘后进行操作,大公司都是硬RALD,不同品牌的操作方法不一样。
软RAID没有专用的控制芯片和 I/O 芯片,完全由操作系统和 CPU 来实现所的 RAID 的功能。同时配置简单,成本低廉。但是执行效率比较低下。
硬RAID拥有自己的 RAID 控制处理与 I/O 处理芯片,甚至还有阵列缓冲。专用设备,成本最高。整体性能最好。
软硬混合RAID采取软件与硬件结合的方式,采用了廉价的处理能力较弱的控制芯片,从而节省成本。大部分还是借助固件驱动程序,交由 CPU 来完成。服务器 BIOS 中的 RAID 阵列配置机制,就是一种软硬混合的实现方式。
★ RAID的基本思想:
● 是把多个便宜的小磁盘组合到一起,成为一个磁盘组,使性能达到或超过一个容量巨大、价格贵的磁盘。
★ RAID的作用:
● 根据不同的<RAID级别>,从而如下功能:
※ 提高IO读写性能 :磁盘并行读写
※ 保障数据不丢失 :磁盘数据冗余
★ RAID的级别:
● RAID技术经过不断的发展,现在已拥有了<RAID 0/1/2/3/4/5/6/7>八种基本的<RAID级别>。
● 另外,还有一些基本RAID级别的组合形式,如:RAID 10/01(RAID 0和1的组合),RAID 50(RAID 0和5的组合)等。
● 不同的<RAID级别>代表着:不同的<存储性能、数据安全性和存储成本>。
raid的分类:
软raid:用软件实现,为了提高速度,所有操作都是通过操作系统及cpu实现
硬raid:通过硬件来实现
1.主板集成raid
2.阵列卡做raid
2 RAID 0
常见raid级别:
0 ——raid0 最少2块硬盘,也称为stripe或者striping(条带),存储原理把连续的数据分散的存储到多个磁盘上。它提供了最高的存储性能,但是没有提供冗余,不具有容错能力。磁盘利用率100%。 最好硬盘大小是相同的,否则会失去raid0的意义。
速度变成原来的n倍,安全性不变 (n快盘)
raid 0 条带raid 最少2块磁盘
数据存储的方式:同时将数据平均分配到2块磁盘上 n块
优点:读写速度快
缺点:安全性差
最小磁盘数:2
磁盘总容量:2个之和 n个之和
允许坏几块:不能坏
3 RAID 1
1 —— raid1–最少2块盘,大小相同–磁盘利用率1/2*100%=50%–mirror或者mirroring,将用户写入的数据百分之百复制到另一块磁盘上。–提供最高的数据安全性
速度一样,安全性变为原来的n倍,可以允许一块磁盘损坏
raid 1 镜像raid 最少2块磁盘
数据存储的方式:第2块磁盘相当于第1块磁盘的备份
优点:安全性高
缺点:占用空间,写速度相比其他的慢
最小磁盘数:2
磁盘总容量:n/2
允许坏几块:n/2
4 RAID 5
5 —— raid5–最少3块盘,有校验盘,最多允许坏一块硬盘,通过校验盘和其他的好盘,可以算出坏盘的数据。–是raid0和raid1的折中方案,既考虑存储性能又考虑数据安全性–磁盘利用率 (n-1)/n*100%–是可以有备盘的。相当于一共有一块盘的容量是校验的
一块磁盘坏了,可以通过别的磁盘得到这块磁盘的全部数据
raid 5
通过校验码恢复数据
最好4块磁盘 其中一块做热备盘 如果其中一块磁盘坏了,自动把坏了磁盘中的数据写入第4块磁盘 第4个磁盘是做热备
数据存储的方式:有1块磁盘的空间是存校验码的
优点:是raid0和raid1的折中方案,即考虑数据的安全性又考虑存储性能
最小磁盘数:3
磁盘总容量:n-1
允许坏几块:1
5 RAID 10
10—— raid1 + raid0 可能是企业中应用最多的–最少4块盘,先做raid1,再做raid0–最多允许坏两块盘,可以是每组raid1各坏一块–4块盘为例,利用率50%
速度增强2/n倍,安全增强2/n倍
性能较好
最小磁盘数:4
磁盘总容量:n/2
允许坏几块:每组各允许坏一块
7.8 mdadm配置软 RAID 阵列
1 安装mdadm
mdadm工具的作用是当 BIOS 不支持 RAID 功能,或所支持的RAID级别不能满足我们的需要时,我们就可以使用mdadm工具来构建软RAID阵列。
yum install mdadm -y ## 安装该工具命令
语法:mdadm [mode] [options] <compo‐nent-devices>
mdadm 操作选项 新目录(/dev/md数字) 普通选项 /dev/sd[abc…] 需要哪几个磁盘创建阵列写哪几个
操作选项
-C, --create ## 创建阵列
-D ## 查看raid的详细信息
-G --add ## 扩展raid,前提是raid已经同步完成
-S ## 停止并释放raid阵列
-f ## 指定某个盘出故障
-r ## 将某个盘移出阵列
普通选项
-n, --raid-devices= ## 指定设备数量(主盘数量,备用盘不算在里面) 后面跟上设备列表 扩展的时候也是直接指定总数,而不是追加
-x, --spare-devices= ## 指定备用盘 在创建时和-C -n 使用
-l, --level= ## 指定raid的级别 主要使用 raid 0,1,5,10 这几个
-v, --verbose ## 显示创建过程
--add ## 后接要添加的磁盘
例如
讲sdb、sdc、sdd组成raid
mdadm -C /dev/md0 -l 5 -n 3 -x 1 /dev/sd[bcd] ## 创建raid5,三个磁盘结合,第一个盘做备用盘,可能有问题
2 mdadm配置RAID 0阵列
至少2块磁盘
mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc] ## 创建RIAD 0
mdadm -G /dev/md0 -n 4 --add /dev/sd[de] ## 扩展RIAD 0,前提是raid 0 已同步完成
mdadm -D /dev/md0 ## 查看
mdadm -S /dev/md0 ## 停止并释放阵列
mdadm -f /dev/md0 /dev/sdb ## 故意使sdb出故障
mdadm -r /dev/md0 /dev/sdb ## 将sdb移出阵列
mdadm --zero-superblock /dev/sdn ## 擦除sbd设备中的MD超级块,如果 -S 不管用的话,n代表任何的块名
3 mdadm配置RAID 1阵列
至少2块磁盘
mdadm -C /dev/md/raid1 -l 1 -n 2 /dev/sd[bc] ## 创建RIAD 1
mdadm -G /dev/md/raid1 -n 4 --add /dev/sd[de] ## 扩展RIAD 1,前提是raid 0 已同步完成
mdadm -D /dev/md/raid1 ## 查看
mdadm -S /dev/md/raid1 ## 停止并释放
4 mdadm配置RAID 5阵列
至少3块磁盘
mdadm -C /dev/md/raid5 -l 5 -n 3 /dev/sd[bcd] ## 创建RIAD 5
mdadm -G /dev/md/raid5 -n 4 --add /dev/sd[e] ## 扩展RIAD 5,前提是raid 0 已同步完成
mdadm -D /dev/md/raid5 ## 查看
mdadm -S /dev/md/raid5 ## 停止并释放
mdadm -C /dev/md/raid5 -l 5 -n 3 /dev/sd[bcd] -x 1 /dev/sde ## 设置三个主盘合并阵列 一个备用盘
5 mdadm配置RAID 10阵列
至少4块磁盘
mdadm -C /dev/md/raid10 -l 10 -n 4 /dev/sd[bcde] ## 创建RIAD 10
mdadm -G /dev/md/raid10 -n 6 --add /dev/sd[fg] ## 扩展RIAD 10,前提是raid 0 已同步
mdadm -D /dev/md/raid10 ## 查看
mdadm -S /dev/md/raid10
6 mdadm永久保存RAID配置信息
mdadm -D --scan > /etc/mdadm.conf
cat /etc/mdadm.conf
7 mdadm 配置邮件报警步骤
1 创建:一个RIAD 阵列,以RIAD 5为例
2 配置mdadm.conf配置文件,设置:RAID故障邮件提醒
3 注意:设置QQ邮箱,添加发件人:root@test.com到反垃圾邮件:白名单
4 以守护进程运行:RAID故障监控进程
5 模拟:破坏