12.22
linux文件属性详解
内容:
1. inode和block特点与查看
2. 磁盘空间满了的三种常见故障类型排查与解决
3. 文件类型详解与查看
4. linux用户类型及相关文件
5. 服务器的连接与安全
6. 软链接与硬链接的区别,特点及创建
7. linux下彻底删除一个文件的原理与步骤
8. linux下三种时间介绍
第1章 整体说明
第2章 inode 与 block
2.1 inode: index node 索引节点 存放的是文件/目录属性信息,大小,时间,类型,权限, inode里面唯独不包含文件名本身。(文件的名字不是文件的属性)
2.2 block 块 文件的内容 数据存放的位置
2.3 inode 和block 特点
1. inode存放文件的属性,block的位置
2. 创建一个非空文件至少要占用一个inode和至少一个block
3. 在同一个分区中,如果两个文件的inode号码相同,这两个文件互为硬链接,硬链接相当于是文件
不同的入口
4. block是存放数据的空间
5. block大小4K,比较大的文件会占用多个block,比较小的文件(1K)剩余的空间无法使用
6. 磁盘读取数据是按block为单位读取的
7. 每读取一个block就会消耗一次磁盘I/O(input/output 磁盘读写)
2.4 怎么来的?
预备姿势:
大房子(硬盘)-->划分隔断(分区)-->装修(格式化)-->装修风格(文件系统类型)-->安装门窗(挂载)
inode 和block 是在格式化创建文件系统的时候诞生
2.5 查看文件内容与 inode 和block 的关系
用户→文件名→inode→block(文件内容)
2.6 怎么查看inode和block信息
2.6.1 查看inode
l ls -lhi /etc/hosts 查看某个文件inode号码
[[email protected] oldboy]# ls -lhi gao
total 12K
405094 -rw-r--r--. 1 root root 16 Dec 12 14:38 feng
390247 drwxr-xr-x. 2 root root 4.0K Dec 15 03:54 n
l df -i 查看系统中一共有多少inode数量
[[email protected] n]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 593344 58618 534726 10% /
tmpfs 60748 1 60747 1% /dev/shm
/dev/sda1 51200 42 51158 1% /boot
2.6.2 block 磁盘容量
l ls -lhi /etc/hosts 查看某个文件大小
[[email protected] n]# ls -lhi /etc/hosts
260127 -rw-r--r--. 2 root root 177 May 20 2017 /etc/hosts
l df -h 查看磁盘空间使用情况
[[email protected] n]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.7G 6.7G 20% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
软链接和硬连接的区别
2.7 【企业案例】磁盘空间满了,no space left on device(磁盘
空间不足)
创建测试环境
mkdir -p /app/logs
dd if=/dev/zero of=/dev/sdc bs=8K count=10 创建指定大小文件
ls -l /dev/sdc
mkfs.ext4 /dev/sdc 格式化并创建文件系统(ext4)
mount -o loop /dev/sdc /app/logs 挂载
2.7.1 block满了
dd if=/dev/zero of=/dev/sdc bs=8K count=10 模拟大文件
解决:删大文件,腾出空间
2.7.2 inode满了
touch {1..10} 模拟多个文件
解决:删小文件,腾出名额限制
2.8 企业案例:如果向磁盘写入提示如下错误:NO space left on device(磁盘空间不足),通过df -h查看磁盘空间,发现没满,请问可能的原因是什么?企业场景什么情况下会导致这个问题发生?
错误:inode用光了
原因:大量的小文件 ---定时任务书写错误导致
第3章 文件类型
扩展名 .log .txt .conf .avi 用来区分不同类型的文件
3.0.1 windows: 强制、严格通过扩展名识别不同类型文件
3.0.2 Linux: 扩展名方便我们人类区分不同文件类型
3.0.3 拓展名含义: .conf 配置文件
.sh 脚本(命令大礼包)
3.0.4 linux下面常见的文件类型
- (ls) f (file) 普通文件
d d 目录
l l 软链接 符号链接 快捷方式
3.0.5 普通文件详解
1. 纯文本文件 text /etc/hosts
2. 二进制文件(命令) /bin/ls
3. 数据文件(data) 压缩包
3.0.6 file 查看文件的类型
file /tmp/etc.tar.gz
第4章 linux用户基础内容
UID user id 用户id
GID group id 用户组id
4.0.1 linux用户分类
root 皇帝 UID==0
虚拟用户 傀儡 linxu下面每个程序、进程都需要一个对应的用户和组
无法登录系统 UID==1--499
普通用户 百姓 UID=500+ (6万多)
4.0.2 id 查看用户id和所属组 id oldboy
[[email protected] n]# id root
uid=0(root) gid=0(root) groups=0(root)
4.0.3 对于一个文件/用户来说,用户分为几种
/etc/hosts 主人 亲戚 陌生人
属主(所有者) 属组 其他区用户
[[email protected] n]# ls -l 6
-rw-r--r--. 1 root root 0 Dec 22 07:28 6
-普通文件 rw- 所有者 r--属组 r--其他用户
4.0.4 linux权限
r 读 4
w 写 2
x 可执行(命令 脚本) 1
- 没有权限
4.0.5 与用户相关的文件
/etc/passwd 存放用户的信息
/etc/shadow 存放用户密码
/etc/group 存放用户组信息
/etc/gshadow 存放用户组密码
4.0.6 /etc/passwd文件详解
centos6.9 默认shell /bin/bash
第5章 服务器的连接与安全
5.0.1 连接到服务器:
1. ip
2. 用户
3. 密码
4. 端口号22
5.0.2 保护服务器:
1. 修改远程连接端口号
2. 禁止root用户远程登录系统
第6章 软连接(soft link或symlink)与硬链接(hard link)
6.1 硬链接 :
6.1.1 概念:
文件(超市)的入口 硬链接
文件(超市)的入口数量 硬链接数量
在同一个分区中,inode号相同的文件互为硬链接
6.1.2 ln 创建链接 默认创建硬
[[email protected] gao]# ln yun.txt yun.txt_hard
[[email protected] gao]# ls -lhi yun.txt*
390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt
390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt_hard
6.1.3 作用:防止文件误删除,,两个入口,存在一个即可
6.1.4 特点:
1. 硬链接与原文件在同一分区,inode相同
2. 硬链接不可跨文件系统创建
3. 删除原文件,硬链接可用
4.不能对目录创建硬链接
6.2 软链接: -s 默认权限 777
6.2.1 概念:
相当于windows的快捷方式
指向源文件
源文件丢失,软链接失效
6.2.2 ln -s 创建软链接
[[email protected] gao]# ln -s yun.txt yun.txt_soft
[[email protected]oldboy gao]# ls -lhi yun*
390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt
390247 -rw-r--r--. 2 root root 0 Dec 22 08:24 yun.txt_hard
405095 lrwxrwxrwx. 1 root root 7 Dec 22 08:29 yun.txt_soft -> yun.txt 指向源文件
6.2.3 特点:
1)软链接可跨文件系统建立
2)创建软链接尽量使用绝对路径(相对路径--源文件路径改变软链接不可用)
3)删除源文件,软链接失效
4)指向源文件,相当于windows的快捷方式
6.2.4 错误:创建软链接时使用相对路径,原文件移动位置,导致软链接不可用
6.2.5 结论:创建软链接用绝对路径
ln -s /oldboy/ett.txt ett.txt_soft
6.3 总结
1) 删除原文件,软连接不可用
2) 删除硬链接,都没有影响
3) 删除源文件和硬链接,相当于没有任何入口(硬链接数为0)
第7章 Linux下面一个文件被彻底删除的条件
1. 文件的硬链接数为0 rm
2. 进程调用数为0(谁还在使用这个文件) lsof
7.0.1 lsof |grep “secure” 查看被进程调用的文件(是否有进程正在使用被删除的文件)
7.0.2 企业案例: 磁盘空间满了,删除大文件,可磁盘空间并没有减小
分析:你把文件删除了(硬链接),但这个文件还有进程在使用,所以这个文件并没有被彻底删除,最终导致磁盘空间不足
就好像你只是把超市的大门封住了,但超市本身还在
解决步骤:
1.模拟环境
seq 500000 >>/var/log/messages
2.查看磁盘空间 df -h 逐层排查
[[email protected] /]# df -h 查看那个分区占空间大
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 6.3G 2.1G 75% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
3.[[email protected] /]# du -sh /var/* |grep "G" 进目录进一步排查哪个子目录/文件大
4.6G /var/log
[[email protected] /]# du -sh /var/log/* |grep "G"
4.6G /var/log/messages
4.删除文件 ---询问boss后删除
\rm /var/log/messages -f
检查:
5.查看磁盘空间
[[email protected] /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 6.3G 2.1G 75% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
磁盘空间并没有被释放 由此---有某个文件并没有被彻底删除
6.lsof |grep messages查看哪个进程在使用被删除的文件
[[email protected] /]# lsof |grep messages
rsyslogd 2491 root 1w REG 8,3 4888893610 141095 /var/log/messages (deleted)
标志(detele)这个文件没有被彻底删除(硬链接数为0,进程调用数不为0)
7.重启进程 /etc/init.d/rsyslog restart
再次检查
8.查看磁盘空间 df -h
[[email protected] /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.7G 6.7G 21% /
tmpfs 238M 0 238M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
磁盘空间被释放
7.0.3 总结:
1.找出系统中硬链接数为0,进程调用数不为0的文件(没有被彻底删除的文件)
lsof |grep delete
2.排查哪个文件占地大 du - sh /* |grep “G”
[[email protected] /]# du -sh /*|grep "G"
du: cannot access `/proc/50234/task/50234/fd/4': No such file or directory
du: cannot access `/proc/50234/task/50234/fdinfo/4': No such file or directory
du: cannot access `/proc/50234/fd/4': No such file or directory
du: cannot access `/proc/50234/fdinfo/4': No such file or directory
1.1G /usr
4.7G /var
3.以后会学习各种软件/服务日志及命令
7.1 磁盘空间系列小结:
7.1.1 block满了 文件没有被彻底删除(硬链接为0,进程调用数不为0)
工作中 lsof |grep delete 排查
7.1.2 block满了 正常满了
df -h 哪里满了
du -sh /* 一层一层排查 具体哪个目录/文件
确认之后,询问boss是否 删除
7.1.3 inode用光了
某个目录下有大量的小文件
----定时任务错误
l 解决方法:找出系统中目录大小大于1M
[[email protected] oldboy]# ls -lhd xiaodong/
drwxr-xr-x. 2 root root 4.0K May 20 23:22 xiaodong/
[[email protected] oldboy]# du -sh xiaodong/
11M xiaodong/
目录本身大小和目录下文件数量有关,与文件大小无关
目录占地面积 -----文件越多,占地越大
touch {1..10000}.txt
[[email protected] oldboy]# ls -ldih xiaodong
394659 drwxr-xr-x. 2 root root 252K May 20 16:53 xiaodong
7.2 如何在linux中删除的大量的小文件
删除文件太多,删不了
[[email protected] xiaodong]# \rm -f *.txt
-bash: /bin/rm: Argument list too long
解决:
1)ls *.txt |xargs rm 删除大量文件
[[email protected] xiaodong]# ls *.txt|xargs rm
[[email protected] xiaodong]# ls
注:2)删上亿个文件 一点一点删 否则会卡
3)删除目录(删除之前记录好目录的权限和所有者)
7.3 如何在linux中创建大量小文件
错误:
[[email protected] xiaodong]# touch {1..400000}.txt
-bash: /bin/touch: Argument list too long
解决:
echo {1..500000}.txt |xargs touch 创建太多文件
第8章 linux 下面几种时间
8.1 文件被修改或被访问的时间
mtime modify time 【修改时间】文件/目录的修改时间。文件内容修改
ctime change time 【属性改变时间】文件/目录属性的改变时间,大小,硬链接数,权限,所有者,所属的组,类型
atime access time 【访问时间】文件/目录的访问时间,cat查看
8.2 stat 显示文件时间信息 stat /oldboy.txt
[[email protected] oldboy]# stat oldboy.txt
File: `oldboy.txt'
Size: 29 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 405110 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-12-22 03:11:51.662787272 +0800
Modify: 2017-05-20 06:27:29.100976131 +0800
Change: 2017-05-20 06:27:29.100976131 +0800
8.3 atime 短期内查看次数多只计入一次 (防止磁盘空间浪费)
第9章 总结:
1. 文件属性总体介绍
2. inode与block 怎么来的 啥意思 特点
3. 企业案例 磁盘空间不足 原因
4. 用户分类
5. /etc/passwd 每一列含义
6. linux权限
7. linux软链接与硬链接
第10章 注意
10.1 硬链接文件两个文件inode号相同 占用了几个两个inode,一个block
10.2 touch {1..100} 快速创建多个文件
10.3 mv 原地移动相当于重命名
10.4 文件夹和文件都消耗inode和block
原文地址:http://blog.51cto.com/13517084/2055716