搞懂外置存储,让你的数据更安全

这几天语雀崩溃的事闹得沸沸扬扬,单看技术这一点的话,就是存储出了问题,没有做好热备。

趁着这个契机,我又翻了一遍外置存储,回顾回顾其中的基本概念和原理,做了个笔记,也分享给大家。

什么是外置存储?

我们常见的硬盘、 光盘、U盘都可以称之为外置存储,还有现在不常见的磁带、软盘,也都属于外置存储。

外置存储是相对于计算机内存而言的,内存在内,是计算机的核心组件,外存在外,是计算机的输入输出设备。

外置存储的主要特点:能够持久化存储数据,是非易失的,也就是说,即使电源断开,数据也不会丢失。

想象一下,你写了一篇很重要的报告,如果没有外置存储,电源一旦断开,你的辛勤工作就会付诸东流。但有了外置存储,即使电源断开,数据也不会丢失。外置存储设备设计的非常人性化,方便了我们的读写和查阅。

存储的种类

外置存储设备种类繁多,技术也在持续发展。

计算机的早期,数据主要通过磁带存储。磁带主要是顺序读写,这种设计主要用于数据归档。比如银行每天的交易记录备份等。

然后是我们熟悉的光盘,它能顺序写入数据,随机读取,适合于数据分发和归档。比如分发电影、音乐等。

再来是我们日常使用最频繁的软盘、磁盘、U盘以及SSD,这些都是随机读写的设备,是目前计算机日常使用的主要存储工具。

数据组织方式

不同的存储设备有不同的数据组织方式,外置存储数据组织方式主要有两种:

只读型,如光盘,我们需要一种能够快速读取数据的方式,于是有了ISO-9660、UDF、Joliet等数据组织方式,这些方式都是将元数据和文件数据紧凑存储,优化了读操作。

读写型,如磁盘,我们需要一种能够快速查找数据的方式,于是有了NTFS、HFS、EXT3、EXT4、BTRFS、JFS2等文件系统,这些文件系统中的元数据通常采用B树/B+树/H树等数据结构来组织。

在外置存储设备的数据组织中,我们还要讲讲日志。它解决了什么问题?想象一下,如果在写入数据的过程中电源突然断开,那么数据就会丢失。为了防止这种情况,存储设备内部引入了日志功能。日志的工作原理是先写日志,再写文件系统,如果后边写入被中断,恢复时从日志回放写入。

这样,每一个写操作涉及的元数据(如文件的位置、大小、创建时间等)和用户数据都要在硬盘上写两次,一次写在日志里,一次写在文件系统上。如果文件很大,效率就会很低。为了提高效率,我们有一种更高效的方式:先写入用户数据(user data)、再写日志(只有元数据),只要日志是有效的(日志有一个写完毕结束符,没有结束符的就是无效日志),那么它对应的用户数据也是有效的。一旦发生掉电故障,最坏的结果也就是最后一条日志没记完,对应的用户数据会丢,但是文件系统的一致性和完整性是有保证的。比如Linux EXT3文件系统就可以选择Data Journaling还是Ordered Journaling,分别对应上述两种方式。

使用步骤

那么,如何使用外置存储设备呢?在使用外置存储设备时,我们需要经过三个步骤。

首先是分区,将一个物理存储设备逻辑划分为多个存储设备,方便管理。

然后是格式化,初始化并标记分区的文件系统格式。

最后是挂载,将存储设备加入到操作系统的文件系统命名空间中。

编程接口

最后,我们来看看如何通过编程来操作外置存储设备。

首先,操作系统提供了一系列底层支持,比如虚拟内存在磁盘上使用SWAP分区交换内存分页数据;所有输入输出设备都通过文件来抽象访问,在Unix中一切皆文件(当然有些理想化);还有通过文件操作控制冲突,用于进程同步和互斥;以及一些操作系统底层的系统调用等。

第二,操作系统基础库提供了一些命令,比如ls, mkdir, mv, cp, rmdir,cat, vi, mv, cp, rm等,大家使用linux时应该会经常用到其中的某些命令。这里特别提示大家,谨慎使用 rm。

最后是编程语言封装的一些接口,比如os.Mkdir, os.Rename, os.Remove,os.Open/Create/OpenFile等,程序中读写文件时经常会用到类似的函数或方法。


总的来说,外置存储设备是我们日常计算机使用中不可或缺的一部分,它的使用原理和方式都是我们作为软件技术开发人员必须要掌握的基础知识。希望这篇文章能帮助你更好地理解和使用外置存储设备。

学好技术一是要多实践多总结,实践出真知,二是要多沟通多交流,提高学习效率,特别是关注我这个微/信/公/众\号:萤火架构,我会分享很多的架构经验和认识,可以帮你少走一些弯路。

相关推荐
武天旭3 小时前
AI安全--AI大模型的隐私保护与法律法规
人工智能·安全
2601_9672127210 小时前
高防护轨道式插座安全结构与工程适配技术说明
大数据·经验分享·安全
treesforest10 小时前
游戏账号安全风险分层方案:IP信号分层与人机复核实践
tcp/ip·安全·游戏·1024程序员节
救救孩子把10 小时前
RAG 还是 Fine-Tuning?从语义切分、QLoRA 到安全防护的企业级 LLM 优化实战
安全·llm·rag·fine-tuning·qlora
每天题库11 小时前
汽车维修工等级考试题库 理论实操核心考点一次梳理清
学习·安全·考试·题库·考证
QZ1665609515911 小时前
数据库监测的主动防御:实时感知,看见即掌控
网络·安全·网络安全
今天背单词了吗98014 小时前
AI 网关:大模型时代的统一接入与安全防线
网络·人工智能·安全·ai·1024程序员节
pt104316 小时前
Cisco设备网络安全系列-12:Web服务器防护与WAF应用
网络·安全
jimmyleeee16 小时前
Agent安全之一:Agent Goal Hijack(ASI01)----当智能体“正确地”执行了错误的目标
运维·网络·安全
byte轻骑兵17 小时前
【LMP】规范精讲[8]: 主从易位——角色切换的时序反转与微微网重构
网络协议·安全·蓝牙协议·lmp·链接管理