深入理解文件系统

文件系统的组成:

识别文件系统和设备

块设备命名:

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:
  1. 该文件系统会分配一个未使用的inode

  2. 在目标目录下会添加一条文件名和inode的映射记录

  3. 有数据拷贝的过程

mv:移动

如果在同一个文件系统中移动文件

  1. inode不会改变,

  2. 文件的路径改变

  3. 把原来的文件路径和inode的对应关系删掉,再创建一个新的inode对应关系

  4. 数据没有移动

  5. 在不同的文件系统之间移动,实际上就是cp+rm

rm:
  1. 每执行一次rm,连接数就会减去1

  2. 当连接数变为0时,该文件就会被删除,inode回收,数据不会被移除,但是该数据会被标记为可用状态,在下一次创建文件的时候,使用这一部分被标记的数据

  3. 当连接数不为0时,该文件的inode不会被回收 ,数据也不会被删除

硬链接和软连接

硬链接:

两个文件指向同一个inode也就是两个文件名的同时映射在同一个元数据上

ln 连接的文件的绝对路径 被链接文件的绝对路径

例:ln /etc/passwd /root/abc 把/etc/passwd 硬链接到/root/abc上

前提是/etc/和/root/都在同一个文件系统中

查找被链接的文件可以用find

不可以跨文件系统做硬链接

硬链接的作用:

快照:基于硬链接

快照的数据不能跨文件系统

快照就是将元数据拷贝了一份

利用了COW(写前拷贝)技术

cow只保存修改的数据

可以在原来的空间修改 而cow空间会随着原来数据修改的量而修改cow空间的使用量

快照的好处:
  1. 占用的空间少

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 损坏磁盘路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值