Linux系统配置及服务管理-07-文件系统及RAID

news2025/7/12 18:49:04

文件系统详解

EXT4文件系统

EXT4是第四代扩展文件系统(Fourth extended filesystem)

类型:索引(index ) 文件系统

系统限制:

  • Ext3: 文件系统最大16TB
  • Ext4: 文件系统最大16TB
  • XFS : 文件系统最大100TB.

名词

inode

  • inode:索引节点

  • 记录文件的属性(文件的元数据metadata)

  • 元数据:如文件的属性,大小,权限,属主,属组,连接数,块数量,块的编号

  • 一个文件占用一个inode,同时记录此文件数据所在的block numbber

  • inode大小 为 128 bytes

block

  • 存储文件的实际数据
  • 实际存储文件的内容,若文件较大,会占用多个block
  • block大小 为默认为4K

superblock

  • 1 block 与 inode 的总量
  • 2 未使用与已使用的 inode / block 数量

block group

块组

示例1:inode(index node 索引节点)

创造一个文件,观察inode信息。
ll -i 文件名
在这里插入图片描述
stat 文件名

示例2:block(块 文件内容)

新分区中,文件的数量和inode节点数有关系

  • 1 观察某个分区中的inode节点数
    df -i
    在这里插入图片描述

  • 2 创建一个文件
    touch xx.txt

  • 3 再次观察inode节点数
    df -i
    在这里插入图片描述
    可以看到IUsed增加了1,即inode数使用增加1个

  • 4 创造大量文件。观察inode使用情况
    进入上图中的/dev/sdb5的目录/mnt/user/0
    touch file{1..30000}
    最后报错touch: cannot touch ‘file30000’: No space left on device
    在这里插入图片描述
    在这里插入图片描述
    实际空间占用情况

可以看到该分区的inode已经全被占用,因此无法在该分区新建文件了,但是实际空间只用了2.2M,此时如果向创建的文件中写数据,是可以写进去的,这是因为block决定了文件存储的空间

实际工作中,如果某个磁盘分区无法新建文件,提示No space,但是通过df -hT看到磁盘空间还很多时,要考虑是不是inode用尽了

结论:inode决定了文件系统中文件的数量,block决定了文件存储的空间
当分区空间大小消耗完毕,也无法创建新的文件

  • 5 写满磁盘分区,然后测试新建文件
    rm -rf /mnt/disk5 删掉刚才新建的文件
    向目标分区写入大量数据,填满
    dd if=/dev/zero of=/mnt/disk5/1.txt bs=1k count=10000000
    在这里插入图片描述
    查看目标分区容量,已满
    df -hT

    创造新文件失败

得出结论,磁盘空间的限制根据inode和block两方面

XFS一种高性能的日志文件系统

文件链接

一、符号链接/软连接

symbolic link 软链接

示例

  • 1 创建一个文件,并输入内容

[root@localhost ~]# echo 111 > /file1

  • 2 创建一个软链接

ln -s /file1 /home/file11
-s 软链接

  • 3 观察软链接

ll /home/file11
lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1

  • 4 观察软链接文件

ll /file1 /home/file11

-rw-r--r-- 1 root root 4 Dec 20 17:57 /file1
lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1
  • 5 查看两个文件,内容一致。
[root@localhost ~]# cat /file1 
111
 [root@localhost ~]# cat /home/file11 
111
  • 6 删除源文件,软链接闪烁,不可用。
[root@localhost ~]# rm -rf /file1 
[root@localhost ~]# ll /home/file11 
lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1

总结

  • 软链接像快捷方式,可以对文件和目录做软链接
  • 软链接记录的只是源文件的路径
  • 源文件删除或移动位置后,软链接失效

二、硬链接

  • 1 创建同分区硬链接成功,创建不同分区硬链接失败。
[root@localhost ~]# echo 222 > /file2
[root@localhost ~]# ln /file2 /file2-h1
[root@localhost ~]# ln /file2 /home/file2-h2	
//将文件以硬链接方式,发送到其他分区。结果是错误
ln: failed to create hard link ‘/home/file2-h2’ => ‘/file2’: Invalid cross-device link
  • 2 硬链接删除源文件,依然可以用
[root@localhost ~]#rm -rf /file2
[root@localhost ~]#cat  /file2-h1
222
  • 3 不允许将硬链接指向目录
[root@qianfeng home]# ln /home/ /mnt
ln: “/home/”: 不允许将硬链接指向目录
  • 4 硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件
    在这里插入图片描述
    inode二者相同,不会占用inode数量,但是软链接是会占用的

  • 总结
    - 硬链接只能针对文件做。不能对目录做。
    - 硬链接只能在同分区做。

RAID

RAID:廉价磁盘冗余阵列(Redundant Array of Independent Disks)
作 用:容错、提升读写速率

类型

RAID0

RAID0 条带集 2块磁盘以上, 读写速率快 100%*N,但不容错
在这里插入图片描述

RAID1

在这里插入图片描述
RAID1 镜像卷, 2块磁盘, 容量50% ,读写速率一般,核心特点:备份容错
两块磁盘假设1T容器,只能用500G。

RAID5

在这里插入图片描述
RAID5 带奇偶校验条带集 3块磁盘以上
利用率 (n-1)/n 读写速率快,容错

一、不同场景RAID的使用

硬RAID: 需要RAID卡,有自己的CPU,处理速度快,有电池和无电池。
在这里插入图片描述

软RAID: 通过操作系统实现,比如Windows、Linux

二、软RAID示例

  • 1 准备4块1G的硬盘
    ll /dev/sd*

在这里插入图片描述
RAID5 :(3块数据盘) + (1块热备硬盘)

  • 2 创建RAID
yum install -y mdadm
mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{b,c,d,e}

参数说明:
-C:创建RAID
/dev/md0: 第一个RAID设备
-l5: RAID5
-n: RAID成员的数量
-x: 热备磁盘的数量

  • 3.格式化,挂载
mkfs.ext4 /dev/md0
mkdir /mnt/raid5
mount /dev/md0 /mnt/raid5
cp -rf /etc /mnt/raid5/etc1
  • 4.查看RAID信息

mdadm -D /dev/md0 -D 查看详细信息
在这里插入图片描述

  • 5 模拟一块硬盘损坏,并移除
    终端一:
    watch -n 0.5 'mdadm -D /dev/md0 | tail' #watch持续查看
    终端二:
    mdadm /dev/md0 -f /dev/sdb -r /dev/sdb
    模拟坏了并移除
    -f --fail
    -r --remove
    移除之前
    在这里插入图片描述
    移除之后
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/38403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程间通信之匿名管道和命名管道

目录 管道是什么 匿名管道 命名管道 命名管道创建方式 管道的特点: 管道是什么 概念:管道是计算机通信领域设计者,设计出的一种单向通信的方式,linux原生提供管道通信 管道都是单向传输内容的 管道中传输的都是"资源&…

SSM_整合篇

一、整合步骤 1.1 数据表的介绍 team表&#xff1a; player表&#xff1a; 1.2 创建maven项目 1.3 pom.xml引入jar依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"…

ps打开图片的三种方式 同步部分基本操作方式

观看本文 需要您的电脑已安装PS工具 如果没有 可以观看我的文章 PS软件下载安装以基本配置 然后打开PS 就会变成一个这样的界面 然后点击右上角的 PS 进入工作区 然后我们就会进入 一个这样的工作区 然后我们在左上角点击文件 选择 打开 然后 在文件框中 找到自己想处理的图…

OJ练习第23题——Z字形变换

OJ练习第23题——Z字形变换题目要求示例Java代码如下&#xff1a;思路分析力扣链接&#xff1a;Z字形变换题目要求 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。请你实现这个将字符串进行指定行数变换的函数&#xff1a;str…

canvas学习

canvas 是一块画布&#xff0c;可以设置宽高 &#xff0c;默认 300 * 150 使用方式 1. 声明书写 canvas标签 2. 拿到canvas的dom 3. 调用方法 getContext (注意 此方法在prototype上) 方法集合&#xff1a; 填充&#xff1a; 1. fillStyle&#xff0c; 设置填充颜色 &…

详解非负矩阵分解(NMF)及其在脑科学中的应用

非负矩阵分解及其在脑科学中的应用 基本原理确定最优因子数量代码实现非负矩阵分解与主成分分析的区别非负矩阵分解在脑科学中的应用应用一:神经发育模式:T2w/T1w比值映射的非负矩阵分解(NMF)应用二:微观结构的协方差模式基本原理 NMF的基本思想可以简单描述为:对于任意给…

Python用PyMC3实现贝叶斯线性回归模型

在本文中&#xff0c;我们将在贝叶斯框架中引入回归建模&#xff0c;并使用PyMC3 MCMC库进行推理。 最近我们被客户要求撰写关于叶斯线性回归模型的研究报告&#xff0c;包括一些图形和统计输出。我们将首先回顾经典频率论的多重线性回归方法。然后讨论贝叶斯如何考虑线性回归。…

8、MyBatis核心配置文件之typeAliases(mybatis-config.xml)

MyBatis核心配置文件之typeAliases&#xff08;mybatis-config.xml&#xff09; 1、&#xff01;&#xff01;&#xff01;&#xff01;注意 2、 设置类型别名&#xff08;比如有的全类名&#xff08;resultType&#xff09;太长了不好使用&#xff09; typeAlias :设置某个类…

Python版本的温湿度+Nokia5110 display(SPI)

前提需要把micropython的固件安装到系统中 安装micropython到esp8266中 本实验需要&#xff1a; 1. ESP8266&#xff08;我的是Wemos D1) 2. DHT11 3. Nokia5110 LCD 连线&#xff1a; DHT11 out --> D2(GPIO-016) (-接入GND&#xff0c;接入3.3vcc) Nokia 5110 LCD We…

GO语言最常用的语法

一 ,变量&#xff1a;变量赋值只能在函数内使用&#xff0c;故第三种方式只能在函数内使用&#xff0c;可使用var()同时定义多个变量变量定义 使用var关键字 var a bool var a bool true 不指定类型直接初始化让编译器选择 var a "abc" 使用 “ : "…

Python入门、环境搭建、变量、数据类型

目录 前景 官方下载 基本数据类型 动态语言的体现 静态语言的体现 弱语言的体现 强语言的体现 注释 整数 浮点型 浮点型计算方案 字符串 布尔 引用数据类型 列表 [ ] 列表方法 集合Set{} 基本方法 特殊需求方法 应用场景 字典{} 常见操作 元组 操作符 练习…

基于ANSYS 2019R1全解一款双吸泵的双向流固耦合方法

作者&#xff1a;李雷 一、导读 对于旋转机械来说&#xff0c;传统设计从理论计算到手工木模图&#xff0c;再到模型泵的加工制造&#xff0c;最后进行相关性能试验。当性能试验与预期效果差距较大的时候还需要修改水力模型。这种传统的设计不仅设计周期长&#xff0c;而且成…

Vue3+nodejs全栈项目(资金管理系统)——后端篇(二)用户模块

文章目录用户模块的增删改查新增创建user_info表初始化路由模块路由模块处理函数(添加&#xff09;测试查询路由模块处理函数(查询)测试编辑&#xff08;根据id&#xff09;路由模块处理函数&#xff08;编辑/更新&#xff09;测试删除(根据id&#xff09;路由模块处理函数测试…

黑马JVM学习笔记-内存结构

什么是JVM? 定义&#xff1a; Java Virtual Machine - java 程序的运行环境(Java二进制字节码的运行环境) 好处&#xff1a;3 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收功能数组下标越界检查(下标越界抛出异常比数组新元素覆盖其他部分造成的危害小)…

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本教程已经花费了 24 个文章的篇幅,介绍了使用 SAP ABAP SEGW 这个开发工具,开发基于 SAP ABAP 技术栈的 OData 服务的详细步骤。 正如本教程目录 中提到的那样,SAP OData 开发技术包含传统的 ABAP,RAP(Restful ABAP Programming) 和 CAP(Cloud Application Programming) …

前端程序员接私活,直呼赚麻了

总有一些前端程序员会想找私活&#xff0c;但是又不清楚具体的办法&#xff0c;或者是做了但没完全做&#xff0c;吃力又不讨好还赚不到钱。今天就给大家介绍一些可行性高的方法&#xff0c;让你快速找到合适的前端兼职。 干货满满&#xff0c;希望大家点赞收藏下&#xff0c;别…

Java 异常中 e.getMessage() 和 e.toString() e.printStackTrace()的区别常见的几种异常

Java 异常中 e.getMessage() 和 e.toString() e.printStackTrace()的区别 一、概述 在java异常体系中&#xff0c;要打印异常信息&#xff0c;可以通过&#xff1a;e.getMessage() 、 e.toString() e.printStackTrace() 等方法打印出 一些 异常信息。已知的是这些方法都可以打…

WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较

在本文中&#xff0c;我们通过一个名为WinBUGS的免费贝叶斯软件&#xff0c;可以很容易地完成基于似然的多变量随机波动率&#xff08;SV&#xff09;模型的估计和比较。 最近我们被客户要求撰写关于随机波动率的研究报告&#xff0c;包括一些图形和统计输出。通过拟合每周汇率…

机器学习笔记之贝叶斯线性回归(一)线性回归背景介绍

机器学习笔记之贝叶斯线性回归——线性回归背景介绍引言回顾&#xff1a;线性回归场景构建从概率密度函数认识最小二乘法回顾&#xff1a;最小二乘估计回顾&#xff1a;线性回归与正则化关于线性回归的简单小结贝叶斯线性回归贝叶斯方法贝叶斯方法在线性回归中的任务贝叶斯线性…

kubernetes深入理解Pod对象之调度篇

目录 一、Pod调度流程 二、 容器资源限制 2.1 内存和CPU限制 三、 NodeSelector 四、NodeAffinity 4.1 基本概念 4.2 Pod 示例 4.2.1使用首选的节点亲和性调度 Pod 4.2.2依据强制的节点亲和性调度 Pod 五、Taints与Tolerations 5.1 基本概念 5.2Taints与Toleratio…