• Linux系统配置及服务管理-07-文件系统及RAID


    文件系统详解

    EXT4文件系统

    EXT4是第四代扩展文件系统(Fourth extended filesystem)

    类型:索引(index ) 文件系统

    系统限制:

    • Ext3: 文件系统最大16TB
    • Ext4: 文件系统最大16TB
    • XFS : 文件系统最大100TB.

    名词

    inode
    • inode:索引节点

    • 记录文件的属性(文件的元数据metadata)

    • 元数据:如文件的属性,大小,权限,属主,属组,连接数,块数量,块的编号

    • 一个文件占用一个inode,同时记录此文件数据所在的block numbber

    • inode大小 为 128 bytes

    block
    • 存储文件的实际数据
    • 实际存储文件的内容,若文件较大,会占用多个block
    • block大小 为默认为4K
    superblock
    • 1 block 与 inode 的总量
    • 2 未使用与已使用的 inode / block 数量
    block group

    块组

    示例1:inode(index node 索引节点)

    创造一个文件,观察inode信息。
    ll -i 文件名
    在这里插入图片描述
    stat 文件名

    示例2:block(块 文件内容)

    新分区中,文件的数量和inode节点数有关系

    • 1 观察某个分区中的inode节点数
      df -i
      在这里插入图片描述

    • 2 创建一个文件
      touch xx.txt

    • 3 再次观察inode节点数
      df -i
      在这里插入图片描述
      可以看到IUsed增加了1,即inode数使用增加1个

    • 4 创造大量文件。观察inode使用情况
      进入上图中的/dev/sdb5的目录/mnt/user/0
      touch file{1..30000}
      最后报错touch: cannot touch ‘file30000’: No space left on device
      在这里插入图片描述
      在这里插入图片描述
      实际空间占用情况

    可以看到该分区的inode已经全被占用,因此无法在该分区新建文件了,但是实际空间只用了2.2M,此时如果向创建的文件中写数据,是可以写进去的,这是因为block决定了文件存储的空间

    实际工作中,如果某个磁盘分区无法新建文件,提示No space,但是通过df -hT看到磁盘空间还很多时,要考虑是不是inode用尽了

    结论:inode决定了文件系统中文件的数量,block决定了文件存储的空间
    当分区空间大小消耗完毕,也无法创建新的文件

    • 5 写满磁盘分区,然后测试新建文件
      rm -rf /mnt/disk5 删掉刚才新建的文件
      向目标分区写入大量数据,填满
      dd if=/dev/zero of=/mnt/disk5/1.txt bs=1k count=10000000
      在这里插入图片描述
      查看目标分区容量,已满
      df -hT

      创造新文件失败

    得出结论,磁盘空间的限制根据inode和block两方面

    XFS一种高性能的日志文件系统

    文件链接

    一、符号链接/软连接

    symbolic link 软链接

    示例

    • 1 创建一个文件,并输入内容

    [root@localhost ~]# echo 111 > /file1

    • 2 创建一个软链接

    ln -s /file1 /home/file11
    -s 软链接

    • 3 观察软链接

    ll /home/file11
    lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1

    • 4 观察软链接文件

    ll /file1 /home/file11

    -rw-r--r-- 1 root root 4 Dec 20 17:57 /file1
    lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1
    
    • 1
    • 2
    • 5 查看两个文件,内容一致。
    [root@localhost ~]# cat /file1 
    111
     [root@localhost ~]# cat /home/file11 
    111
    
    • 1
    • 2
    • 3
    • 4
    • 6 删除源文件,软链接闪烁,不可用。
    [root@localhost ~]# rm -rf /file1 
    [root@localhost ~]# ll /home/file11 
    lrwxrwxrwx 1 root root 6 Dec 20 17:58 /home/file11 -> /file1
    
    • 1
    • 2
    • 3

    总结

    • 软链接像快捷方式,可以对文件和目录做软链接
    • 软链接记录的只是源文件的路径
    • 源文件删除或移动位置后,软链接失效

    二、硬链接

    • 1 创建同分区硬链接成功,创建不同分区硬链接失败。
    [root@localhost ~]# echo 222 > /file2
    [root@localhost ~]# ln /file2 /file2-h1
    [root@localhost ~]# ln /file2 /home/file2-h2	
    //将文件以硬链接方式,发送到其他分区。结果是错误
    ln: failed to create hard link ‘/home/file2-h2’ => ‘/file2’: Invalid cross-device link
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 2 硬链接删除源文件,依然可以用
    [root@localhost ~]#rm -rf /file2
    [root@localhost ~]#cat  /file2-h1
    222
    
    • 1
    • 2
    • 3
    • 3 不允许将硬链接指向目录
    [root@qianfeng home]# ln /home/ /mnt
    ln: “/home/”: 不允许将硬链接指向目录
    
    • 1
    • 2
    • 4 硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件
      在这里插入图片描述
      inode二者相同,不会占用inode数量,但是软链接是会占用的

    • 总结
      - 硬链接只能针对文件做。不能对目录做。
      - 硬链接只能在同分区做。

    RAID

    RAID:廉价磁盘冗余阵列(Redundant Array of Independent Disks)
    作 用:容错、提升读写速率

    类型

    RAID0

    RAID0 条带集 2块磁盘以上, 读写速率快 100%*N,但不容错
    在这里插入图片描述

    RAID1

    在这里插入图片描述
    RAID1 镜像卷, 2块磁盘, 容量50% ,读写速率一般,核心特点:备份容错
    两块磁盘假设1T容器,只能用500G。

    RAID5

    在这里插入图片描述
    RAID5 带奇偶校验条带集 3块磁盘以上
    利用率 (n-1)/n 读写速率快,容错

    一、不同场景RAID的使用

    硬RAID: 需要RAID卡,有自己的CPU,处理速度快,有电池和无电池。
    在这里插入图片描述

    软RAID: 通过操作系统实现,比如Windows、Linux

    二、软RAID示例

    • 1 准备4块1G的硬盘
      ll /dev/sd*

    在这里插入图片描述
    RAID5 :(3块数据盘) + (1块热备硬盘)

    • 2 创建RAID
    yum install -y mdadm
    mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{b,c,d,e}
    
    • 1
    • 2

    参数说明:
    -C:创建RAID
    /dev/md0: 第一个RAID设备
    -l5: RAID5
    -n: RAID成员的数量
    -x: 热备磁盘的数量

    • 3.格式化,挂载
    mkfs.ext4 /dev/md0
    mkdir /mnt/raid5
    mount /dev/md0 /mnt/raid5
    cp -rf /etc /mnt/raid5/etc1
    
    • 1
    • 2
    • 3
    • 4
    • 4.查看RAID信息

    mdadm -D /dev/md0 -D 查看详细信息
    在这里插入图片描述

    • 5 模拟一块硬盘损坏,并移除
      终端一:
      watch -n 0.5 'mdadm -D /dev/md0 | tail' #watch持续查看
      终端二:
      mdadm /dev/md0 -f /dev/sdb -r /dev/sdb
      模拟坏了并移除
      -f --fail
      -r --remove
      移除之前
      在这里插入图片描述
      移除之后
      在这里插入图片描述
  • 相关阅读:
    【C++ Primer Plus学习记录】指针——使用new来创建动态数组
    Packet Tracer - 使用 Traceroute 发现网络
    会话技术!
    我的Go gRPC之旅、01 初识gRPC,感受gRPC的强大魅力
    Spring HandlerInterceptor工作机制
    线性代数的本质(八)——内积空间
    system verilog 句柄 ref参数传递 C语言指针
    校园广播站人员和节目管理系统
    JavaScript 日期和时间的格式化
    数字化营销如何推动企业营收增长?数字化营销要点有哪些?
  • 原文地址:https://blog.csdn.net/HYESC/article/details/128054877