zoukankan      html  css  js  c++  java
  • Linux文件系统概述

    Unix文件是以字节序列组成的信息载体(container),内核不解释文件的内容。

    Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有系统的结构,所有Linux用户和程序看到的文件、目录、软链接及文件保护信息等都存储在其中。

    Linux最早的文件系统是Minux,但是专门为Linux设计的文件系统---扩展文件系统第二版(EXT2)被设计 出来并添加到Linux中,这对Linux产生了重大影响。

    Linux常用的文件系统

    • ext2:ext2的升级版本ext3是Linux默认的文件系统

    • swap:作为交换分区来使用,在安装Linux系统时必须要建立

    • vfat:兼容Windows操作系统,主要是FAT16、FAT32

    • NFS:网络文件系统,是Linux的独到之处,方便在局域网中实现文件的共享,可以实现多台主机共享一台主机的文件系统

    硬链接和软链接

    命令格式:

    $ ln P1 P2

    用来创建一个新的硬链接,即为由路径P1标识的文件创建一个路径名为P2的硬链接。

    硬链接有两方面的限制

    • 不允许用户给目录创建硬链接。因为这可能把目录树变成环形树,从而就不可能通过名字定位一个文件。

    • 只有在同一文件系统中的文件之间才能创建链接。这带来比较大的限制,因为现代Unix系统中可能包含多种文件系统,这些文件系统位于不同的磁盘和/或分区,用户也无法知道它们之间的物理划分。

    软链接(soft link)[也称符号链接(symbolic link)]

    符号链接是短文件,这些文件包含有另一个文件的任意一个路径名。路径名可以指向位于任意一个文件系统的任意文件或目录,甚至可以指向一个不存在的文件。

    命令格式:

    $ ln -s P1 P2

    创建一个路径名为P2的新软链接,P2指向路径名P1。

    Linux目录结构

    Linux的文件系统采用阶层式的树状目录结构,在该结构中的最上层是根目录“/”,然后再根目录下再建立其它的目录。

    文件或目录名由除“/”和空字符“”之外的任意ASCII字符序列组成(一些操作系统允许以多种自负表示文件名,例如:Unicode)。大多数文件系统对文件名的长度都有限制,通常不能超过255个字符。

    Linux中无论操作系统管理几个磁盘分区,这样的目录树只有一个。从结构上讲,个磁盘分区上的树型目录不一定是并列的。

    常用目录的作用

    • / 根目录

    • /bin 命令保存目录(普通用户就可以读取的命令)

    • /boot 启动目录,启动相关文件

    • /dev 设备文件保存目录

    • /etc 配置文件保存目录

    • /home 普通用户的家目录

    • /lib 系统库保存目录

    • /mnt 系统挂载目录

    • /media 挂载目录

    • /root 超级用户的家目录

    • /tmp 临时目录

    • /sbin 命令保存目录(超级用户才能使用的目录)

    • /proc 直接写入内存的

    • /sys

    • /usr 系统软件资源目录

      /usr/bin 系统命令(普通用户)
      /usr/sbin 系统命令(超级用户)
      /usr/include:标准头文件
      /usr/src:内核源代码
    • /var 系统相关文档内容

    根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的。

    proc和sys目录不能直接操作,这两个目录保存的是内存的过载点。

    Linux文件类型

    • 普通文件:通常是流式文件。

      [root@AmorLei tmp]# ls -lh yan.test
      -rw-r--r-- 1 root root 13 Sep 22 15:05 yan.test
    • 目录文件:用于表示和管理系统中的全部文件

      [root@AmorLei tmp]# ls -lh
      drwxr-xr-x 2 root root 4.0K Sep 26 12:20 yanlei
    • 链接文件:用于不同目录下的文件的共享

      [root@AmorLei tmp]# ls -lh yan.softlink
      lrwxrwxrwx 1 root root 8 Sep 26 12:26 yan.softlink -> yan.test
    • 设备文件:包括块设备文件和字符设备文件

      b代表区块(block)设备,c代表字符(character)设备

      [root@AmorLei /]# ls -la /dev/tty
      crw-rw-rw- 1 root tty 5, 0 Sep 15 20:35 /dev/tty
    • 管道(pipe,FIFO)文件:提供进程间通信的一种方式


    • 套接字(socket)文件:该文件类型与网络通信有关

      [root@AmorLei /]# ls -lh /var/lib/mysql/mysql.sock
      srwxrwxrwx 1 mysql mysql 0 Sep 26 12:20 /var/lib/mysql/mysql.sock

    文件描述符与索引节点

    Unix对文件的内容和描述文件的信息给出了清楚的区分。除了设备文件和特殊文件系统文件外,每个文件都由字符序列组成。

    文件系统处理文件需要的所有信息包含在一个名为索引节点(inode)的数据结构中。每个文件都有自己的索引节点,文件系统用索引节点来标识文件。

    文件系统至少提供POSIX标准中指定的如下属性:

    • 文件类型

    • 与文件相关的硬链接个数

    • 以字节为单位的文件长度

    • 设备标识符

    • 在文件系统中表示文件的索引节点号

    • 文件拥有者的UID

    • 文件的用户组ID

    • 几个时间戳,表示索引节点状态的改变的时间、最后访问时间即最后修改时间

    • 访问权限和文件模式

    访问权限和文件模式

    文件的潜在用户分为三种类型

    • 作为文件所有者的用户

    • 同组用户,不包括所有者

    • 所有剩下的用户(其他)

    有三种类型的访问权限---读、写、执行,每组用户都有这三种权限。

    分区

    在Windows操作系统中,是先将物理地址分开,再在分区上建立目录。在Windows操作系统中,所有路径都是从盘符开始,如C:Program file。

    Linux正好相反,是先有目录,再将物理地址映射到目录中。在Linux操作系统中,所有路径都是从根目录开始。Linux默认分为3个分区,分别是boot分区、swap分区和根分区。

    挂载

    Linux下的分区需要挂载到目录后才能使用,挂载的意义就是把磁盘分区的内容放在某个目录下。这个把目录和分区对应的过程叫做挂载(Mount)而这个挂载在文件树中的位置就是挂载点。

    当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,将物理分区细节屏蔽掉,用户只有统一的逻辑概念,所有的东西都是文件。

    参考资料:

        深入理解Linux内核                Daniel P.Bovet & Marco Cesati

    回到顶部

  • 相关阅读:
    大话设计模式系列目录
    C#中三层架构UI、BLL、DAL、Model实际操作
    设计模式之六大原则(单一职责 开闭 里氏替换,依赖倒置 接口隔离 迪米特)
    UML类图的各种关系(继承、实现、依赖、关联、组合、聚合)
    C#即时窗口输出方法
    asp.net处理get,post数据
    C#同步调用异步方法
    Linux解压时报tar: node-v0.10.26-linux-x86/bin/npm: Cannot create symlink to `../lib/node_modules/npm/bin/npm-cli.js': Protocol error
    Ruby中require,load,include,extend的区别
    rspec入门
  • 原文地址:https://www.cnblogs.com/yan-lei/p/7601056.html
Copyright © 2011-2022 走看看