前言
文件系统是在内核中实现,能够对存储在磁盘上的二进制数据进行有效的层次化管理的一种软件。而用户程序为了实现在磁盘上使用或者创建文件,向内核发起系统调用(实际由文件系统向内核发起的系统调用)并转换为对应磁盘设备的电气信号的请求(数据存储在硬盘上,用户的”0,1”代码信号数据转换成磁盘能识别的存储机制)。
MBR:主引导记录
分区信息放在主引导记录中,为了让操作系统能识别分区
MBR(512bytes):
1,bootloader(引导加载器):446bytes
2,fat(文件系统分配表):64bytes(16bytes一个分区,共4个分区)
3,5A(MBR有效性标记):2bytes
注:3个主分区,1扩展分区:引用额外的分区表–划分为逻辑分区
文件系统
特性:
文件系统通常将权限和属性放置于inode中,实际数据则放到data block中,还有一个超级块会记录整个文件系统的整体信息,包括inode和block的总量,使用量和剩余量
super block:记录此文件系统的整体信息,inode和block的总量,使用量和剩余量和文件系统的格式和相关信息
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件数据所在的block号码
block:实际记录文件内容,文件过大时,会占用多个block
基本功能是按文件名称实现存取,所以各文件系统的不同指内部存放读取文件(内部的实现细节)的格式不同。
注:计算器上,当两个层次不能结合时,就需要添加中间层
VFS:虚拟文件系统(中间层)
1,基本文件系统:Ext2,Ext3,Ext4,Reiserfs,xfs,JFS,vfat,NTFS
2,交换分区:Swap
3,集群文件系统:GFS2,OCFS2
4,网络文件系统:NFS,Smbfs(CIFS)
5,光盘文件系统:ISO9660
磁盘管理工具
fdisk查看磁盘分区列表以及实现磁盘分区管理
12345678910111213141516 | Sector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000da36d Device Boot Start End Blocks Id System/dev/xvda1 * 2048 41940991 20969472 83 LinuxSector size:每块扇区512bytesI/O size:一次I/O操作读取的数据量Disk identifier:disk的唯一标识符(16进制)Device:分区Boot: '*' => 表示可引导分区Start:表示起始柱面End:表示结束柱面Blocks:块数Id:文件系统的id号 |
1234567 | d:删除n:新建p:列出已有分区t:调整分区IDl:列出内核支持的分区IDw:存盘并退出q:不保存退出 |
kpartx|partx通知内核重读硬件设备的分区信息表
1 | cat /proc/partitions: 查看分区信息 |
mke2fs创建ext文件系统
配置文件:/etc/mke2fs.conf
12345678 | -t 指定文件系统类型 {ext2|ext3|ext4}-L Label 指定卷标 e2label(此命令可以查看/指定磁盘接口设备文件名的卷标)-b:{1024|2048|4096} 指定块大小(小文件多时使用小磁盘块)-O:指定分区特性-#:#个字节预留一个inode-N #:指定预留的inode数目-I #:Inode大小(inode保存元数据信息:文件大小,属主属组,存放的磁盘块位置)-m #:预留给管理员的空间百分比,默认为5 |
注:超级块中存放块组信息,块分配情况(有备份)
e2label创建ext文件系统
查看卷标和设定卷标
dumpe2fs查看块信息
tune2fs查看或调整ext文件系统信息
1234567 | -l:显示超级块信息-L label:设定卷标-m:预留管理员空间百分比-j:如果原文件系统为ext2,-J能够将其提升为ext3-o:设定其默认挂载选项-O:调整分区特性(^表示关闭该特性) ex:tune2fs -O ^huge_file /dev/sda3 |
fsck|e2fsck检查修复文件系统的命令
1234 | -t:指定文件系统-f:-a:自动修复错误-r:交互式修复错误 |
关于交换分区(虚拟内存)
注:交换分区格式化后内部的存储格式和内存一样,必须是单独分区
当物理内存容量过低时,把部分不经常使用数据置换到交换分区上,单位是页面(page),页面大小取决于cpu。
linux使用物理内存和交换分区的比例通过/proc/sys/vm/swapiness文件定义
mkswap 创建交换分区
swapon|swapoff 启动和关闭交换分区
12 | -a:标记所有swap为启用状态-P #:指定启用的swap优先级 |
hdparm 读取或设置设备信息
12345 | /proc/cpuinfo:cpu信息/proc/partitions:分区信息/proc/meminfo:内存信息/proc/filesystems:内核识别的文件系统信息/proc/mounts:挂载信息 |
mount|umount 挂载
创建完文件系统后,需要和当前系统上一个空闲目录关联起来,作为其访问入口
1234567891011121314151617181920 | mount [options] [-t fstype] [-o option] device 挂载点(空闲目录)-t:文件系统类型-r:只读挂载-w:读写挂载-L:用卷标指定设备-U:UUID指定设备-a:挂载所有支持自动挂载的设备-o 选项: async:异步I/O,数据的写入操作在内存中完成,然后由内核统一同步磁盘上去 sync:同步I/O atime/noatime:更新文件访问时间戳(建议noatime) auto/noauto:是否能够被 mount -a选择自动挂载 diratime/nodiratime:是否更新目录的访问时间戳 exec/noexec:是否允许执行其中的二进制程序 iversion/noiversion:inode修改后,i_version是否+1 _netdev:网络功能启用前不会挂载此种网络设备 remount:重新挂载 acl:启用facl(磁盘分区特性) |
注:挂载点挂载后,其原有目录下的文件或目录会被隐藏,卸载后能显示
注:内核启动时只挂着根文件系统所在分区,其他分区的文件系统
fuser
12 | -km 挂载点 踢出占用挂载设备的进程-v 挂载点 查看占用挂载设备的进程 |
df 磁盘空间使用状态报告
123 | -h:hunman-readable-i:查看inode使用情况-P:POSIX效果显示 |
du 评估文件占用磁盘空间情况
1 | -sh:hunman-readable显示目录占用磁盘总大小 |
dd:更低级别的复制工具
12 | dd if=input_file of=out_file bs=#[b|k|m|g] count=# #表示数字 |
注:copy命令发起系统调用读取一个文件,在新位置创建新文件,把之前读取的文件数据写入到新的文件中;dd命令直接复制磁盘块到另一个位置
关于/etc/fstab
fstab文件中定义了文件系统挂载表,在系统初始化脚本/etc/rc.d/rc.sysinit中定义开机读取fstab
123456789 | # <file system> <mount point> <type> <options> <dump> <pass>ex: UUID=af414ad8-9936-46cd-b074-528854656fcd / ext4 errors=remount-ro 0 1<file system>:挂载的设备<mount point>:挂载点(swap挂载点是swap)<type>:文件系统类型<options>:挂载选项,逗号隔开多个选项<dump>:转储(备份)频率,0-从不备份,1-每日备份<pass>:自检次序,1表示该挂载点首先自检,通常只能被/使用,0表示不自检 |
文件链接
ln(ln SRC LINKFILE)
硬链接:
> 指向同一个inode号的两个不同路径(inode号指向不能跨分区)
> 不能对目录创建硬链接
> 硬链接会改变文件链接的次数
12 | -rw-r--r-- 1 root root 260 Jul 29 2015 backup-my.cnf其中 1 表示文件的硬链接次数 |
软链接(符号链接):
> 符号链接文件内记录原文件的路径(**大小为路径的字符串数**)
> 可以跨分区
> 跟原文件不同一个inode
> 可以对目录创建符号链接
> 符号链接不会改变源文件被链接的次数
12 | lrwxrwxrwx 1 root root 7 Apr 5 2016 test1.sh -> test.sh-rw-rw-r-- 1 root root 1342 Jul 13 2015 test.sh |
压缩工具
gzip
zcat:不解压直接查看压缩文件原内容
后缀为(.gz)
123 | -d:解压缩[gunzip]-#:#为数字指定压缩比(1-9),压缩比越大占用cpu时钟周期越多,效率越低-c:将压缩结果到标准输出,可使用重定向将其保存为压缩文件,从而保存原文件 |
bzip2(压缩比率比gzip大)
bzcat:不解压直接查看压缩文件原内容
后缀为(.bz2)
1234 | -d:解压缩[bunzip2]-#:-c:-k:压缩完后保存原文件 |
xz(压缩比率最大)
xzcat:不解压直接查看压缩文件原内容
后缀为(.xz)
zip|unzip:归档压缩工具(可以压缩目录)
tar:归档工具
1234567 | tar [option] -f file.tar pathname-c:创建归档-x:还原归档 -t:不展开直接查看被归档的文件-zcf:调用gzip-jcf:调用bzip2-Jcf:调用xz |
注:tar命令可以根据文件后缀在解压缩时自动调用相应的解压缩工具(-xf)
来源:https://www.cnblogs.com/lijianming180/p/12262451.html