zoukankan      html  css  js  c++  java
  • Linux之文件系统结构

    硬盘结构

    硬盘的组成

    相关术语

    • 扇区:硬盘内部是金属盘片 将金属盘片划分多个区域
    • 磁道:以盘片圆心为中心 划分多个同心圆 则每一个划分圆心的线条则称之为磁道
    • 柱面:一块盘片分为两面且两面都可以进行数据存储 当一块硬盘内拥有多个盘片 且两个盘片之间拥有相同的磁道则称之为柱面

    文件系统

    组成

    • 文件名:用来给用户进行查看
    • iNode:存储数据的元信息
    元信息:
    1:文件的字节数
    2:文件创建时间
    3:文件所有者 所属组
    4:时间戳--->ctime:上一次inode改变时间  mtime:上一次文件变动的时间  atime:上一次文件被访问的时间
    5:链接数:有多少文件名指向该inode
    6:block的位置
    

    • block:用来真正存放数据的区域

    inode时间戳详解

    ctime

    • 其不是指文件创建时间
    • 指inode上一次文件属性改变时间 例如:修改文件权限

    mtime

    • 文件被修改的时候文件内容发生改变

    atime

    • 文件被访问的时候内容会发生改变 例如:cat等

    inode大小

    • 由于Inode会存储数据元信息因此也需要区域存放数据
    • 文件系统在进行格式化的时候会自动分成两块区域 一块用来进行存放文件数据一块用来存放inode元数据
    • inode的大小一般为128/256字节 inode的总数在文件系统格式化的时候就给定了

    inode号码

    • 在unix与linux中通过inode用来唯一标识一个文件
    • unix或者linux通过不同的inode号来识别不同的文件
    操作系统打开文件的步骤
    1:首先找到该文件对应的inode号
    2:通过inode号码找到inode号所对应的信息
    3:根据inode的信息找到block块进行数据读取
    

    • 由于Inode号数量是有限的当inode号被用完 即使磁盘有空间依然无法创建文件

    目录文件

    • 在linux中一切皆文件 目录也是文件
    • 在文件目录中主要包含文件名以及文件名所对应的inode号

    inode特殊作用

    • 有时候文件包含特殊符号无法删除 此时可以通过inode节点进行删除
    • 移动或者重命名文件只是改名了文件位置或者名称不影响inode号
    • 系统一般以inode号识别文件 不会考虑文件名
    • 每次修改完文件配置都会导致inode号改变 因此需要重启配置 让文件系统识别inode
    [root@SR ~]# cp -f /etc/passwd b.txt
    [root@SR ~]# ll -i b.txt
    101917959 -rw-r--r--. 1 root root 2501 5月  18 19:02 b.txt
    [root@SR ~]#
    [root@SR ~]# vim b.txt
    [root@SR ~]# ll -i b.txt
    101917972 -rw-r--r--. 1 root root 2509 5月  18 19:03 b.txt
    

    block

    作用

    • 真正用来存放数据的区域
    • block文件系统中最小的存储单位
    • 扇区是磁盘中最小的存储单位
    1:在linux中读取数据的时候其不会一个个扇区读取 效率太低
    2:其会读取连续的扇区 多个连续的扇区称之为一个block块
    3:块常见大小为1K即连续2sector扇区 或者4K
    

    优点

    • 有了block读取数据会更加高效
    • 假入没有block块 深夜下载小电影高清无码的种子需要10G 每次只是下载512K 这样如何正常和老师学习啊

    调优

    • 将block数据调大 节约寻址时间
    • 虽然节约寻址时间 但是浪费空间

    软硬链接

    硬链接

    • 硬链接指通过索引号进行文件链接 inode可以对应多个文件名
    • 一般多个文件名指向一个inode节点被称之为硬链接
    • 只删除一个文件不会影响链接次数 只有当最后一个文件被删除之后链接才会被释放

    硬链接验证

    语法格式: ln 源文件 目标文件
    
    [root@SR ~]# echo 'hello world' > a.txt
    
    [root@SR ~]# ln a.txt  b.txt  # 创建连接
    [root@SR ~]#
    [root@SR ~]# ll a.txt
    -rw-r--r--. 2 root root 12 5月  18 18:27 a.txt
    [root@SR ~]# ll b.txt
    -rw-r--r--. 2 root root 12 5月  18 18:27 b.txt
    
    
    [root@SR ~]# ll -i a.txt
    101917957 -rw-r--r--. 2 root root 12 5月  18 18:27 a.txt
    
    [root@SR ~]# ll -i b.txt
    101917957 -rw-r--r--. 2 root root 12 5月  18 18:27 b.txt  # 和a的节点号相同
    
    
    [root@SR ~]# cat a.txt
    hello world
    [root@SR ~]# cat b.txt
    hello world
    
    
    [root@SR ~]# chmod 777 a.txt
    [root@SR ~]# ll b.txt
    -rwxrwxrwx. 2 root root 12 5月  18 18:27 b.txt
    
    [root@SR ~]# rm -fr a.txt  # 删除源文件不影响硬链接之后的
    [root@SR ~]#
    [root@SR ~]# cat b.txt
    hello world
    
    [root@SR ~]# ll -i b.txt
    101917957 -rwxrwxrwx. 1 root root 12 5月  18 18:27 b.txt
    
    

    硬链接不能针对目录进行创建

    硬链接不能跨分区进行创建


    每个分区拥有自己独立的inode号

    软连接

    • 其有点类似于windows的快捷方式 是一个特殊的文件方式
    • 文件实际上是一个文本文件 包含另外一个文件的位置信息

    软连接验证

    [root@SR ~]# cp -f /etc/passwd b.txt
    [root@SR ~]#
    [root@SR ~]# ln -s b.txt b_link.txt  # 创建软连接
    
    [root@SR ~]# ll b_link.txt
    lrwxrwxrwx. 1 root root 5 5月  18 18:47 b_link.txt -> b.txt
    

    
    [root@SR ~]# rm -fr b.txt  
    
    [root@SR ~]# ll b_link.txt
    lrwxrwxrwx. 1 root root 5 5月  18 18:47 b_link.txt -> b.txt
    

    针对分区或者目录创建硬链接

    [root@SR ~]# ln -s /boot/grub2/ grub_link
    
    [root@SR ~]# ll grub_link/
    

    跨分区创建目录(源文件必须写绝对路径)

    [root@SR ~]# cd /boot
    [root@SR boot]# ln -s ./grub /root/aaa
    [root@SR boot]# ll /root/aaa
    lrwxrwxrwx. 1 root root 6 5月  18 18:56 /root/aaa -> ./grub
    

  • 相关阅读:
    MySQL客户端mysqladmin命令
    13 Linux磁盘管理
    12 Linux软件管理
    11 Linux压缩打包
    09 Linux输入输出
    08 LinuxACL控制
    07 Linux特殊权限
    06 Linux基本权限
    05 Linux用户管理
    04 Linux文件编辑
  • 原文地址:https://www.cnblogs.com/SR-Program/p/12908604.html
Copyright © 2011-2022 走看看