磁盘管理之磁盘阵列
mount命令的深度使用
-l 显示挂载情况
-a 读取/etc/fstab所有的挂载设置
-o 添加挂载选项
ro 只读
rw 读写
exec 允许执行磁盘中的二进制程序
noexec 允许执行磁盘中的二进制程序
mount -o exec /dev/sdb /mnt
挂载/dev/sdb磁盘,允许执行磁盘中的二进制程序
退出光盘命令
Eject弹出设备命令
eject # 弹出光驱
eject -r /dev/sr0 # 指定设备弹出
[yuchao-linux-242 root ~]#eject
inode号
文件的身份证,记录了文件的属性信息与存放文件数据block的位置信息,是唯一的,可以是一样的,一样的inode号文件数据也一样
使用ls命令查看文件inode号
[root@localhost chen]# ls -hli yu.txt
34345709 -rw-r--r--. 1 root root 26 Apr 7 12:07 yu.txt
[root@localhost chen]#
使用stat查看文件的inode号
[root@localhost chen]# stat yu.txt
File: ‘yu.txt’
Size: 26 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 34345709 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:usr_t:s0
Access: 2022-04-07 11:59:23.067743025 +0800
Modify: 2022-04-07 12:07:19.438990328 +0800
Change: 2022-04-07 12:07:19.438990328 +0800
Birth: -
[root@localhost chen]#
inode储存的内容
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
block
实际存放文件数据的地方
linux读取文件内容
文件名 > inode编号 > block 的顺序来读取
通过区分inode号来区分
文件与文件夹的关系
文件夹也是一个特殊文件,文件夹存放着文件名,通过文件名找找文件的inode号,再找到文件数据block的位置,进行文件数据的读写
软连接
软连接文件存储的是源文件的路径
ln -s 源文件路径 软连接路径
访问软连接就是访问源文件路径,源文件名,再通过文件名找到inode号,再找到文件数据block,访问数据
特点
1.软连接文件的inode号和源文件不同,作用是存储源文件的路径
2.命令ln -s创建
3.删除普通软连接,不影响源文件
4.删除源文件,软连接找不到目标,报错提示
硬链接
就是一个数据(block)被多个`相同inode号`的文件指向
特点
1.可以对已存在的文件做硬链接,该文件的硬链接数,至少是1,为0就表示文件不存在
2.硬链接的文件,inode相同,属性一致
3.只能在同一个磁盘分区下,同一个文件系统下创建硬链接
4.不能对文件夹创建硬链接,只有文件可以
5.删除一个硬链接,不影响其他相同inode号的文件
6.文件夹的硬链接,默认是2个,以及是2+(第一层子目录总数)=文件夹的硬链接数量
7.可以用任意一个硬链接作为入口,操作文件(修改的其实是block中的数据)
文件夹的硬链接默认是2
一个是当前目录本身
一个是上级目录
修改文件的硬链接数,要在它,第一层文件夹中,创建子文件夹,即可增加硬链接数量
查看分区inode与block数量
xfs_info命令 只能查看xfs文件系统的磁盘
[root@localhost ~]# xfs_info /dev/sda1
meta-data=/dev/sda1 isize=512 agcount=4, agsize=12800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=51200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
dumpe2fs 查看ext4的文件系统
df -h 查看分区,有多少block可用
[root@localhost ~]# df -h /dev/sda1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 197M 115M 82M 59% /boot
df -i 查看分区,有多少inode可用
[root@localhost ~]# df -i /dev/sda1
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 102400 327 102073 1% /boot
[root@localhost ~]#
raid 磁盘阵列
raid0
将两个或两个以上相同型号、容量的硬盘组合,磁盘阵列的总容量便是多个硬盘的总和
raid0数据依次写入到各个物理硬盘中,数据是分开放的,因此损坏任意一个硬盘,都会对完整的数据破坏
特点
至少需要两块磁盘
数据==条带化==分布到磁盘,==高的读写性能==,100%==高存储空间利用率==
数据==没有冗余策略==,一块磁盘故障,数据将无法恢复
应用场景:
对性能要求高但对数据安全性和可靠性要求不高的场景,比如音频、视频等的存储。
raid1
是将两块以上硬盘绑定,数据写入时,同时写入多个硬盘,因此即使有硬盘故障,也有数据备份。
特点
至少需要2块磁盘
数据==镜像备份==写到磁盘上(工作盘和镜像盘),==可靠性高==,磁盘利用率为50%
读性能可以,但写性能不佳,写入数据要同步,因此速度很慢。
一块磁盘故障,不会影响数据的读写,因为是镜像盘,冗余性好,只要有一块是好的,数据还是玩转的。
RAID 1应用场景:
对数据安全可靠要求较高的场景,比如邮件系统、交易系统等
raid5
至少需要3块磁盘
数据==条带化==存储在磁盘,==读写性能好==,磁盘利用率为(n-1)/n
一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据
只能允许坏掉一块盘
是目前综合==性能最佳==的==数据保护==解决方案
兼顾了存储性能、数据安全和存储成本等各方面因素(==性价比高==)
适用于大部分的应用场景
raid 6
比起raid5提供的数据校验,又多了一层校验,双层校验
特点
至少需要4块磁盘
数据==条带化==存储在磁盘,读取性能好,容错能力强
采用==双重校验==方式保证数据的安全性
如果==2块磁盘同时故障==,可以通过两个校验数据来重建两个磁盘的数据
成本要比其他等级高,并且更复杂
一般用于对数据安全性要求==非常高==的场合
raid10
raid10是raid0与raid1的组合
特点
至少需要4块磁盘
两块硬盘为一组先做raid1,再将做好raid1的两组做raid0
兼顾==数据的冗余==(raid1镜像)和==读写性能==(raid0数据条带化)
磁盘利用率为50%,成本较高
只要坏的不是同一个组中,所有的硬盘,就算坏掉一半硬盘都不会丢数据。
因此raid10是最实用的方案
总结
类型 | 读写性能 | 可靠性 | 磁盘利用率 | 成本 |
---|---|---|---|---|
RAID0 | 最好 | 最低 | 100% | 较低 |
RAID1 | 读正常;写两份数据 | 高 | 50% | 高 |
RAID5 | 读:近似RAID0 写:多了校验 | RAID0<RAID5<RAID1 | (n-1)/n | RAID0<RAID5<RAID1 |
RAID6 | 读:近似RAID0 写:多了双重校验 | RAID6>RAID5 | RAID6<RAID5 | RAID6>RAID1 |
RAID10 | 读:RAID10=RAID0 写:RAID10=RAID1 | 高 | 50% | 最高 |
硬raid
通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID
软raid
软RAID运行于==操作系统底层==,将SCSI或者IDE控制器提交上来的物理磁盘,虚拟成虚拟磁盘,再提交给管理程序来进行管理
特点
占用内存空间
占用CPU资源
如果程序或者操作系统故障就无法运行
硬raid与软raid的区别
软件RAID额外消耗CPU资源,性能弱
硬件RAID更加稳定,软件RAID可能造成磁盘发热过量,造成威胁
兼容性问题,软件RAID依赖于操作系统,硬件RAID胜出
设置raid10磁盘阵列组
1准备四块新磁盘
使用虚拟机添加,磁盘尽量使用新的,如果是旧的,要先将磁盘分区删除
2安装mdadm命令
yum install mdadm -y
-C 用未使用的设备,创建raid
-a yes or no,自动创建阵列设备
-A 激活磁盘阵列
-n 指定设备数量
-l 指定raid级别
-v 显示过程
-S 停止RAID阵列
-D 显示阵列详细信息
-f 移除设备
-x 指定阵列中备用盘的数量
-s 扫描配置文件或/proc/mdstat,得到阵列信息
3创建raid10
mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
-C 表示创建RAID阵列卡
-v 显示创建过程
/dev/md0 指定raid阵列的名字
-a yes 自动创建阵列设备文件
-n 4 参数表示用4块盘部署阵列
-l 10 代表指定创建raid 10级别
最后跟着四块磁盘设备名
创建完成后,检查
fdisk -l /dev/md
4格式化文件系统
mkfs.xfs /dev/md0
5挂载
mount /dev/md0 /mnt
挂载之后就可以使用了
6查看raid10信息
mdadm -D /dev/md0
磁盘故障处理方法
将故障磁盘移除,添加新磁盘到阵列组中即可恢复,只要不是同组磁盘都故障,数据就不会丢失
移除磁盘,模拟磁盘故障
mdadm /dev/md0 -f /dev/sdd
移除后取消挂载,重启机器
向磁盘组中添加新磁盘
mdadm /dev/md0 -a /dev/sdd
添加完成可检查磁盘组信息,会有一个修复的过程
mdadm -D /dev/md0
[root@lamp-241 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Mar 3 04:20:20 2022
Raid Level : raid10
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Thu Mar 3 04:47:07 2022
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Rebuild Status : 6% complete # 默认会有一个修复的过程,这里是进度条
Name : lamp-241:0 (local to host lamp-241)
UUID : 8b05fda8:ea9f56df:d639157c:bf00d883
Events : 38
Number Major Minor RaidDevice State
0 8 16 0 active sync set-A /dev/sdb
1 8 32 1 active sync set-B /dev/sdc
4 8 48 2 spare rebuilding /dev/sdd
3 8 64 3 active sync set-B /dev/sde
确认无问题
挂载磁盘组就可使用了
删除软件raid
1卸载磁盘(取消挂载)
umount /dev/md0
2停止raid服务
mdadm -S /dev/md0
3卸载raid中所有硬盘
mdadm --misc --zero-superblock /dev/sdb #后面是磁盘名
mdadm --misc --zero-superblock /dev/sdc
mdadm --misc --zero-superblock /dev/sdd
mdadm --misc --zero-superblock /dev/sde
4删除raid配置文件
rm -f /etc/mdadm.conf
5删除开机挂载配置(如果没有设置就不用)
修改/etc/fstab配置文件中的挂载信息
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)