文件系统详解以及修复

发布时间:2024年01月14日

虚拟磁盘分为:?
kvm ?: ?vda(虚拟化磁盘) ? ?openstack底层虚拟化是kvm ? 现在的红帽底层也是用的kvm(因为被红帽收购了)
xen ? : ?xvda ? ? ? cloustack(被openstack淘汰了)底层虚拟化是xen ? ? ?已经被kvm淘汰

块设备
IDE设备 ?: ?/dev/hda,/dev/hdb
SATA/SAS/USB设备 ? : ?/dev/sda ,/dev/sdb
virtio-blk超虚拟化存储(部分虚拟机) ? : ?/dev/vda,/dev/vdb
NVMe设备(ssd) ?: ? /dev/nvme0,/dev/nvme1
逻辑卷 ?: ?/dev/mapper/*


分区: 将硬盘的整体存储空间划分成多个独立的区域
格式化文件系统 : 按照要求创建出一个文件系统结构
文件系统类型:?
1、本地文件系统 : ext2,ext3,ext4(小文件用的比较多),xfs(一般大文件用) ?
2、网络文件系统 : NFS,CIFS?
3、集群文件系统 : GFS,GFS2
4、分布式文件系统 : CEPH
5、光盘 ?: iso9660

日志文件系统 ? : ? ? 先做,就是先把要做的事情记录在日志中,如果断电,导致进行的操作中断,重启后日志会自动检测事情的完成进度,会继续完成,目的是防止数据丢失


inode(相当于文件的编号或者叫身份证件号,用ll ?-i) ?: ? 在同一个文件系统中,如果是两个文件是相同inode,则它们为同一个文件

目录作用 ?: ?用于存放文件和inode的关系


注意 ? : ? 每个文件系统都有自己的inode,不能跨文件系统


磁盘格式化后会分成两个区域,一个是数据区,用来存放数据的,一个是inode区(inode table ),用来存放文件元信息的区域,可通过inode编号,查询inode table可知道对应文件的元数据信息


元数据 ? : ?大小,时间戳,权限.....(描述文件特征的系统数据,也可称为档案),元数据被删除了, 数据就会被损坏,恢复元数据,数据才能恢复(数据恢复的本质),一个元数据(metadata)占256字节
数据 ? : ?文件的内容(data),数据要是被删除了,元数据也会被删除

dh ?-h ?: ?查看block可用的大小
dh ?-i ?: ?查看inode可用的空间
lsblk ? : ?查看block块(默认占4k)

给磁盘分区完之后需要先格式化,再挂载
mkfs.ext4 ? ?/dev/nvme0n2p1


tune2fs ?-l ? ?/dev/nvme0n2p1 ? 查看文件系统的元数据,其中uuid是文件系统的唯一标识符,Reserved block count(保留块大小,给root使用)
dumpe2fs ?/dev/nvme0n2p1 ?查看文件系统的元数据,包含组的信息(里面包含superblock的位置),文件系统的元数据存放在superblock里面,文件系统读写都需要汇总给超级块,第一个是主要的superblock,其他都是备份superblock
fsck(ext4文件系统用fsck) -v /dev/nvme0n2p1 ?修复文件系统,当fsck无法修复时需要用e2fsck
e2fsck -b(指定superblock的位置) 819200 /dev/nvme0n2p1 ?指定备份的superblock恢复,如果fsck无法修复元数据,用e2fsck修复时,不记得superblock的位置,可以挂载一个相同大小的分区,用dumpe2fs查看superblock的位置,因为superblock的位置都是指定好的,正常生产环境下,不会所有的superblock都损坏,试每一个superblock的位置可以尝试修复
想要指定损坏superblock可以用dd ?if=/dev/zero ?of=/dev/分区(切记,不是磁盘) ?bs=4k ? count=1 ,注意dd太大会不好修复,superblock损坏太多可以修复到正常环境,但是里面的数据会丢失,损坏后需要先用umount ?/dev/nvme0n2p1卸载分区,再进行修复,修复完之后需要重新挂载,能挂在上就基本上能使用了

xfs_repair(xfs文件系统用xfs)


在inode table中还有一个重要的叫指针,在linux中系统查找文件过程是,先在inode table中找到inode,然后inode指向指针,指针再指向block块(data表)
文件名---------->inode ?: ?目录中的记录
删除文件时会收回inode, 当有硬链接时,需要删除到文件的硬链接为0才会收回inode,否则有几个inode都会占用inode

17460844 drwxr-xr-x. 2 root root ? ? ?6 Aug 31 22:08 ?Documents
其中的2为硬链接的数量,为0时才会收回inode


cp和inode的关系
1、分配一个新的inode,并添加到inode表中,包括快捷方式也会占用一个inode
2、在目标目录下分配新的inode和文件名的对应关系

mv
同一个文件系统内 : ?原目录下的对应关系删除,在目标目录下创建新的对应关系,元数据和数据没有发生变化

不同文件系统(就是分区)之间移动 ?: ?cp + rm(先把文件复制到不同文件系统下,把源文件删除,不是原来的文件了,元数据发生改变)?


rm和inode关系
1.每执行一次rm,链接数减去1
2.当链接数为非0时,元数据不变,数据也不变;仅仅是删除目录下文件名和inode的对应关系
3.当链接数位0时,inode回收,元数据删除,数据没有被移除,但是block标记为可用


硬链接:
多个文件名指向同一个inode
rm会减少文件的链接数,知道文件的链接数变为0,文件才会被移除
不能跨文件系统
ln ? 源文件 ?目标链接文件

软链接
一个文件指向另一个文件,是两个不同的文件,软连接不能跨文件系统
ln ? -s ? ?pass源文件 ? ? /root/haha/caonima目标链接文件 ?: ? 创建软链接(注意是文件到文件),若源文件不存在,也会成功,但是会一直闪,说明没有源文件,且链接文件权限都是777
17459360 lrwxrwxrwx. 1 root root 4 Nov 26 21:30 caonima -> pass 把caonima文件链接到pass,pass经过系统会改变,只需要找到caonima就可以
其中4为软链接的字符串长度


查看文件系统使用情况
baobab图形工具查看文件系统使用情况
df查看已挂载的文件系统使用情况
-h:查看文件系统的使用情况,单位换算为M和G等,单位默认是k
-i:查看inode使用情况
-T:查看文件系统类型
du查看目录的大小
-h:查看文件系统的使用情况,单位换算为M和G等,单位默认是k
-s:查看目录汇总的大小

压缩:
gzip/gunzip ?
bzip2/bunzip2
xz/unxz

打包:
?? ?tar 管理打包文件
?? ??? ?-c: 创建打包
?? ??? ?-v:查看过程
?? ??? ?-x:抽取文件
?? ??? ?-f:指定打包后的文件名
?? ??? ?-C:指定抽取文件到哪个目录
?? ??? ?-t:列出打包文件里面的文件名

?? ??? ?-z: gzip
?? ??? ?-j:bzip2
?? ??? ?-J: xz
?

文章来源:https://blog.csdn.net/weixin_46113061/article/details/135589749
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。