文件系统详解以及修复

虚拟磁盘分为: 
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
 

你可能感兴趣的:(Linux系统,运维,服务器,运维,linux)