文件系统分析
文件系统与磁盘管理详解
一、存储设备基础
1. 存储设备类型对比
| 设备类型 | 特点 | 典型接口 | 应用场景 |
|---|---|---|---|
| 机械硬盘 | 依赖磁头机械读写,转速影响性能(5400/7200/10000rpm),价格低容量大 | SATA/SAS | 冷数据存储、备份 |
| 固态硬盘 | 无机械结构,读写速度快(IOPS可达数万),抗震性强,价格高 | SATA/NVMe | 系统盘、数据库 |
| U盘 | 便携式闪存存储,容量较小(通常≤1TB),速度较慢(USB 2.0/3.0) | USB | 临时文件传输 |
| 移动硬盘 | 机械/固态硬盘+外置盒,容量大(1-5TB),速度取决于接口 | USB/Thunderbolt | 大容量数据迁移 |
2. 核心性能指标
- 容量:决定存储上限(TB级常见)
- IOPS:每秒I/O操作数(SSD可达10万+,机械盘约100-200)
- 吞吐量:连续读写速度(SSD: 500MB/s+,机械盘: 150-200MB/s)
- 延迟:数据访问响应时间(SSD: 0.1ms,机械盘: 5-10ms)
- 缓存:临时加速区(64MB-1GB,提升突发读写性能)
3. 接口类型对比
| 接口类型 | 理论速度 | 常见设备 | 特点 |
|---|---|---|---|
| SATA3 | 6Gbps | 机械/固态硬盘 | 性价比高,兼容性强 |
| NVMe | 32Gbps+ | 高端SSD | PCIe通道,超低延迟 |
| SAS | 12Gbps | 企业级硬盘 | 支持双端口,高可靠性 |
| USB3.2 | 20Gbps | 外置存储 | 即插即用,通用性强 |
二、磁盘分区深度解析
1. 分区表类型
| 类型 | 最大分区数 | 单分区容量上限 | 兼容性 | 适用场景 |
|---|---|---|---|---|
| MBR | 4主分区 | 2TB | 所有系统兼容 | 传统BIOS系统 |
| GPT | 128主分区 | 8ZB(理论值) | 需UEFI支持 | 现代大容量存储 |
2. 分区类型详解
# 典型分区结构示例(使用fdisk)
Disk /dev/sda: 1TB
├─sda1 主分区 /boot 1GB # 系统引导
├─sda2 扩展分区 # 容器分区(不可直接使用)
│ ├─sda5 逻辑分区 /var 100GB
│ └─sda6 逻辑分区 /home 500GB
└─sda3 主分区 swap 16GB # 交换空间
3. 分区实战命令
# 使用fdisk分区(MBR)
fdisk /dev/sdb
n → p → 1 → [Enter] → +50G # 创建50G主分区
n → e → 2 → [Enter] → [Enter] # 剩余空间创建扩展分区
n → l → [Enter] → +200G # 在扩展分区中创建逻辑分区
w # 保存退出# 使用parted分区(GPT)
parted /dev/sdc
mklabel gpt
mkpart primary xfs 1MiB 500MiB
mkpart logical ext4 501MiB 100%
print # 验证分区表
quit
三、文件系统核心原理
1、文件系统架构
+---------------------+
| 用户空间 |
+---------------------+
| 虚拟文件系统层(VFS) | ← 统一系统调用接口
+---------------------+
| 具体文件系统 | ← ext4/xfs/nfs等
+---------------------+
| 块设备驱动层 | ← 磁盘物理操作
+---------------------+
2、 核心组件对比
| 组件 | ext4 | xfs | NTFS |
|---|---|---|---|
| 最大文件 | 16TB | 8EB | 256TB |
| 日志功能 | 元数据日志 | 全日志 | 日志 |
| 修复工具 | e2fsck | xfs_repair | chkdsk |
| 优势 | 稳定兼容 | 大文件高性能 | Windows兼容 |
3、inode与block解析
# 查看inode使用情况
df -i /data# 文件存储示例
文件名: report.pdf
inode信息:
- 大小: 5MB
- 权限: -rw-r--r--
- 所有者: user1
- 块列表: 0x1234→0x5678→0x9abc
实际数据分散存储在3个物理block中
四、运维实战技巧
1、 存储问题排查
# 空间占用分析三部曲
du -sh /* 2>/dev/null # 快速定位大目录
ncdu /var/log # 交互式可视化分析
lsof | grep deleted # 查找已删除未释放空间的文件# 日志文件动态清理(无需停止服务)
truncate -s 0 /var/log/big.log # 清空内容保留inode
> /var/log/big.log # 同上(更简写法)
2、扩容方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| LVM在线扩容 | 无需停机,灵活调整 | 需要预配置LVM |
| 云磁盘扩容 | 控制台操作简单 | 可能需要重启实例 |
| 符号链接迁移 | 快速解决燃眉之急 | 破坏目录结构 |
3、性能优化参数
# 针对SSD优化ext4
mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sdb1# XFS高性能配置
mkfs.xfs -f -i size=2048 /dev/sdc1
mount -o noatime,nodiratime /dev/sdc1 /data
五、经典面试题解析
1、 软链接 vs 硬链接
# 创建示例
echo "data" > original.txt
ln original.txt hardlink # 硬链接
ln -s original.txt symlink # 软链接
#对比分析
| 特性 | 硬链接 | 软链接 |
|---|---|---|
| inode | 与原文件相同 | 新建独立inode |
| 跨文件系统 | 不支持 | 支持 |
| 原文件删除 | 仍可访问 | 链接失效 |
| 目录链接 | 不可创建 | 可以创建 |
2、分区扩容实战
# LVM扩容流程(CentOS)
pvcreate /dev/sdd # 创建物理卷
vgextend vg_data /dev/sdd # 扩展卷组
lvextend -l +100%FREE /dev/vg_data/lv_app # 扩展逻辑卷
xfs_growfs /app # 调整文件系统
六、扩展学习建议
实验环境搭建:使用VirtualBox创建多磁盘虚拟机练习LVM性能测试工具:掌握fio、dd、iozone的使用云平台实践:在AWS/Aliyun上操作云磁盘扩容内核原理:研究Linux VFS实现机制故障模拟:故意损坏分区表练习数据恢复文件系统的精通需要理论结合实践,建议通过以下路径逐步深入:
基础命令 → 分区管理 → 性能调优 → 灾难恢复 → 内核机制
相关文章:
文件系统分析
文件系统与磁盘管理详解 一、存储设备基础 1. 存储设备类型对比 设备类型特点典型接口应用场景机械硬盘依赖磁头机械读写,转速影响性能(5400/7200/10000rpm),价格低容量大SATA/SAS冷数据存储、备份固态硬盘无机械结构ÿ…...
JS面相对象小案例:自定义安全数组
在JS中,数组不像其他语言(java、python)中那样安全,它具有动态性和弱类型性,切越界访问没有具体的报错,而是返回空,为提升数组的安全性,我们可以自行定义一个安全数组。 一、增加报…...
Microsoft Power BI:融合 AI 的文本分析
Microsoft Power BI 是微软推出的一款功能强大的商业智能工具,旨在帮助用户从各种数据源中提取、分析和可视化数据,以支持业务决策和洞察。以下是关于 Power BI 的深度介绍: 1. 核心功能与特点 Power BI 提供了全面的数据分析和可视化功能&…...
如何实现滑动列表功能
文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了沉浸式状态栏相关的内容,本章回中将介绍SliverList组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的SliverList组件是一种列表类组件,类似我们之前介…...
计算机网络一点事(23)
传输层 端口作用:标识主机特定进程,TCP,UDP协议 端口号分类:服务器:0-1023,熟知 1024-49151 登记 客户端:49152-65535 功能:实现端到端,进程到进程的通信,…...
Linux——网络(tcp)
文章目录 目录 文章目录 前言 一、TCP逻辑 1. 面向连接 三次握手(建立连接) 四次挥手(关闭连接) 2. 可靠性 3. 流量控制 4. 拥塞控制 5. 基于字节流 6. 全双工通信 7. 状态机 8. TCP头部结构 9. TCP的应用场景 二、编写tcp代码函数…...
算法题(54):插入区间
审题: 需要我们把newinterval的区间与interval的区间合并起来,并返回合并后的二维数组地址 思路: 方法一:排序合并区间 我们可以先把newinterval插入到interval中,进行排序然后复用合并区间的代码 方法二:模…...
UE学习日志#18 C++笔记#4 基础复习4 指派初始化器和指针
1 指派初始化器 C20引入了指派初始化器,以使用他们的名称初始化所谓聚合的数据成员。 聚合类型是满足以下限制的数组类型的对象或结构或类的对象: 1.仅public数据成员, 2.无用户声明或继承的构造函数, 3.无虚函数和无虚基类、priv…...
【算法】回溯算法专题① ——子集型回溯 python
目录 引入变形实战演练总结 引入 子集 https://leetcode.cn/problems/subsets/description/ 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 …...
Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)
文章目录 Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)settings.gradle.kts 基础配置选项单项目配置多项目配置 高级配置选项插件管理(Plugin Management)基础配置模板案例:Android项目标准配…...
makailio-alias_db模块详解
ALIAS_DB 模块 作者 Daniel-Constantin Mierla micondagmail.com Elena-Ramona Modroiu ramonaasipto.com 编辑 Daniel-Constantin Mierla micondagmail.com 版权 © 2005 Voice Sistem SRL © 2008 asipto.com 目录 管理员指南 概述依赖 2.1 Kamailio 模块 2.2 外…...
【机器学习】自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数
一、使用pytorch框架实现逻辑回归 1. 数据部分: 首先自定义了一个简单的数据集,特征 X 是 100 个随机样本,每个样本一个特征,目标值 y 基于线性关系并添加了噪声。将 numpy 数组转换为 PyTorch 张量,方便后续在模型中…...
Spring Boot - 数据库集成06 - 集成ElasticSearch
Spring boot 集成 ElasticSearch 文章目录 Spring boot 集成 ElasticSearch一:前置工作1:项目搭建和依赖导入2:客户端连接相关构建3:实体类相关注解配置说明 二:客户端client相关操作说明1:检索流程1.1&…...
Java篇之继承
目录 一. 继承 1. 为什么需要继承 2. 继承的概念 3. 继承的语法 4. 访问父类成员 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. super和this关键字 7. 子类构造方法 8. 代码块的执行顺序 9. protected访问修饰限定符 10. 继承方式…...
32. C 语言 安全函数( _s 尾缀)
本章目录 前言什么是安全函数?安全函数的特点主要的安全函数1. 字符串操作安全函数2. 格式化输出安全函数3. 内存操作安全函数4. 其他常用安全函数 安全函数实例示例 1:strcpy_s 和 strcat_s示例 2:memcpy_s示例 3:strtok_s 总结 …...
ArkTS编程规范
文章目录 目标和适用范围规则来源章节概览代码风格编程实践 术语和定义总体原则命名类名、枚举名、命名空间名采用UpperCamelCase风格变量名、方法名、参数名采用lowerCamelCase风格常量名、枚举值名采用全部大写,单词间使用下划线隔开避免使用否定的布尔变量名&…...
SQL进阶实战技巧:断点去重技术详解
目录 一、核心概念 二、典型应用场景 三、实现步骤与SQL示例 场景 目标 步骤 分析 结果 四、核心原理解释 1. 核心原理:相邻比较 2. 去重的本质 3. 与传统方法的对比 4 类别理解 五、如何应对复杂场景? 1. 多字段断点检测 2. 时间窗口断点 …...
深度学习之“向量范数和距离度量”
在深度学习中,范数和向量距离是两个不同的概念。向量范数是一种函数,用于将一个实数或复数向量映射为一个值。虽然范数通常用于度量向量之间的距离,但是同样也有其它的一些表示距离的方式。 范数距离 范数是具有“长度”概念的函数。在向量…...
基于Python的简单企业维修管理系统的设计与实现
以下是一个基于Python的简单企业维修管理系统的设计与实现,这里我们会使用Flask作为Web框架,SQLite作为数据库来存储相关信息。 1. 需求分析 企业维修管理系统主要功能包括: 维修工单的创建、查询、更新和删除。设备信息的管理。维修人员…...
javascript常用函数大全
javascript函数一共可分为五类: •常规函数 •数组函数 •日期函数 •数学函数 •字符串函数 1.常规函数 javascript常规函数包括以下9个函数: (1)alert函数:显示一个警告对话框,包括一个OK按钮。 (2)confirm函数:显…...
【Leetcode 每日一题】81. 搜索旋转排序数组 II
问题背景 已知存在一个按非降序排列的整数数组 n u m s nums nums,数组中的值不必互不相同。 在传递给函数之前, n u m s nums nums 在预先未知的某个下标 k ( 0 < k < n u m s . l e n g t h ) k\ (0 < k < nums.length) k (0<k<…...
< OS 有关 > Android 手机 SSH 客户端 app: connectBot
connectBot 开源且功能齐全的SSH客户端,界面简洁,支持证书密钥。 下载量超 500万 方便在 Android 手机上,连接 SSH 服务器,去运行命令。 Fail2ban 12小时内抓获的 IP ~ ~ ~ ~ rootjpn:~# sudo fail2ban-client status sshd Status for the jail: sshd …...
【算法设计与分析】实验7:复杂装载及0/1背包问题的回溯法设计与求解
目录 一、实验目的 二、实验环境 三、实验内容 四、核心代码 五、记录与处理 六、思考与总结 七、完整报告和成果文件提取链接 一、实验目的 针对复杂装载问题、及0/1背包问题开展分析、建模、评价,算法设计与优化,并进行编码实践。 理解复杂装载…...
仿真设计|基于51单片机的温湿度、一氧化碳、甲醛检测报警系统
目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部内容 资料获取 具体实现功能 (1)温湿度传感器、CO传感器、甲醛传感器实时检测温湿度值、CO值和甲醛值进…...
使用vhd虚拟磁盘安装两个win10系统
使用vhd虚拟磁盘安装两个win10系统 前言vhd虚拟磁盘技术简介准备工具开始动手实践1.winX选择磁盘管理2.选择“操作”--“创建VHD”3.自定义一个位置,输入虚拟磁盘大小4.右键初始化磁盘5.选择GPT分区表格式6.右键新建简单卷7.给卷起个名字,用于区分8.打开…...
Python学习——函数参数详解
Python中的函数参数传递机制允许多种灵活的参数类型,可以根据需求灵活配置参数,这使得函数具有更强大的扩展性和适应性。以下是对各类参数类型的详细说明: 1. 定义函数的不同参数类型 1.1 位置参数 定义方式:def func(a, b2) 特…...
深入理解Spring事务管理
一、事务基础概念 1.1 什么是事务? 事务(Transaction)是数据库操作的最小工作单元,具有ACID四大特性: 原子性(Atomicity):事务中的操作要么全部成功,要么全部失败 一致…...
自制虚拟机(C/C++)(二、分析引导扇区,虚拟机读二进制文件img软盘)
先修复上一次的bug,添加新指令,并增加图形界面 #include <graphics.h> #include <conio.h> #include <windows.h> #include <commdlg.h> #include <iostream> #include <fstream> #include <sstream> #inclu…...
基于最近邻数据进行分类
人工智能例子汇总:AI常见的算法和例子-CSDN博客 完整代码: import torch import numpy as np from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt# 生成一个简单的数据集 (2个特征和2个分类…...
ASP.NET Core 启动并提供静态文件
ASP.NET Core 启动并提供静态文件 即是单个可执行文件,它既运行 API 项目,也托管 前端项目(通常是前端的发布文件)。 这种方式一般是通过将 前端项目 的发布文件(例如 HTML、CSS、JavaScript)放入 Web AP…...
