-
持久存储
- 虚拟化中的一个重要部分是持久存储(persistent storage),即使用永久存储设备,永久(至少很长一段时间)地存储信息
- 永久存储设备包括传统硬盘驱动器(hard disk drive) 或现代的固态存储设备(solid-state storage device)
- 持久存储的重点是提高性能和可靠性
-
文件与目录
- 存储虚拟化中出现了两个关键的抽象:文件(file) 和目录(directory)
-
文件
- 文件就是一个线性字节数组,每个字节都可以存取
- 每个文件都有一个用户可读名字,通常会包含后缀名(例如.txt、.png、.docx)
- 每个文件都有一个低级名称(low-level name),也被称为inode号(inode number),用户通常不知道这个名字
- 在大多数系统中,操作系统并不了解文件的结构(例如它是文本,还是图片),文件系统的责任仅仅是将这些数据永久存储在磁盘上,并当用户请求时在那个位置找到文件
-
目录
- 一个目录也有一个低级名字,即inode号。不过文件inode号的内容非常具体:它包含一个 {用户可读名字, 低级名字}对,可将用户可用名称与低级名称相互映射
- 目录下的每个条目都会指向文件或其他目录(子目录、链接、快捷方式等)
- 通过在目录下构建子目录(sub-directory),可以构建目录树(directory tree),也称目录层次结构(directory hierarchy),在该目录下存储文件和目录
- 目录层次结构从根目录(rood directory) 开始
- 在Unix/Linux系统中,根目录就是 /
- 在windows系统中,根目录是C:/、D:/ 等,不过一般写为C:\ 或 C://
-
路径
- 每个文件与目录都有自己的路径,分为绝对路径和相对路径
- 绝对路径是从根目录开始的路径,需要加根目录符号
- 相对路径是从某个确定目录开始的路径,不用加起始目录
- 通过分隔符(separator) 来分离各级目录
- 例如:
/
└── project/
└── arona/
├── ai_service.py
└── backend/
- 对于文件
ai_service.py- 绝对路径就是
/project/arona/ai_service.py - 相对于目录
/project的相对路径就是arona/ai_service.py
- 绝对路径就是
- 对于目录
backend- 绝对路径是
/project/arona/backend - 相对于目录
/project的相对路径就是arona/backend
- 绝对路径是
- 对于文件
- 每个文件与目录都有自己的路径,分为绝对路径和相对路径
-
- 存储虚拟化中出现了两个关键的抽象:文件(file) 和目录(directory)
-
文件系统接口
-
创建、顺序读取与写入
-
open()
- 操作系统提供了系统调用open(),调用open()时可以传入不同的标志来实现不同的功能
- 传入O_CREATE标志,程序可以创建一个新文件
- 传入O_RDONLY标志,程序可以以方式打开文件
- 传入O_WRONLY标志,程序可以以只写方式打开文件
- 传入O_RDWR标志,程序可以以可读可写方式打开文件
- 传入O_TRUNC标志,程序可以删除该文件的内容
- 多个标志可以通过按位或(|) 同时使用,但是O_RDONLY、O_WRONLY、O_RDWR互斥
- open()会返回一个文件描述符(file descriptor),这是一个整数,是进程私有的
- 通过使用文件描述符访问文件,操作系统就会假定该进程有权限访问该文件。即文件描述符是一个权限(capability),是一个不透明的句柄
- 文件描述符也可以作为指向文件类型对象的指针,从而让程序使用read()或write()方法来访问文件
- 操作系统提供了系统调用open(),调用open()时可以传入不同的标志来实现不同的功能
-
cat
- Linux系统提供了cat指令,从文件中读取内容并显示到终端上
-
-
不按顺序的读取和写入
- 通过lseek(),可以通过一个偏移量来读写文件的指定位置
-
立即写入
- 程序调用write()时,只是告诉操作系统“请在将来的某个时刻将这些数据存储起来”,而不是让操作系统立即存储数据
- 通过fsync(),可以立即强制操作系统写入磁盘,这对数据库管理系统(DBMS)等软件非常重要
-
文件重命名
- 通过mv指令,可以实现文件的重命名
-
删除文件
- 通过rm指令,可以实现删除文件或者删除目录
- 删库跑路:rm -rf /*
-
创建目录
- 使用mkdir
-
删除目录
- 使用rmdir
-
操作系统 - Operating System
/
Chapter IV 持久性
/
Section 2 文件
/
2-1 文件系统