首先先了解一下文件或目录属性
[root@web03 ~]# ls -lhi /etc/hosts
68328319 -rw-r--r-- 1 root root 158 Mar 16 2019 /etc/hosts
文件属性==ls -lhi 每一列的含义
68328319:inode号码----系统中唯一
-:这一列表示是文件还是目录-是文件d是目录
rw-r–r--:文件的权限
.(点):与selinux有关,当selinux关闭的时候它就不存在了
这个就是开启selinux的情况
[root@web03 ~]# ls -lhi /etc/hosts
68328319 -rw-r--r--. 1 root root 158 Mar 16 2019 /etc/hosts
1:文件硬链接数量
root:表示文件所有者或属组
root:表示文件的属主
158:表示该文件大小
Mar 16 2019:表示文件的修改时间
/etc/hosts:文件或者目录;注意文件名不是文件的属性。
inode和block简介
举个栗子:获取硬盘,再到向硬盘里存放数据。
硬盘(房子),分区(划分隔断),格式化创建文件系统(装修-不同风格),挂载(安装门窗)
inode
1)含义
用来存放文件属性的空间。通过inode号码找到这个空间的。
inode号码----家庭住址
inode空间----家庭
2)怎么来的
格式化创建文件系统
3)特点
1#inode存放文件属性
2#记录block的位置,指向block的指针说白了就是block在哪
3#创建一个文件要占用一个inode
4#inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。
硬链接数量====超市入口的数量
5#inode在某一个文件系统(分区),是唯一的。
4)怎么用/看
ls -i (看某些文件的inode号码)
df -i(系统里面inode用了多少剩余多少)
block
1)含义
数据块,实际存放数据的位置
2)怎么来的
格式化创建文件系统
3)特点
1#block是实际存放数据的位置
2#block 4k(centos.6.x)1k 8k block块的大小默认4k;inode也有大小为256字节
3#创建大文件会占用多个block,如果文件很小1k,4k剩余的空间会被浪费。
4#创建一个文件要占用一个inode和至少1个block
5#每读取一个block就会消耗一次磁盘I/O(input/output磁盘读写)
4)怎么用/怎么看
df -h(磁盘block使用情况)
ls -lh (看某一个文件多大)
系统通过文件名自动可以找到inode号
inode号找到对应的区域
inode找到对应的block(存放数据)
一个文件虽然占用一个inode但是会对应多个block,因为文件大。
小结:
inode与block小结:
- 格式化创建文件系统
- 在同一个文件系统(分区),两个文件inode相同,互为硬链接
- 创建一个文件只是占用一个inode和至少一个block
- 如何查看inode和block的使用情况 ls -i df -h
引起磁盘满的情况有两种,一种是block满了,另外一种是inode用光了
- block满了
创建测试环境
seq 100000000 >/tmp/big 创建大文件
#第一个里程碑,先查看具体哪个目录满了
df -h 查看不足的分区
#第二个里程碑-是哪一个目录占的空间大,最终定位到目录或文件
[root@web03 ~]# du -sh /* | grep G
du: cannot access ‘/proc/1517/task/1517/fd/4’: No such file or directory
du: cannot access ‘/proc/1517/task/1517/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/1517/fd/4’: No such file or directory
du: cannot access ‘/proc/1517/fdinfo/4’: No such file or directory
5.1G /tmp
1.3G /usr
[root@web03 ~]#
从中可以看出/tmp目录下空间占用很高
查看占用空间较大的目录
[root@NSW1 ~]# du -sh /tmp/|grep G
[root@NSW1 ~]# du -sh /tmp/
#第三个里程碑问清楚是否可以删除,然后再操作。
企业案例:如果向磁盘写入数据提示:No space left on device (磁盘空间不足)通过df -h查看磁盘空间,发现没满,请问可能原因是什么?企业场景什么情况下会导致这个问题发生
inode用光了。
模拟环境的命令
mkdir -p /app/logs/
dd if=/dev/zero of=/dev/sdc bs=8k count=10
ls -l /dev/sdc
mkfs.ext4 /dev/sdc (创建文件系统相当于格式化)
mount -o loop /dev/sdc /app/logs
以上操作相当于创建了一个分区,且空间极其微小
[root@NSW1 logs]# touch stu{1..6}.log
[root@NSW1 logs]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.5G 16G 9% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
/dev/sdc 73K 15K 54K 22% /app/logs
[root@NSW1 logs]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 1234576 55520 1179056 5% /
tmpfs 125514 1 125513 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
/dev/sdc 16 16 0 100% /app/logs
[root@NSW1 logs]# \rm -f *.log
[root@NSW1 logs]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 1234576 55520 1179056 5% /
tmpfs 125514 1 125513 1% /dev/shm
/dev/sda1 51200 39 51161 1% /boot
/dev/sdc 16 11 5 69% /app/logs
>/var/log/messages 清空;文件特殊无法删除只能清空
真实环境直接rm即可