一步一步学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 或者 ext4fdisk -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操作系统(极客时间)链接:
欢迎大家来一起交流学习转载地址:https://blog.csdn.net/leacock1991/article/details/107738660 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月14日 20时45分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
不要太在意
2019-04-30
给母亲的信
2019-04-30
jquery手风琴
2019-04-30
sql server 取文件名函数 转载
2019-04-30
jquery获取ul中的第一个li
2019-04-30
js获取页面url
2019-04-30
jquery.each()
2019-04-30
Bootstrap实现弹出框和提示框效果代码
2019-04-30
HttpContext.Current.Request.ServerVariables
2019-04-30
看轻看淡多少,痛苦就离开你多少。
2019-04-30
老司机出招: 程序员如何写简历和面试?
2019-04-30
给当前页或者跳转后页面的导航栏添加选中样式
2019-04-30
datatables .fnDraw is not a function
2019-04-30
react学习
2019-04-30
微服务在微信后台的架构实践
2019-04-30
正则表达式验证手机号 身份证号 银行卡号 姓名输入
2019-04-30
C#-java RSA加密解密
2019-04-30
bootstrap手风琴效果
2019-04-30
sql生成随机字符串
2019-04-30
天下大事必作于细,天下难事必作于易
2019-04-30