理解inode以及软硬连接,和inode磁盘爆满的解决方案以及文件权限
理解Linux的软硬链接
创建硬链接的命令
[root@centos6 data]#ln /data/f1 /data/f2 [root@centos6 data]#ll -i
total 16
13 -rw-r--r-- 2 root root 0 May 12 09:19 f1
13 -rw-r--r-- 2 root root 0 May 12 09:19 f2
上图我们可以看出硬链接有着相同的inode号,只是文件的名字不一样,因此硬链接有着以下几点特性:
1 文件的inode号相同,文件名不同
2 只能对已经存在的文件做硬链接
3 硬链接不能跨分区创建
4 每链接一次,它的链接数会加1
5 硬链接不能对目录进行操作,只可以对文件进行操作
6 删除一个硬链接文件,不会影响其他相同inode号的文件
创建软链接的命令
[root@centos6 tmp]#ln -sv /etc/fstab /data/fstab
`/data/fstab' -> `/etc/fstab'
[root@centos6 tmp]#ln -sv /etc/issue /data/issue
`/data/issue' -> `/etc/issue' lrwxrwxrwx 1 root root 10 May 12 09:35 fstab -> /etc/fstab
lrwxrwxrwx 1 root root 10 May 12 09:37 issue -> /etc/issue
上图我们可以看出软链接与硬链接有着根本的不同:
1 可以对目录和文件做软链接
2 可以跨文件系统
3 创建链接时,链接计数不会增加
4 删除链接并不影响被指定的文件,弱删除原文件,则软链接则不可用
inode
解决inode爆满问题
一般inode爆满情况就较为严重了,程序运维会有问题,会报磁盘无空间 No space left on device。所以做好监控非常重要。
线上服务器inode爆满但是磁盘空间还有很大是什么原因呢?其实就是小文件太多了,占用了所在磁盘的所有元数据空间,解决方案就是删除这么小文件或者mv 掉这些小文件
如何排查哪个目录占用inode多少了 可以用 df -i
如果删除 直接用 rm -rf xxx 基本是行不通的 会报 Argument list too long 问题,就是要删除的文件太多了。
我一般会用
find . -ctime +7 --iname "*" | xargs rm -rf {}
大概解释一下这个命令,删除当前目录下 7天前所有数据,如果还有 Argument list too long问题,就把时间适当调前一些,比如30天前 -ctime +30
或者如果你发现是og文件等等的一个大文件,并且它处于被进程打开的状态下,你直接删除后是释放不了空间的,你可以这样做
> FILE
这样做即使有进程正在打开,也会立即释放空间
inode 是什么?
我们都知道一个文件是由数据和元数据组成,文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文名叫“索引节点”
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。
[root@centos6 data]#df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda2 6406144 134099 6272045 3% /
tmpfs 125377 4 125373 1% /dev/shm
/dev/sda1 65536 38 65498 1% /boot
/dev/sda3 3203072 15 3203057 1% /data
/dev/sr0 0 0 0 - /media/CentOS_6.10_Final
由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件。
会报磁盘空间已满的错误 No space left on device
/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。
目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。
ls -i命令列出整个目录文件,即文件名和inode号码:
ls -i /etc
如果要查看文件的详细信息,就必须根据inode号码,访问inode节点,读取信息。ls -l命令列出文件的详细信息。
ls -l /etc
理解了上面这些知识,就能理解目录的权限
目录文件的读权限(r)和写权限(w),都是针对目录文件本身(即不同用户能以什么权限访问操作对该目录文件,例如这里不同用户对tmp目录文件(d可以查出tmp是目录文件,d表示directory,即目录)分别为rwxr-xr-x,第一组的三个字符,即rwx,表示文件拥有者用户的对该文件的读写权限,第二组的三个字符,即r-x,表示文件拥有者用户所在的用户组里的其他用户对该文件的读写权限,第三组的三个字符,即r-x,表示文件拥有者用户所在的用户组以外的用户对该文件的读写权限。一个某个用户下运行的进程访问操作该目录文件只能以该用户所具有的对该目录文件的权限进行操作)。由于目录文件内只有文件名和inode号码,所以如果只有读权限,只能获取文件名,无法获取其他信息,因为其他信息都储存在inode节点中,而读取inode节点内的信息需要目录文件的执行权限(x)。
例如 drwxrwxr-- 2 user_a user_a
目录权限是774 这样除了user_a 用户及user_a所在组用户可以进入到 此目录中,其他用户都不可以进入。
理解inode以及软硬连接,和inode磁盘爆满的解决方案以及文件权限的更多相关文章
- centos磁盘爆满,查找大文件并清理
今天发现vps敲入crontab -e 居然提示 “Disk quota exceeded” 无法编辑.于是"df -h"查了查发现系统磁盘空间使用100%了.最后定位到是/var ...
- inode block 软硬链接
inode block 软硬链接 1 inode 1.1 inode(索引节点)作用 (1)用于存储文件数据属性信息(2)用于存储数据指针信息 1.2 如何产生 格式化时,创建文件系统 1.3 如何查 ...
- 深入理解inode与软硬链接
一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统 ...
- inode,软硬链接
如何查看inode ll -di /boot / /app查看文件和文件夹的inode号 df -i查看挂载点文件夹的inode号 做inode增长实验 创建60万个文件的方法1(效率不高):for ...
- inode、软硬链接
关于inode是什么,可以看这篇文章:http://www.cnblogs.com/adforce/p/3522433.html 如何查看inode ll -di /boot / /app查看文件和文 ...
- Linux文件系统属性和权限概念详解(包含inode、block、文件权限、文件软硬链接等)
Linux中的文件属性 ls -lih 包括:索引节点(inode),文件类型,权限属性,硬链接数,所归属的用户和用户组,文件大小,最近修改时间,文件名等等 索引节点:相当于身份证号,系统唯一,系统读 ...
- 目录、目录项、文件名、inode、软硬链接的关系
对于Unix系列的操作系统,大多都有v节点.但是对于linux来说,只有通用的i节点,却没有v节点. 下面来探讨一下,linux下的i节点. linux中,文件查找不是通过文件名称来查找的.实际上是通 ...
- 软硬连接ln
软硬连接Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引 ...
- linux inode 详解 / 线上inode爆满解决方案
本文大量参考阮一峰大神博客,整理笔记 之所以写inode文章是由于一次线上问题,引发对inode深入的思考. 磁盘的inode监控与磁盘空间的监控同等重要,线上服务器一定要做好磁盘inode与磁盘空间 ...
随机推荐
- {% csrf_token %} 原理和作用 (踩坑必看)
本博客已暂停更新,请转自新博客 https://www.whbwiki.com/320.html 继续阅读 简介 在django中我们需要在templates的form中加入{%csrf_token% ...
- Linux 服务器的基本性能及测试方法
1. 摘要 一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当程序非正常工作 ...
- css书写规范 & 页面布局规范 &常用案例经验总结
CSS 属性书写顺序(重点) 建议遵循以下顺序: 布局定位属性:display / position / float / clear / visibility / overflow(建议 displa ...
- STC单片机控制28BYJ-48步进电机
STC单片机4*4按键控制步进电机旋转 28BYJ-48型步进电机说明 四相永磁式的含义 28BYJ-48工作原理 让电机转起来 最简单的电机转动程序 电机转速缓慢的原因分析 便于控制转过圈数的改进程 ...
- mybatis插入数据时处理为null的属性
在做项目的时候,数据库中的所有字段被设置为全都不能为null,但是在我们开发过程中,插入一些记录的时候,实体类中的一些字段如果页面没有传入,则默认就会被设置为null,这样的话,在执行插入语句的时候, ...
- Python-Unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...
- [loj6033]棋盘游戏
将棋盘黑白染色,即构成一张二分图 将状态用一张二分图$G$和一个点$x\in V$描述(分别为仍未被经过的点的导出子图和当前棋子所在位置),并称将要移动棋子的一方为先手 结论:先手必胜当且仅当$x$一 ...
- [cf587D]Duff in Mafia
二分最大边权,即有些边强制不能被选 接下来,即任意一点上某两边不能同时被选,以及任意一点上颜色相同的两边必须被选择一条 这些限制都可以用2-sat的形式来描述(强制不能选即连边"选-> ...
- [atARC109E]1D Reversi Builder
归纳每一次操作后必然是两个颜色相同的连续段(即ww...bb...或bb...ww...),对操作的位置分类讨论不难证明正确性 当$c_{1}=c_{n}$,由于端点颜色不会修改,再根据该结论,可以得 ...
- 如何解决 ASP.NET Core 中的依赖问题
依赖性注入是一种技术,它允许我们注入一个特定类的依赖对象,而不是直接创建这些实例. 使用依赖注入的好处显而易见,它通过放松模块间的耦合,来增强系统的可维护性和可测试性. 依赖注入允许我们修改具体实现, ...