一步一步学linux操作系统: 24 文件系统_简要介绍

文件系统的功能规划

  • 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操作系统(极客时间)链接:
http://gk.link/a/10iXZ
欢迎大家来一起交流学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值