zoukankan      html  css  js  c++  java
  • Linux 磁盘与文件系统管理

    文件系统组成:
      superblock:记录次filesystem的整体信息,包括inode/block的总量,使用量,剩余量等
      inode:记录文件的属性,一个文件占用一个inode,同时记录次文件的数据所在的block号码
      block:实际记录文件的内容,若文件太大,会占用多个block

    磁盘重组:文件写入的block太过于离散,此时文件读取的性能会下降

    MBR:磁盘最前面的512个字节的特殊分区,不属于磁盘上的任何分区,因此分区空间内的格式化命令不能清除主引导分区
      只能通过重新格式化磁盘或者特殊的工具


    Linux的Ext2文件系统:
      在格式化的时候区分为多个区块群组(block group)的,每个区块群组都有独立的inode/block/superblock
      文件系统最前面有一个开机扇区(boot sector),可以安装开机管理程序,而不用覆盖整颗磁盘唯一的MBR

    data block(数据块)
      在ext2文件系统中支持的block大小有1k,2k及4k
        block大小 1KB 2KB 4KB
        最大单一文件 16GB 256GB 2TB
        最大文件系统总容量 2T 8T 16T

    inode table
      记录的数据:
      该文件的存取模式(read/write/excute)
      该文件的拥有者与群组(owner/group)
      该文件的容量
      该文件创建或状态改变的时间(ctime)
      最近一次访问时间(atime)
      最近修改时间(mtime)
      定义文件特性的旗标(SUID,,,,)
      该文件真正内容的指向

      12个直接指向: 12*1K=12K
      间接指向: 256*1K=256K
      每笔block号码的记录花去4Bytes,因此1K的大小能记录256笔记录
      双间接:256*256*1K
      三间接:256*256*256*1K

      总额:12+256_256*256+256*256*256(K) = 16GB
      (算法不适合2K及4K的block大小,会收到Ext2文件系统本身的限制)

    superblock:
      记录信息
      block与inode的总量
      未使用与已使用的inode/block数量
      block与inode的大小
      filesystem的挂载时间,最近一次写入数据时间,最后一次磁盘检查时间等
      一个valid bit数值,已被挂载为0,未被挂载为1



    文件系统常用操作:

    df:列出文件系统的整体磁盘使用量
        -h:以容易读的方式展示
        -i:不用磁盘容量,以inode的数量来显示
    du:文件或者目录名称
        -s:列出总量
        -h:以容易读的方式展示
    ln:符号链接
        -s: 如果不加任何参数表示-s,为软连接
        -P: 硬连接
        -f: 如果存在,询问是否覆盖
      ln -s /etc/passwd /tmp/a 前面实体,后面新链接


    磁盘的分区,格式化,检验与挂载

    lsblk:列出所有存储设备
        -i:使用ASCII的线路输出,不要使用复杂的编码
        -p:列出该设备的完整文件名!
    blkid:列出设备的UUID等参数
    
    parted:列出磁盘的分区表类型与分区信息
        parted /dev/sda print
    fdisk:查看分区
    
    mkfs:格式化分区
    
    fsck:磁盘检验
    mount:磁盘挂载
        -a:依照配置文件把所有未挂载的磁盘都挂载上来
        -l:仅输出目前挂载信息
        -t:文件系统种类
        -o:在挂载时额外增加参数
            remote: 重新挂载
            .....        
    umount:
        -f:强制卸载
        -l:立刻卸载
        -n:不更新/etc/mtab情况下卸载

    开机挂载:
      /etc/fstab
      /etc/mtab


    交换分区:swap
      

        mkswap /dev/sda8 创建swap格式
        swapon /dev/sda8 加入swap分区
    
        使用文件创建swap:
            dd if=/dev/zero of=/tmp/swap bs=1M count=128
            mkswap /tmp/swap
            swapon /tmp/swap
    
        swapoff /tmp/swap 关闭该swap文件
    
        设置开机挂载的方式加入swap 
        /tmp/swap swap swap defaults 0 0 
            



  • 相关阅读:
    .net core读取appsettings.config中文乱码问题
    vs2017错误:当前页面的脚本发生错误
    VS Code中无法识别npm命令
    Visual Studio报错/plugin.vs.js,行:1074,错误:缺少标识符、字符串或数字
    记录一次在生成数据库服务器上出现The timeout period elapsed prior to completion of the operation or the server is not responding.和Exception has been thrown by the target of an invocation的解决办法
    Java集合框架
    java hash表
    Java Dictionary 类存储键值
    java数据结构 栈stack
    java封装
  • 原文地址:https://www.cnblogs.com/djoker/p/9390869.html
Copyright © 2011-2022 走看看