• 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 
            



  • 相关阅读:
    MySQL之架构与历史(二)
    MySQL之架构与历史(一)
    MySQL之体系结构与存储实例
    Redis实现之复制(二)
    Redis实现之复制(一)
    选项卡
    滑动效果
    选择器
    下拉列表
    1.__tostring()这个方法在类里可以直接输出对象。2.克隆对象的运用
  • 原文地址:https://www.cnblogs.com/djoker/p/9390869.html
Copyright © 2020-2023  润新知