zoukankan      html  css  js  c++  java
  • 文件存储结构(FHS标准)物理设备命名规则(udev)和文件系统

    文件存储结构(FHS标准)
       在Linux系统中,目录、字符设备、块设备、套接字、打印机等都被抽象成了文件,即“Linux系统中一切都是文件”。既然平时我们打交道的都是文件,那么又应该如何找到它们呢?在Windows操作系统中,想要找到一个文件,我们要依次进入该文件所在的磁盘分区(假设这里是D盘),然后在进入该分区下的具体目录,最终找到这个文件。但是在Linux系统中并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从“根(/)”目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。另外,Linux系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT均代表不同的目录,并且文件名称中不得包含斜杠(/)。
       Linux系统中的文件存储结构如图所示。
       FHS定义了用户应该把什么类型的文件文件存放到什么位置,但用户不一定要遵守,这里只是定义而非gun定。
     Linux系统中常见的目录名称以及相应内容
      目录名称           应放置文件的内容
      /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      当文件系统发生错误时,将些丢失的文件片段存放在这里
    物理设备命名规则(udev)
       在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。
     Linux系统中常见的硬件设备的文件名称如表所示。
      硬件设备         文件名称
      IDE设备         /dev/hd[a-d]
      SCSI/SATA/U盘     /dev/sd[a-p]
      软驱                /dev/fd[0-1]
      打印机          /dev/lp[0-15]
      光驱           /dev/cdrom
      鼠标           /dev/mouse
      磁带机          /dev/st0或/dev/hto
     
       由于现在的IDE设备已经很少见了,所以一般的硬盘设备都会是以“/dev/sd”开头的。而一台主机上可以有多块硬盘,因此系统采用a~p来代表16块不同的硬盘(默认从a开始分配,如果超过26个硬盘,那么前26个命名sd[a-z],第27-52个命名为sd[aa-az],第53-78个命名为sd[ba-bz],依此类推)而且硬盘的分区编号也很有讲究:
       主分区或扩展分区的编号从1开始,到4结束;
       逻辑分区从编号5开始。
    注意两点
       存储设备的名称从a开始按序命名,是由系统内核的识别顺序决定的,与设备在第几个插槽无关。
       分区编号并不代表分区个数,分区的数字编码不一定是强制顺延下来的,也有可能是手工指定的。
    硬盘命名规则
       正是因为计算机有了硬盘设备,我们才可以在玩游戏的过程中或游戏通关之后随时存档,而不用每次重头开始。硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用446字节,分区表为64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。第一个扇区中的数据信息如图所示。

    常见的文件系统
        **Ext3:**是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。
        **Ext4:**Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。
        **XFS:**是一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需求。
          inode存放文件的权限与属性记录,每个文件占用一个独立的inode表格,该表格的大小默认为128字节,里面记录着如下信息:
           该文件的访问权限(read、write、execute);
           该文件的所有者与所属组(owner、group);
           该文件的大小(size);
           该文件的创建或内容修改时间(ctime);
           该文件的最后一次访问时间(atime);
           该文件的修改时间(mtime);
           文件的特殊权限(SUID、SGID、SBIT);
           该文件的真实数据地址(point)。
           block存放文件的实际内容(大小可以为1KB、2KB、4KB)。
           文件很小(1KB),但依然会占用一个block,因此会潜在地浪费3KB。
           文件很大(5KB),那么会占用两个block(5KB-4KB后剩下的1KB也要占用一个block)。
    VFS虚拟文件系统:
     各式各样的文件系统在VFS下隐藏各自的特性和细节,用户在操作文件时就是统一对VFS进行操作,用户无需关心底层的硬盘结构。
     
  • 相关阅读:
    c:forTokens标签循环输出
    jsp转long类型为date,并且格式化
    spring中@Param和mybatis中@Param使用区别(暂时还没接触)
    734. Sentence Similarity 有字典数组的相似句子
    246. Strobogrammatic Number 上下对称的数字
    720. Longest Word in Dictionary 能连续拼接出来的最长单词
    599. Minimum Index Sum of Two Lists两个餐厅列表的索引和最小
    594. Longest Harmonious Subsequence强制差距为1的最长连续
    645. Set Mismatch挑出不匹配的元素和应该真正存在的元素
    409. Longest Palindrome 最长对称串
  • 原文地址:https://www.cnblogs.com/shrdbk/p/11637722.html
Copyright © 2011-2022 走看看