飞道的博客

Linux之文件系统原理基础

297人阅读  评论(0)


这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/105881102


写在开头的话

  • 请记住:实践是掌握知识的最快方法
  • 如果你只是怀着看看的态度去快速浏览文章,而不去认认真真的把文章里面讲的任何一个知识点去实践一遍,那么你永远也掌握不了它
  • 生命不息,折腾不止!

文件挂载的配置文件:/etc/fstab

  • btrfs支持子卷
  • 关于/etc/fstab配置文件说明:
    • 每行定义一个要挂载的文件系统
[root@dayuanshuai ~]#  cat /etc/fstab 
******
UUID=7babbd31-9dc4-48a4-a532-9c3c5239d36e /                       ext4    defaults        1 1
UUID=30e019c7-7ec2-4c1d-8b3c-9da72c98f26b /boot                   ext4    defaults        1 2
UUID=7355d0bf-07d8-4fa1-99e7-9a0f6a96b513 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
  • 对于文件里每一列的说明:
  1. 第一个字段:要挂载的设备或伪文件系统
  2. 第二个字段:挂载点
  3. 第三个字段:文件系统类型
  4. 第四个字段:挂载选项
  5. 第五个字段:转储频率
  6. 第六个字段:自检次序
  • 要挂载的设备或伪文件系统:(可以设置的选项)
    • 设备文件
    • LABEL(LABEL="")
    • UUID(UUID="")
    • 伪文件系统名称(proc, sysfs)
  • 挂载点:
    • 设置要挂载到那个目录下
  • 文件系统类型
    • ext{2 | 3 | 4},xfs,btrfs,swap
  • 挂载选项:
    • defaults
    • r、rw、sysnc、acl
  • 转储频率:
    • 0:不做备份
    • 1:每天转储
    • 2:每隔一天转储
  • 自检次序:
    • 0:不自检
    • 1:首先自检,一般只有rootfs才用1
    • 2:1自检完之后自检

对于最后两个选项:最好选择0(不做备份),0(不自检)

# 查看磁盘类型
[root@dayuanshuai /]# blkid /dev/sdb1
/dev/sdb1: LABEL="DATA" UUID="fba67c37-6eeb-4008-8d74-46ebc0fccf02" TYPE="ext4" 

#  编辑/etc/fstab,在其中加入如下字段
[root@dayuanshuai /]# vim /etc/fstab
指定UUID							    指定挂载点 指定文件系统类型 指定挂载    是否转储 是否自检
UUID=fba67c37-6eeb-4008-8d74-46ebc0fccf02 /data ext4    defaults,acl    0 0

# 从/etc/fastab中读取内容,并且自动挂载
[root@dayuanshuai /]# mount -a
  • swap分区通过swapon激活,而不是挂载。在/etc/fstab中它这一行定义的参数是:(它的挂载点填的就是swap)
UUID=7355d0bf-07d8-4fa1-99e7-9a0f6a96b513 swap                    swap    defaults        0 0

文件系统上的其它概概念

  • 超级块描述整个文件系统的信息,如:

    • inode count
    • block count
    • free blocks
    • free inodes
  • inode:索引节点

    • inode存储整个文件的元数据:属性信息、文件的数据储存在那些block上
    • 地址指针
      • 直接指针
      • 间接指针
      • 三级指针
  • inode bitmap:对位标识每个inode空闲与否的状态信息

  • 删除文件:就是将文件的引用从”1“改为”0“

  • 文件粉碎机的作用就是将文件存储数据的地方存入一些无关紧要的随机数据,然后把文件的引用从”1“改为“0”

  • 链接文件:

    • 硬链接:ln source destination
      • 不能够对目录进行
      • 不能跨分区进行
      • 指向同一个inode的多个不同路径;创建文件的硬链接即为为inode创建新的引用路径,因此会增加其引用计数
    • 符号链接:ln -s source destination
      • 可以对目录进行
      • 可以跨分区
      • 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
  • ln [sv] SRC DEST

    • -s:symbolic link(符号链接)
    • -v:verbose(显示详细信息)
[root@dayuanshuai disk2]# touch b.txt 

# 创建硬链接
[root@dayuanshuai disk2]# ln b.txt b.txt.hl

# 可以看到硬链接inode和原文件inode是一样的
[root@dayuanshuai disk2]# ls -li
总用量 0
130923 -rw-r--r--. 2 root root 0 4月  27 05:50 b.txt
130923 -rw-r--r--. 2 root root 0 4月  27 05:50 b.txt.hl

# 创建软连接
[root@dayuanshuai disk2]# ln -s b.txt b.txt.sl 

# 可以看到链接文件和原文件的inode是不一样的,软链接文件的大小,就是所指向的原文件的路径所占的字符大小
[root@dayuanshuai disk2]# ls -li
总用量 0
130923 -rw-r--r--. 2 root root 0 4月  27 05:50 b.txt
130923 -rw-r--r--. 2 root root 0 4月  27 05:50 b.txt.hl
130928 lrwxrwxrwx. 1 root root 5 4月  27 05:53 b.txt.sl -> b.txt
  • 文件管理操作对文件的影响
    • 文件删除
      • 删除superblock在该文件上的应用,删除groupblock对文件的应用,将文件占据的block标记置为“0”,将inode标记释放
    • 文件复制
      • 需要重新读入文件数据再进行写入
    • 文件移动
      • 同一分区下文件移动:只用修改对于文件路径的引用
      • 不同分区下文件移动:需要重新读入数据,然后引用

练习

  • 创建一个20G的文件系统,块大小为2048,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testing目录,且默认有acl挂载选项
  1. 创建20G分区
  2. 格式化:

mke2fs -t ext4 -b 2048 -L 'TEST' /dev/DEVICE

  1. 编辑/etc/fstab文件

LABEL='TEST' /testing ext4 defaults,acl 0 0

  • 写一个脚本,完成如下功能:
  1. 列出当前系统识别到的所有磁盘设备
  2. 如磁盘数量为1,则显示其空间使用信息;否则,则显示最后一个磁盘上的空间使用信息
if [ $disks -eq 1 ]; then 
		fdisk -l /dev/[hs]da
else
fdisk -l $(fdisk -l /dev/[sh]d[a-z] | grep -o "^Disk /dev/[sh]d[a-]" | tail -1 | cut -d' ' -f2)
fi

写在最后的话:

  • 无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致
  • 欢迎关注我的CSDN博客,IDYS’BLOG
  • 持续更新内容
    linux基础 | 数据通信(路由交换,WLAN) | Python基础 | 云计算
  • 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!
  • 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!


转载:https://blog.csdn.net/weixin_41633902/article/details/105881102
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场