9.1 Linux存储结构和文件系统
1. 存储结构
Linux系统中的一切文件都是从“根”目录(/)开始的,并按照文件系统层次标准(FHS)采用倒树状结构来存放文件,以及定义了常见目录的用途。

| 目录名称 | 应放置文件的内容 |
| /boot | 开机所需文件—内核、开机菜单以及所需配置文件等 |
| /dev | 以文件形式存放任何设备与接口 |
| /etc | 配置文件 |
| /home | 用户主目录 |
| /bin | 存放单用户模式下还可以操作的命令 |
| /lib | 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数 |
| /sbin | 开机过程中需要的命令 |
| /media | 用于挂载设备文件的目录 |
| /opt | 放置第三方的软件 |
| /root | 系统管理员的家目录 |
| /srv | 一些网络服务的数据文件目录 |
| /tmp | 任何人均可使用的“共享”临时目录 |
| /proc | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 |
| /usr/local | 用户自行安装的软件 |
| /usr/sbin | Linux系统开机时不会使用到的软件/命令/脚本 |
| /usr/share | 帮助与说明文件,也可放置共享文件 |
| /var | 主要存放经常变化的文件,如日志 |
| /lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
/root 管理员的家目录
/bin 可执行的二进制文件
/boot 系统启动文件
/dev 设备文件目录
/etc 配置文件
/home 用户家目录
/var 变化的文件,一般存储日志
/lib 库文件
/usr 用户保存的目录
/media 媒体文件
/tmp 共享的文件,权限一般是777,设置保护位,禁止其他用户删除
2. 绝对路径和相对路径
绝对路径指的是从根目录(/)开始写起的文件或目录名称,而相对路径则指的是相对于当前路径的写法。
绝对路径

相对路径

3. 物理设备命名规则
系统内核中的udev设备管理器会自动把硬件名称规范,另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。
| 硬件设备 | 文件名称 |
| IDE设备 | /dev/hd[a-d] |
| SCSI/SATA/U盘 | /dev/sd[a-z] |
| virtio设备 | /dev/vd[a-z] |
| 软驱 | /dev/fd[0-1] |
| 打印机 | /dev/lp[0-15] |
| 光驱 | /dev/cdrom |
| 鼠标 | /dev/mouse |
| 磁带机 | /dev/st0或/dev/ht0 |
现在常用的设备文件都是以/dev/sd开头的,sda表示内核识别到的第一块硬盘,并不是指第一个插槽
后面的编号1-4表示主分区和扩展分区
编号5以上只能表示逻辑分区
/dev/sda5——表示/dev目录下,系统内核第一块识别到的硬盘设备分区编号为5的逻辑分区设备文件
sda8,分区编号可以自己指定,并不能确定一定有编号7 编号6
sdb4,可能是主分区也可能是扩展分区,并不是主分区在前,逻辑分区最后,一般采用3个主分区+1个扩展分区的形式
一块硬盘只能有一个扩展分区,最多32个逻辑分区

为什么一个硬盘主分区不能超过4个?
硬盘设备是由大量扇区组成的,每个扇区为512字节,第一个扇区保存主引导记录和分区信息,主引导记录占446字节,分区表占64字节,结束符占2字节。
每一个分区信息16字节,所以最多4个主分区。
如果要更多的分区,只能把其中一个分区表的空间指向另一个分区,这样就变成了扩展分区,在扩展分区内创建多个逻辑分区。
4. 文件系统
文件系统的作用是合理规划硬盘,以保证用户正常的使用需求。用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的。
常见的文件系统:
ext2:RHEL4使用的文件系统,没有日志功能
ext3:RHEL5使用的文件系统,是一款日志文件系统,系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。
ext4:RHEL6使用的文件系统,ext3的改进版,提高了读写效率,存储容量最高1EB
XFS:RHEL7/8使用的文件系统,可以快速地恢复可能被破坏的文件,而且强大的日志功能只需花费极低的计算和存储性能。存储容量最高18EB
5. 硬盘存储数据原理
6. VFS
计算机中有众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构,Linux内核中的软件层为用户程序提供了一个虚拟文件系统(Virtual File System,VFS)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。

通过这样实现了在不同文件系统中随意操作。
9.1 Linux存储结构和文件系统的更多相关文章
- 《Linux就该这么学》培训笔记_ch06_存储结构与磁盘划分
<Linux就该这么学>培训笔记_ch06_存储结构与磁盘划分 文章最后会post上书本的笔记照片. 文章主要内容: Linux系统的文件存储结构(FHS标准) 物理设备命名规则(udev ...
- 文件系统层次结构标准 Linux 系统目录结构
https://zh.wikipedia.org/wiki/文件系统层次结构标准 多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求. [3] [4] [5] [6] 但截至200 ...
- 《linux就该这么学》第八节课:第六章存储结构与磁盘划分
笔记 (借鉴请修改) 6.3.文件系统与数据资料 目前linux最常见的文件系统: ext3:日志文件系统.宕机时可自动恢复数据资料,容量越大恢复时间越长,且不能保证百分百不丢失. ext4:e ...
- linux的存储结构
在linux中存储结构如下: Linux系统中的文件存储结构 那么在linux中每个目录都是什么含义呢 在linux中相对路径和绝对路径是必须要了解的一个概念 绝对路径(absolute path): ...
- Linux系统目录结构以及简单说明
Linux系统目录结构以及简单说明 linux目录图: / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp ...
- Docker镜像文件存储结构
docker相关文件存放在:/var/lib/docker目录下 镜像的存储结构主要分两部分,一是镜像ID之间的关联,一是镜像ID与镜像名称之间的关联,前者的结构体叫Graph,后者叫TagStore ...
- day 2 Linux目录结构
Linux系统的目录结构的基本介绍: 1)在逻辑上的所有目录(包括目录下的子目录)都在最高级别的目录“/”下. 根(/)目录是Linux系统中所有目录的起始点(顶点),根下面的目录及子目录是一个有层次 ...
- 【Linux】Linux 目录结构
博客已转移,请借一步说话 .http://www.weixuehao.com/archives/492 初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用 ...
- linux内核启动以及文件系统的加载过程
Linux 内核启动及文件系统加载过程 当u-boot 开始执行 bootcmd 命令,就进入 Linux 内核启动阶段.普通 Linux 内核的启动过程也可以分为两个阶段.本文以项目中使用的 lin ...
随机推荐
- 说说&和&&的区别?
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false.
- 关于Oracle数据库的PIVOT分组函数的使用
官方文档挺详细的,在新功能那里有介绍到:http://www.oracle-developer.net/display.php?id=506 PIVOT的语法:https://docs.oracle. ...
- URL转义特定字符
import java.net.URLDecoder; import java.net.URLEncoder; import java.nio.charset.Charset; // 实例代码 Str ...
- 什么是 Hystrix?它如何实现容错?
Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性.通常对于使用微服 构开发的系统,涉及到许多微服务 ...
- Oracle入门基础(二)一一过滤和排序
SQL> --查询10号部门的员工 SQL> select * from emp where deptno=10; EMPNO ENAME JOB MGR HIREDATE SAL COM ...
- 在 mapper 中如何传递多个参数?
1.第一种: DAO 层的函数 public UserselectUser(String name,String area); 对应的 xml,#{0}代表接收的是 dao 层中的第一个参数,#{1} ...
- 什么是 Callable 和 Future?
Callable 接口类似于 Runnable,从名字就可以看出来了,但是 Runnable 不会返 回结果,并且无法抛出返回结果的异常,而 Callable 功能更强大一些,被线程执 行后,可以返回 ...
- elasticsearch 索引数据多了怎么办,如何调优,部署 ?
解答:索引数据的规划,应在前期做好规划,正所谓"设计先行,编码在后", 这样才能有效的避免突如其来的数据激增导致集群处理能力不足引发的线上客户 检索或者其他业务受到影响. 如何调优 ...
- 用 wait-notify 写一段代码来解决生产者-消费者问题?
只要记住在同步块中调用 wait() 和 notify()方法,如 果阻塞,通过循环来测试等待条件.
- flash的TotalFrames显示undefined
通过js来操作flash的时候,获取到总帧数的是属性.TotalFrames,而不是属性TotalFrames().在asp.net中,js放在最后可以在一定程度上避免当前flash没有加载完,导致获 ...