目录
3:备份数据(将/data目录中的文件备份到/opt/dump_sdb1文件中)
一:inode 与 block 详解
1:inode 和 block 概述
xfs的分区,一个inode有512字节,一个block有4096字节
ext4的分区,一个inode有256字节,一个block有4096字节
2:inode 的内容
[root@localhost ~]# stat anaconda-ks.cfg
文件:"anaconda-ks.cfg"
大小:1683 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:268634178 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2022-05-22 19:04:21.392496430 +0800
最近更改:2022-05-22 19:04:21.395496615 +0800
最近改动:2022-05-22 19:04:21.395496615 +0800
创建时间:-
注释:
File:显示文件名
Size:显示文件大小
Blocks:文件使用的数据块总数
IO Block:IO块大小
regular file:文件类型(常规文件)
Device:设备编号
Inode:Inode号
Links:链接数
Access:文件的权限
Gid、Uid:文件所有权的Gid和Uid
access time:表示我们最后一次访问(仅仅是访问,没有改动)文件的时间
modify time:表示我们最后一次修改文件的时间
change time:表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等
Birth time : 文件创建时间,crtime,不过据查此属性linux已废弃,目前状态显示结果均为
2:查看inode大小
(1)添加一块硬盘/dev/sdb
(2)分成两个分区
(3)将sdb1格式化为ext4分区
(4)创建挂载点/data
(5)挂载
(4)查看inode大小和block大小
[root@localhost ~]# dumpe2fs -h /dev/sdb1
(5)格式化sdb2为xfs分区
[root@localhost ~]# mkfs -t xfs -f /dev/sdb2
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=5242624, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
3:自定义xfs分区的inode和block
(1)如果分区已经挂载,先取消挂载,如果没有挂载,此步骤忽略
[root@localhost ~]# umount /dev/sdb1 -f
备注:
如果系统提示目标忙,如下所示,需要杀死占用该磁盘的进程
umount: /data:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@localhost ~]# yum -y install psmisc
[root@localhost ~]# fuser -mv /dev/sdb1 ##查看进程号
用户 进程号 权限 命令
/dev/sdb1: root kernel mount /data
root 1544 f.... sftp-server
[root@localhost ~]# kill -9 1544
[root@localhost ~]# umount /dev/sdb1
(3)定义block的大小
[root@localhost ~]# mkfs.xfs -f /dev/sdb2 -b size=2048
(4)定义inode大小
[root@localhost ~]# mkfs.xfs -f /dev/sdb2 -i size=1024
(5)定义xfs分区inode的占比(默认xfs分区的inode占该分区的20%的大小)
修改原则:小文件适合较多的inode,可以把占比调高,大文件存储适合较少的inode占比
[root@localhost ~]# mkfs -t xfs -f /dev/sdb2
[root@localhost ~]# mount /dev/sdb2 /data ##占比的设置需要将分区挂载
[root@localhost ~]# xfs_growfs -m 30 /dev/sdb2
[root@localhost ~]# df -i /dev/sdb2
4:自定义ext4分区的inode和block
(1)指定一个block的大小
[root@localhost ~]# umount /dev/sdb1
[root@localhost ~]# mkfs.ext4 -b 2048 /dev/sdb1
(2)定义inode大小
[root@localhost ~]# mkfs.ext4 -I 4096 /dev/sdb1
[root@localhost ~]# dumpe2fs -h /dev/sdb1 | grep node ##查询
(3)指定ext4分区inode的数量
[root@localhost ~]# mkfs.ext4 -N 120960 /dev/sdb1
二:硬链接与软链接
1:硬链接
只能针对文件做硬链接
[root@localhost ~]# touch aaa
[root@localhost ~]# ln aaa bbb
注意观察其inode数字,数字相同,说明这两个文件其实是同一个文件,并没有额外消耗磁盘空间,本质上是给同一个文件起了两个不同的名字。删除任何一个,另一个还是正常文件。
硬链接只能针对文件,不能针对目录,软链接可以针对文件和目录
硬链接不能跨分区,软链接可以跨分区
2:软链接
技能针对文件,又能针对目录
[root@localhost ~]# ln -s aaa ccc
[root@localhost ~]# ll -i
注意对比inode数字,数字不同,说明这是两个不同的文件,此时删除原文件,连接文件就失效了。
注意:软链接时,原文件如果和链接文件不在同一个目录,要用绝对路径。硬链接无此要求
3:ll命令
134592347 drwxr-xr-x. 2 root root 6 6月 6 14:33 111
268635557 -rw-r--r--. 2 root root 0 6月 6 14:30 aaa
268634190 -rw-r--r--. 1 root root 156 5月 22 19:22 ali
268634178 -rw-------. 1 root root 1683 5月 22 19:04 anaconda-ks.cfg
268635557 -rw-r--r--. 2 root root 0 6月 6 14:30 bbb
268675885 lrwxrwxrwx. 1 root root 3 6月 6 14:32 ccc -> aaa
注意:红色的数字代表文件的硬链接数量,如果是目录,则表示目录内的子目录数量
三:EXT文件系统文件恢复
[root@localhost ~]# mkfs.ext3 /dev/sdb1
[root@localhost ~]# mount /dev/sdb1 /data
注意:
格式化为ext3的分区,ext4的测试报错
1:编译安装 extundelete
[root@localhost ~]# yum -y install e2fsprogs-devel e2fsprogs-libs wget bzip2 gcc*
[root@localhost ~]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[root@localhost ~]# tar -xvf extundelete-0.2.4.tar.bz2
[root@localhost ~]# cd extundelete-0.2.4
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
[root@localhost extundelete-0.2.4]# ln -s /usr/local/extundelete/bin/* /usr/bin/
2:模拟删除并执行恢复操作
(2)创建测试用文件
[root@localhost ~]# cd /data
[root@localhost data]# echo a>a
[root@localhost data]# echo b>b
[root@localhost data]# echo c>c
[root@localhost data]# echo d>d
[root@localhost data]# ls
a b c d lost+found
(2)查看统计信息
[root@localhost data]# extundelete /dev/sdb1
(2)模拟误操作并恢复
[root@localhost data]# rm -rf a b
[root@localhost data]# ls
c d lost+found
[root@localhost data]# cd
[root@localhost ~]# umount /data
[root@localhost ~]# extundelete /dev/sdb1 --restore-all
注意:
恢复的文件会放在当前目录下的RECOVERED_FILES子目录下
四:xfs 类型文件备份和恢复
1:安装xfsdump工具
[root@localhost ~]# yum install -y xfsdump
2:将分区格式化为xfs
[root@localhost ~]# mkfs.xfs -f /dev/sdb1
[root@localhost ~]# mount /dev/sdb1 /data
[root@localhost ~]# cd /data
2:创建测试文件
[root@localhost data]# echo a>a
[root@localhost data]# echo b>b
[root@localhost data]# echo c>c
[root@localhost data]# echo d>d
[root@localhost data]# ls
a b c d
3:备份数据(将/data目录中的文件备份到/opt/dump_sdb1文件中)
[root@localhost ~]# xfsdump -f /opt/dump_sdb1 /data
注意:
/data后面不要斜杠,不要写成/data/,同时,也不能用相对路径
需要输入两个标识,第一个是备份会话标签,第二个是指定备份标签
4:模拟删除动作
[root@localhost ~]# rm -rf /data/*
5:恢复数据
[root@localhost ~]# xfsrestore -f /opt/dump_sdb1 /data/