一步一步学linux操作系统: 24 文件系统_简要介绍
发布日期:2021-06-29 17:13:54 浏览次数:2 分类:技术文章

本文共 2241 字,大约阅读时间需要 7 分钟。

文件系统的功能规划

  • 1、文件系统要有严格的组织形式,能够以块为单位进行存储
  • 2、文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。
  • 3、文件系统应该有缓存层,用于存放文件系统中的热点文件,近期经常被读取和写入。
  • 4、文件用文件夹的形式组织起来,方便管理和查询。
  • 5、Linux 内核要在内存里面维护一套数据结构,来保存哪些文件被哪些进程打开和使用。

文件系统相关命令行

格式化

将一块盘使用命令组织成一定格式的文件系统的过程

Windows,常格式化的格式为 NTFS(New Technology File System)。
Linux,常用的是 ext3 或者 ext4

fdisk -l 查看分区

在这里插入图片描述

mkfs.ext3/mkfs.ext4 /dev/… 进行格式化

多个分区

fdisk /dev/… 打开交互式程序

  • p 打印分区
  • n 新建分区: p primary 建立主分区; e extended 建立扩展分区;
  • 设置大小;
  • w 执行分区修改

再执行 mkfs.ext* 进行格式化

挂载与卸载

挂载分区到某个目录, 才能正常访问

mount /dev/… /目录

例子:

mount /dev/vdc1 /根目录/用户A目录/目录1

这个命令将这个文件系统挂载到“/ 根目录 / 用户 A 目录 / 目录 1”这个目录下面。一旦挂载过去,“/ 根目录 / 用户 A 目录 / 目录 1”这个目录下面原来的文件 1 和文件 2 就都看不到了,换成了 vdc1 这个硬盘里面的文件系统的根目录。

卸载使用 umount 命令

umount /根目录/用户A目录/目录1

文件类型查看

ls -l 的结果的第一位标识位查看

  • - 表示普通文件
  • d 表示文件夹
  • c 表示字符设备文件
  • b 表示块设备文件
  • s 表示套接字 socket 文件
  • l 表示符号链接,也即软链接,就是通过名字指向另外一个文件

在这里插入图片描述

文件系统相关系统调用

fd 文件描述符,用来区分一个进程打开的多个文件的。它的作用域就是当前进程,出了当前进程这个文件描述符就没有意义了

  • open 打开一个文件, 返回文件描述符 fd; 参数 O_CREAT 不存在就创建, O_RDWR 以读写方式打开, O_TRUNC 文件长度截断为 0; 返回成功写入字节数
  • write 写数据, 参数 fd, 数据位置, 写入字节数; 返回成功写入字节数
  • lseek 重新定位读写位置, 参数 fd, 位置, SEEK_SET
  • read 读数据, 参数 fd, 存放位置, 读取字节数; 返回成功读取字节数
  • close 关闭文件
  • stat/lstat 通过文件名获取文件信息,这两个方法区别在于,stat 没有处理符号链接(软链接)的能力; fstat 通过 fd 获取文件信息。这个信息将会写到类型为 struct stat 的 buf 结构中。
int stat(const char *pathname, struct stat *statbuf);int fstat(int fd, struct stat *statbuf);int lstat(const char *pathname, struct stat *statbuf);struct stat {
dev_t st_dev; /* ID of device containing file */ ino_t st_ino; /* Inode number */ mode_t st_mode; /* File type and mode */ nlink_t st_nlink; /* Number of hard links */ uid_t st_uid; /* User ID of owner */ gid_t st_gid; /* Group ID of owner */ dev_t st_rdev; /* Device ID (if special file) */ off_t st_size; /* Total size, in bytes */ blksize_t st_blksize; /* Block size for filesystem I/O */ blkcnt_t st_blocks; /* Number of 512B blocks allocated */ struct timespec st_atim; /* Time of last access */ struct timespec st_mtim; /* Time of last modification */ struct timespec st_ctim; /* Time of last status change */};
  • opendir 打开一个目录, 生成一个目录流 DIR
  • readdir 读取目录流的一个条目, 自动指向下一个条目
  • closedir 关闭目录流

总结

图片来自极客时间趣谈linux操作系统

图片来自极客时间趣谈linux操作系统

参考资料:

趣谈Linux操作系统(极客时间)链接:

欢迎大家来一起交流学习

转载地址:https://blog.csdn.net/leacock1991/article/details/107738660 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:《MySQL必知必会》学习笔记 目录
下一篇:一步一步学linux操作系统 目录

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月14日 20时45分11秒