文件系统的组成:
识别文件系统和设备
块设备命名:
b:块设备,存储数据的设备
IDE设备:/dev/hda /dev/hdb
SATA/SAS/USB设备:/dev/sda /dev/sdb
虚拟磁盘:/dev/vda /dev/vdb 使用的是KVM虚拟化
XEN /dev/xvda 使用的是XEN的虚拟化技术
NVMe设备(SSD):/dev/nvme0n1 /dev/nvme1n1
逻辑卷:/dev/mapper
光驱设备:/dev/sr0
使用磁盘空间规则:
磁盘--->分区--->格式化
不格式化不能存文件,但是可以存数据
磁盘刚拿到的时候会进行一个低级格式化
1:低级格式化:划扇区、柱面、磁道
2:分区
3:文件系统格式化
文件系统类型:
windows:fat36 fat32 NTFS
fat32:单个文件大小有限制 单个文件大小大于4G的放不进去 一个分区大小不能超过32G
unix :FFS UFS.....
linux:
-
本地文件系统:ext2 ext3 ext4 xfs
-
ext4 更擅长处理小文件
-
xfs 更擅长处理大文件
-
-
网络文件系统:NFS CIFS 不是在本地格式化的,是在网上共享的
-
集群式文件系统:只能有一个人编辑,剩下的人都只能看,不能编辑 GFS GFS2
-
分布式文件系统:HDFS
-
光驱文件系统:iso9660
df -hT 可以查看文件的格式化类型 mkfs.ext4 块设备名称 格式成ext4的文件系统格式
inode和block
inode 唯一标识号
block 文件系统的最小存储单元,默认是4k
inode size :可以自己设置
注意:
-
能存多少个文件取决于有多少个inode
-
在磁盘格式化的时候inode的个数和block的个数已经被确定
-
磁盘不格式化的话只能存二进制文件
-
磁盘的最小组成单元是扇区
-
默认512字节
tune2fs -l 查看设备的详细信息
block的分配是按一个为单位来分配的 所以block的值不建议太大
数据删除了之后block会从占用的状态下变成空闲,在下一次的block的分配的时候会优先考虑空闲的block,在长期以往的删除文件当中
会造成数据在磁盘中分散的情况
block的分散会让计算机寻址 所以花费的时间长,性能会变差
DHFS的block的单位是128M
inode size的默认大小是256字节
指针:block块的地址
-
直接指针:直接存放block块的地址
-
间接指针:指针只用存文件第一个block块的地址 ,在第一个块上存放第二个指针,在第二个块上存放第三个块的指针
du -sh 查看文件占有的block的大小
文件:包含元数据和数据
-
元数据:描述文件的信息
-
数据:保存在文件里面的内容
目录:存放文件的文件名和文件的对应关系
元数据:描述目录的信息
数据:存放的是文件名和inode之间的对应关系
文件名是给人看的 inode是给机器看的
文件名不是文件的元数据信息
删除文件删除的是文件名和inode的对应关系 而不是删除的元数据和数据
两个文件的inode一样说明这是两个完全不一样的文件
两个文件系统有两个一样的inode 那么还是说明两个文件是我完全不一样的文件
cp,mv,rm和inode的关系
cp:
-
该文件系统会分配一个未使用的inode
-
在目标目录下会添加一条文件名和inode的映射记录
-
有数据拷贝的过程
mv:移动
如果在同一个文件系统中移动文件
-
inode不会改变,
-
文件的路径改变
-
把原来的文件路径和inode的对应关系删掉,再创建一个新的inode对应关系
-
数据没有移动
-
在不同的文件系统之间移动,实际上就是cp+rm
rm:
-
每执行一次rm,连接数就会减去1
-
当连接数变为0时,该文件就会被删除,inode回收,数据不会被移除,但是该数据会被标记为可用状态,在下一次创建文件的时候,使用这一部分被标记的数据
-
当连接数不为0时,该文件的inode不会被回收 ,数据也不会被删除
硬链接和软连接
硬链接:
两个文件指向同一个inode也就是两个文件名的同时映射在同一个元数据上
ln 连接的文件的绝对路径 被链接文件的绝对路径
例:ln /etc/passwd /root/abc 把/etc/passwd 硬链接到/root/abc上
前提是/etc/和/root/都在同一个文件系统中
查找被链接的文件可以用find
不可以跨文件系统做硬链接
硬链接的作用:
快照:基于硬链接
快照的数据不能跨文件系统
快照就是将元数据拷贝了一份
利用了COW(写前拷贝)技术
cow只保存修改的数据
可以在原来的空间修改 而cow空间会随着原来数据修改的量而修改cow空间的使用量
快照的好处:
-
快
-
占用的空间少
ROW技术:写时重定向
拍了快照之后不能在原来的空间修改 只能在row空间修改
cow和row底层都是硬链接
软链接
软连接:
在windows中就是快捷方式
ln -s /etc/passwd /root/abc
软连接对文件本身而言时两个不同的文件
可以快文件系统
软连接本质:
文件1和inode指向文件2和inode,文件2和inode指向数据
链接文件的数据是存放的文件的路径
软连接文件时被链接的文件要输入绝对路径
文件类型
ls -l | 文件类型 | 解释 |
---|---|---|
- | 普通文件 | 文本文件,二进制文件或者压缩文件 |
d | 目录 | 目录也是一种特殊的文件 |
c | 字符设备文件 | 串行端口的接口设备,键盘、鼠标等 |
b | 块设备文件 | 存储数据的设备 |
l | 连接文件 | 类似Windows下的快捷方式 |
p | 管道文件 | 为了解决多个程序同时存取一个文件造成的错误 |
s | 套接字文件 | 这类文件通常用在网络数据连接,可以启动一个程序用来监听客户端的请求,客户端可以通过套接字来进行通信 |
查看文件系统的使用情况
df 查看已经挂载的文件系统的使用情况
-
-h 查看文件系统的使用情况,单位换算为M和G等 默认单位是K
-
-i 查看inode使用情况
-
-T 查看文件系统类型
du 查看目录的大小
-
-h 查看文件系统的使用情况,单位换算为M和G等 默认单位是K
-
-s 查看目录汇总的大小
压缩和解压缩文件
基础命令
gzip/gunzip
bzip2/bunzip2
xz/unxz
使用 file来查看文件的类型
-r 递归压缩,把目录下的文件压缩
打包和压缩文件
tar
-
-c 建立归档
-
-f 指定归档文件名
-
-x 拆包
-
-t 列出归档内容
-
-z 调用gzip压缩工具
-
-j 调用bzip2压缩工具
-
-v 查看所有过程
-
-C 将文件解压到指定目录下
挂载和卸载文件系统
mount
语法: mount 设备 挂载点
挂载光盘: mount /dev/cdrom /media
umount
语法: umount 设备 挂载点
卸载光盘: umount /dev/cdrom 或者 mount /media
文件系统的修复
以ext4的文件系统为例
lsblk 查看磁盘的情况
mkfs.ext4 以ext4的文件系统格式来格式化磁盘
文件:元数据、数据
分区:元数据、数据
文件系统:元数据和数据
dumpe2fs /dev/sdb2 查看详细的元数据信息
磁盘中有一个超级block
磁盘中会分为若干个组
每个组中会有字节的元数据空间
每个组中的元数据会汇总到超级block中
而且各一个组会有一个超级块的备份
ext系列文件系统:
恢复已经被损坏的4k的超级block步骤
1.磁盘取消挂载
2.fsck -v 损坏磁盘的路径
3.一直按y
也可以找一个文件大小一样的文件 超级块的位置都是一样的
恢复已经被损坏全部的超级block步骤
也可以找一个文件大小一样的文件 超级块的位置都是一样的
e2fsck -b 超级块位置 损坏磁盘路径
-b 指定超级块位置
例:e2fsck -b 8964582 /dev/sdb2
xfs文件系统类型
xfs_repair 损坏磁盘路径