在Linux中,文件包括常规文件、目录、符号链接等。为了方便理解,在本文中,文件指常规文件,目录指常规目录。

文件

1. 文件是如何存储的?

文件是由3部分组成 的:

文件名: dentry

文件元数据: inode

文件数据:data

image.png

2. 什么是inode?

inode保存着除了文件名之外的所有文件信息,包括文件类型、所有者以及权限和时间信息等, 可以使用stat访问文件的inode:

[root@MiWiFi-R3-srv test]# stat file

File: ‘file’

Size: 0 Blocks: 0 IO Block: 4096 regular empty file

Device: fd00h/64768d Inode: 33878261 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Context: unconfined_u:object_r:user_tmp_t:s0

Access: 2017-05-29 13:40:51.984844445 +0800

Modify: 2017-05-29 13:40:51.984844445 +0800

Change: 2017-05-29 13:40:51.984844445 +0800

Birth: -

3. 什么是硬链接?

与硬链接相关联的是文件inode, 本质使用不同文件名(dentry)对相同的inode的再次引用。引用计数可以使用ls -l查看:

[root@MiWiFi-R3-srv test]# ln file hard_link_to_file

[root@MiWiFi-R3-srv test]# ll

total 0

-rw-r--r--. 2 root root 0 May 29 13:40 file # 引用为2

-rw-r--r--. 2 root root 0 May 29 13:40 hard_link_to_file

image.png

当引用计数归0时,文件也就无法被访问了,没有了文件名(dentry),这也就是文件删除(rm)的原理.

4. 什么是软链接?

软链接在Windows中可以认为是快捷方式,内部具体的实现为:

image.png

软链接和源文件是两个文件,具有两个不同的inode + data。软链接文件在数据区域存储着对源文件的引用。

[root@MiWiFi-R3-srv test]# ln -s file soft_link_to_file

[root@MiWiFi-R3-srv test]# ll

total 0

-rw-r--r--. 2 root root 0 May 29 13:40 file # 源文件字节数为0

-rw-r--r--. 2 root root 0 May 29 13:40 hard_link_to_file

lrwxrwxrwx. 1 root root 4 May 29 19:49 soft_link_to_file -> file # 快捷方式字节数为4

目录

在Linux中,目录也是文件, 所以上述文件中内容在目录中全部适用,特殊的地方在于目录的数据区域存储的是子文件/文件夹与inode的映射关系;

image.png

linux文件存储结构,Linux文件存储方式以及软硬链接相关推荐

  1. 不同存储结构的文件磁盘io操作次数_MySQL InnoDB存储引擎

    第1章 MySQL体系结构和存储引擎 1.1数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合.实例:MySQL数据库由后台线程以及一个共享内存区组成.共享内存可以被运行 的后台线程所共享 ...

  2. 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

    存储结构分四类:顺序存储.链接存储.索引存储 和 散列存储. 顺序结构和链接结构适用在内存结构中. 顺序表每个单元都是按物理顺序排列的,如果你想访问那个单元你可以根据提供的指针等直接访问到需要的东西, ...

  3. 图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)

    图(Graph)是一种非线性结构 图的特点(多对多),顶点之间的关系是任意的,图中任意两个顶点之间都可能相关,顶点的前驱和后继个数无限制. 图:数据元素间存在多对多关系的数据结构,加上一组基本操作构成 ...

  4. 使用ls命令查看Linux的目录结构,linux查看工作目录文件ls命令用法详解

    查看工作目录文件ls ls命令是Linux下最常用的命令.ls命令就是list的缩写.默认情况下ls用来查看当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单.通过ls命令 ...

  5. 使用ls命令查看Linux的目录结构,linux ls命令查看目录文件详解

    首页 > Linux教程 > 常用命令 > ls 查看目录文件 linux ls命令查看目录文件详解 linux中ls命令用来查看目录中的所有文件和子目录,可选的参数比较多,本文筛选 ...

  6. Oracle存储结构_文件

    这篇文章是参考甲骨论老相老师的教学视频 http://v.youku.com/v_show/id_XMzk4NjkzMDY0.html 所做的学习笔记 构成oracle数据库的文件可以包括如下图的几种 ...

  7. 联合索引会创建几个索引_联合索引在B+Tree上的存储结构及数据查找方式

    来源:SegmentFault 思否社区作者:木子雷 前言: 本篇文章主要是阐述下 联合索引 在 B+Tree 上的实际存储结构. 本文主要讲解的内容有: 联合索引在B+树上的存储结构 联合索引的查找 ...

  8. 联合索引会创建几个索引_联合索引在B+树上的存储结构及数据查找方式

    能坚持别人不能坚持的,才能拥有别人未曾拥有的. 关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 原文首发于该公号,欢迎关注 引言 上一篇文章<MySQL索引那些事>主要讲了MyS ...

  9. mysql联合索引怎么存储_联合索引在B+树上的存储结构及数据查找方式

    能坚持别人不能坚持的,才能拥有别人未曾拥有的. 关注编程大道公众号,让我们一同坚持心中所想,一起成长!! 引言 上一篇文章<MySQL索引那些事>主要讲了MySQL索引的底层原理,且对比了 ...

最新文章

  1. IBM Java多线程 - 6.其它线程 API 详细信息
  2. 计算机excel行高在哪里,如何在Excel2016中设置改行高和列宽?
  3. mybatis 乐观锁和逻辑删除
  4. Linux系统编程——僵尸的模拟以及僵尸进程的预防
  5. 开源web应用防火墙 - Naxsi
  6. html 获取本地txt输出,html 5 读取本地文件API
  7. RabbitMQ如何解决被重复消费和数据丢失的问题?
  8. 在TOMCAT中使用JNDI连接数据源
  9. asp.net 缓存Cache的使用总结
  10. LINUX下载maven/mvn
  11. sidirect 连接西门子_INTOUCH DASSIDirect3.0 DASSIDirect3.0驱动是西门子PLC与Intouch连接通讯的必备驱动程序 - 下载 - 搜珍网...
  12. Linux运维工程师面试题库,Linux运维工程师面试题库
  13. 计算机运行时内存会超吗,我们不曾深纠的电脑技术 篇一:我们为什么要对内存进行超频?...
  14. iOS加速器简单介绍
  15. 在北极都可以穿短袖了,温度飙升至32.5℃
  16. SQL Server研习录(20)——FLOOR()函数
  17. python e_python 常数e
  18. Windows 7 Build 7068 下载泄露
  19. 迅雷下载器-FDM,看2019新年大电影
  20. 关于Oracle索引的一点认识

热门文章

  1. 一张图读懂哔哩哔哩2019Q1财报
  2. 中国13个新职业薪酬待遇如何?这个岗位平均薪酬惊人!
  3. 华为P30 Pro终极渲染图曝光:后置徕卡四摄颜值出众
  4. 开发到底要不要自己做测试?
  5. 前端开发中的调试技巧
  6. android canvas 清空画布,清除canvas画布内容(点擦除+线擦除)
  7. Android画笔自定义控件三要素
  8. Golang实践录:静态资源文件整合:初步使用
  9. python tcl smb_Python——操作smb文件服务器(上传和下载)
  10. alphac测试和bata测试区别_绝缘电阻测试仪和接地电阻测试仪的测试方式区别