首页 > 系统相关 >Linux文件系统的一些基本概念

Linux文件系统的一些基本概念

时间:2024-08-07 19:58:31浏览次数:22  
标签:文件 文件系统 链接 存放 Linux inode 基本概念

Linux 文件系统简介

在 Linux 操作系统中,一切被操作系统管理的资源,如磁盘驱动器、打印机、普通文件或目录等,都被视为文件进行管理和访问。在Linux 系统中,“一切都是文件”。

Linux 系统可以通过统一的文件接口来管理和操作不同类型的资源。Linux可以使用类似于读写文件的方式来对待网络接口、磁盘驱动器等,使得操作和管理这些资源更加统一和简便

这种文件为中心的设计理念为 Linux 系统带来了灵活性和可扩展性

Linux中的存储单位

硬盘的最小存储单位是扇区(Sector),块(block)由多个扇区组成。文件数据存储在块中。块的最常见的大小是 4kb,约为 8 个连续的扇区组成(每个扇区存储 512 字节)。

为什么使用inode (索引节点:i(index)+node)

inode 是 Linux 文件系统的基础。

一个文件可能会占用多个块,但是一个块只能存放一个文件。我们将文件存储在了块(block)中后,每一块的地址,创建时间,权限等信息都需要被存储。所以还需要空间来存储文件的 元信息 metadata存储文件元信息的区域就叫 inode
每个文件都有一个唯一的 inode,存储文件的元信息。

inode的一些性质

inode 是一种固定大小的数据结构,它的大小在文件系统创建时就会确定,并且在文件的生命周期内保持不变

inode 的数量是有限的,每个文件系统只能包含固定数量的 inode。当文件系统中的 inode 用尽后,无法再创建新的文件,尽管磁盘可能还有空间。因此,在创建文件系统时,需要合理分配 inode 的数量

可以使用 stat 命令可以查看文件的 inode 信息,包括文件的 inode 号码、文件类型、权限、所有者、文件大小、修改时间。

使用inode的优点和缺点

优点:
安全性。即使文件名被修改或删除,文件的 inode 号码不会改变,从而可以避免一些因文件被移动或删除导致的错误。
性能高。因为 inode 的访问速度非常快,可以直接通过 inode号码定位到文件的元数据信息,无需遍历整个文件系统
缺点:
使用更加复杂。使用 inode 号码也使得文件系统在用户和应用程序层面更加抽象和复杂,需要通过系统命令或文件系统接口来访问和管理文件的 inode 信息。

硬链接和软链接

在Linux系统中,文件链接(File Link)是一种特殊的文件类型,可以在文件系统中指向另一个文件(文件链接也是文件)。常见的文件链接类型有两种:
硬链接(Hard Link)
在 Linux文件系统中,每个文件和目录都有一个唯一的索引节点(inode)号,用来标识该文件或目录。硬链接通过 inode节点号建立连接,硬链接和源文件的 inode节点号相同。删除其中任何一个对另外一个没有影响,可以通过给文件设置硬链接文件来防止重要文件被误删
只有删除了源文件和所有对应的硬链接文件,该文件才会被真正删除。

硬链接的一些限制:
不能对目录以及不存在的文件创建硬链接
硬链接也不能跨越文件系统

软链接(Symbolic Link)(软链接又名符号链接)

软链接和源文件的 inode 节点号不同,而是指向一个文件路径。
源文件删除后,软链接依然存在,但是指向的是一个无效的文件路径。(软连接类似于 Windows 系统中的快捷方式)

软链接与硬链接不同,他可以对目录或者不存在的文件创建,并且,软链接可以跨越文件系统。

如何创建软/硬链接

ln命令用于创建硬/软链接
ln [选项] <源文件> <硬链接/软链接文件>:创建硬链接/软链接。例如:ln -s file.txt file_link,创建名为 file_link 的软链接,指向 file.txt 文件。-s 选项代表创建软链接。s 即 symbolic 。

硬链接为什么不能跨文件系统?

硬链接是通过 inode 节点号建立连接的
然而,每个文件系统都有自己的独立 inode 表。如果在不同的文件系统之间创建硬链接,可能会导致 inode 节点号冲突的问题,即目标文件的 inode 节点号已经在该文件系统中被使用。

Linux 文件类型

Linux 支持很多文件类型: 普通文件目录文件链接文件设备文件管道文件Socket 套接字文件 等。

  • 普通文件(-):用于存储信息和数据。 Linux 用户可以根据访问权限对普通文件进行查看、更改和删除。例如:图片、PDF、text、视频、源代码等。
  • 目录文件(d,directory file):目录用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名。
  • 符号链接文件(l,symbolic link):保留了指向文件的地址而不是文件本身。
  • 字符设备(c,char):用来访问字符设备比如键盘。
  • 设备文件(b,block):用来访问块设备比如硬盘、软盘。
  • 管道文件(p,pipe) : 用于进程之间的通信
  • 套接字文件(s,socket):用于进程间的网络通信,也可以用于本机之间的非网络通信

常见目录以及说明

  • /bin: 存放二进制可执行文件(ls、cat、mkdir 等),常用命令一般都在这里;
  • /etc: 存放系统管理和配置文件;
  • /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户 user 的主目录就是/home/user,可以用~user 表示;
  • /usr: 用于存放系统级应用程序;
  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,可以把 tomcat 等都安装到这里
  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /root: 超级用户(系统管理员)的主目录;
  • /sbin: 存放二进制可执行文件,只有 root 才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如 ifconfig 等;
  • /dev: 用于存放设备文件;
  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot: 存放用于系统引导时使用的各种文件;
  • /lib 和/lib64: 存放着和系统运行相关的库文件 ;
  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件;
  • /lost+found:存放系统非正常关机后残存的文件。

标签:文件,文件系统,链接,存放,Linux,inode,基本概念
From: https://blog.csdn.net/kiku1002149488/article/details/140999718

相关文章

  • springboot的jar在linux上sh启动脚本
     java在linux上start、stop、restart、status等启动命令,sh脚本,appMgr.sh放在reources/ops下#!/usr/bin/shAPP_NAME="@project.name@[email protected]@.jar"DEPLOY_PATH=`pwd`#JVM启动参数1JVM_PARAMS="-Dfastjson.parser.safeMode=true"command=$1#nohup......
  • Linux 环境下为VirtualBox安装增强功能
    csdn搬家VirtualBox安装CentOS后,再安装增强功能就可以共享文件夹、粘贴板以及鼠标无缝移动,主要步骤如下:1、yum-yupdate2、yum-yinstallg++gccgcc-c++makekernel-*#主要是在安装增强工具提示没有安装这些软件3、yum-yinstallbzip2*......
  • linux查看防火墙状态
    原文:https://www.zhihu.com/tardis/zm/art/447288815?source_id=1005inux查看防火墙状态的方法:一、iptables防火墙1、基本操作#查看防火墙状态serviceiptablesstatus#停止防火墙serviceiptablesstop#启动防火墙serviceiptablesstart#重启防火墙servic......
  • Linux系统安装ComfyUI
    环境:Ubuntu22.04.1LTS+  NVIDIAGeForceRTX3090一、安装显卡驱动 访问NVIDIA官方网站(https://developer.nvidia.com/cuda-downloads)获取对应安装命令https://developer.nvidia.com/cuda-downloads安装完成后执行nvidia-smi检测安装是否成功二、安装Miniconda......
  • 音频应用编程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板
    音频应用编程Linux下ALSA框架概述ALSA简介:ALSA是AdvancedLinuxSoundArchitecture(高级的Linux声音体系)的缩写地位与功能:现已成为Linux下的主流音频体系架构,提供音频和MIDI支持,替代了旧版本中的OSS(开放声音系统)框架设计:ALSA是Linux系统下标准且先进的......
  • RockyLinux安装Docker
    更新系统sudodnfupdate安装 Docker 所需的软件包和依赖项sudodnfinstall-yyum-utilsdevice-mapper-persistent-datalvm2添加Docker官方的YUM仓库#官方sudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo#阿......
  • Linux 利用 ftrace 分析内核调用
    目录一、概述二、ftrace的使用1、常用信息2、指定ftrace跟踪器3、设置要跟踪的函数4、ftrace的开关5、function跟踪程序6、function_graph跟踪程序7、函数过滤器8、跟踪事件三、trace-cmd的使用1、常见命令2、常用选项2.1列出可用的追踪器2.2跟踪特定进程的函......
  • Linux:线程同步之信号量
    信号量(1)What(什么是信号量)提供一种计数器的方式控制对共享资源的访问;当计数器大于0时,请求资源成功并计数器-1;当计数器小于0时,线程阻塞,等待其它线程执行signal(V操作)唤醒它(2)Why(信号量的作用)实现线程的同步与互斥:通过信号量的设计,可以实现对共享资源的串行访问实现线......
  • Python安装教程(含MacOS&&Linux系统)
    Python安装教程Windows用户访问Python官网:WelcometoPython.org 打开下载好的安装包根据提示安装   Pip换源(系统级别)(注:Pip在3.4以上的版本才支持,3.4之前的版本可以在cmd中输入 easy_installpip 下载pip)1.为什么要换源?Python安装......
  • linux中的find命令
    简介find命令是Linux系统中最重要和最常用的命令之一。搜索和查找与参数匹配的文件和目录的命令。查找可以在各种条件下使用,您可以通过权限,用户,组,文件类型,日期,大小等可能的条件查找文件。语法find[起始目录]寻找条件操作说明:find命令从指定的起始目录开始,递归地搜索其各......