一切即文件 “给不同的问题提供相同的解决方式”
在linux中所有的设备都被当做一个文件来处理,包括我们的IO设备也是一样的,一般来说,他们被放在/dev这个目录下
eg: IDE硬盘 /dev/hd[a-p] (a-p是它的编号)
磁盘分区表
a.主引导分区MBR:安装引导加载程序,共446bytes
b. 分区表:记录整块硬盘分区的状态,共64bytes
分区表位于第一扇区的MBR里,记录了每个分区的范围,我们所说的分区其实是在对分区表做设置
**分区表默认会写入四组分区
BIOS:开机执行的第一个程序
CMOS:记录硬盘各项参数,嵌入在主板的存储器
开机流程:BIOS根据用户设置取得能开机的硬盘->读取第一扇区MBR->MBR中的引导加载程序来加载内核文件->内核文件工作
[TAB] 补全命令
[CTRL]+c 停止当前正在运行的程序
[CTRL]+d 直接离开文字界面,相当于exit
使用man命令查询某个命令的参数是我们会看见被查询的命令含有一个编号例如:man date 就会看见 DATE(1)
编号代表的意思与该文件用途有关如下表:
try:man null
试试上面的命令,我们会发现NULL(4),对照上面的意思看看它是什么意思
正确的关机方法:因为Linux可以多用户工作,所以我们在关机前务必查看谁在线(使用who命令),
不要暴力关机不要破坏别人的数据
关机之前要通知在线用户 可以使用shutdown和erboot命令~
在系统重启活或者关机之前多使用几次sycn
系统运作模式: 0 关机 3 纯命令模式 5 图形界面 6 重启
普通用户权限: r - 读 w - 写 x - 执行
改变权限命令: chmod、chattr(隐藏权限) (参数均可使用man查询)
查看权限命令: ll 、llattr
改变文件所属用户组:chagrp
(文件拥有者,文件拥有用户组,其他人)
改变用户所有者:chown
文件种类:
普通文件 [ - ]、目录[ d ]、连接文件[ l ]
块设备文件:存储文件,硬盘、软盘
字符设备文件:串行端口接口文件,键盘、鼠标等
EXT2文件系统:Linux的正规文件系统(文件系统规定的文件属性/权限不同)
inode:文件权限和属性,记录文件数据所在的block编号
data block:实际数据(文件大时可能会占用多个block)
superblock:记录文件系统的整体信息
根据inode里的信息我们可以找到存放文件数据的block,这种文件系统被称为索引式文件系统
*如果一个文件存储的block太分散在读取的时候磁盘寻址时间就会更久所以所谓的“碎片”
碎片整理即将同一个文件所属的block汇合在一起
block
Block大小根据实际情况选择,如果说选择4KB而存储的全是小文件就会造成很多的浪费
inode
访问模式,所有者,大小,创建和状态改变时间,最近读取时间,最近修改时间,特性标志,内容指向
每个inode大小是128b 是每个文件都占用一个ionode
*文件系统能够创建的文件数量和inode的数量有关
读取文件时先找到inode并查看权限是否吻合,如果吻合再找到相应的block
指向block方式:直接,间接,单间接,双间接,三间接
总额:直接+间接
superblock
block和inode的总量,文件系统挂载时间,block,inode大小,validbit数值:如果一个文件系统被挂在则为0否则为1
块对照表,inode对照表,文件系统说明
*大小为1024b 每个区段的superblock可用dumpe2fs查询
查看目录里的文件占用的inode的号码使用ls -i
读取一个文件的流程
新增一个文件的流程:
1.确定用户对于该文件的权限是否有w x,如果有才能添加
2.根据inode bitmap找到没有使用的inode号码,将新文件的属性和权限写入
3.查找block bitmap找到没有使用的block号码,并将实际的数据写入,更新inode对于block的指向
4.更新inode bitmap和block bitmap
**日志文件系统:解决数据不一致状态问题(Ext3)
我们在文件系统中专门划分一块block专门用于记录文件写入或者修订的步骤
预备:系统要写入一个文件时先记录要写入的信息
写入:写入文件数据,更新meta data
结束:完成更新meta data之后记录下来
本文出自 “Zimomo” 博客,请务必保留此出处http://zimomo.blog.51cto.com/10799874/1762749