理解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与磁盘空间 ...
随机推荐
- electron获取不到remote
electron获取不到remote 问题 // 渲染进程 let remote = require('electron').remote console.log(remote) // undefin ...
- CobaltStrike上线Linux
为获得最佳的阅读体验,请访问我的个人主页: https://xzajyjs.cn/ 在红蓝对抗中,我们常需要对目标进行长时间的控制,cobaltstrike原生对于上线windows比较轻松友好,但如 ...
- css--元素居中常用方法总结
前言 元素居中是日常开发和学习中最常见的问题,同时也是面试中经常考察的知识点,本文来总结一下这方面的知识点. 正文 1.水平居中 (1)子父元素宽度固定,子元素设置 margin:auto,并且子元素 ...
- Mac下Shell脚本使用学习笔记(一)
参考文献 Shell 教程 MAC常用终端命令行 Mac下Shell脚本使用 1.使用终端创建test.sh: (1)进入指定文件夹路径(命令示例:cd Desktop/面向对象程序设计): (2)创 ...
- Django笔记&教程 6-4 forms进阶操作,重写forms方法
Django 自学笔记兼学习教程第6章第4节--forms进阶操作,重写forms方法 点击查看教程总目录 1 - 重写clean方法 在本章第三节中,我们举了个注册学生账号的例子,里面我们使用模型来 ...
- php 变量和数据类型
$ 定义变量: 变量来源数学是计算机语言中能存储计算结果或能表示值抽象概念.变量可以通过变量名访问.在指令式语言中,变量通常是可变的. php 中不需要任何关键字定义变量(赋值,跟Java不同,Jav ...
- Maven 依赖调解源码解析(二):如何调试 Maven 源码和插件源码
本文是系列文章<Maven 源码解析:依赖调解是如何实现的?>第二篇,主要介绍如何调试 Maven 源码和插件源码.系列文章总目录参见:https://www.cnblogs.com/xi ...
- [bzoj1483]梦幻布丁
对于每一个颜色用一个链表存储,并记录下:1.当前某种颜色的真实颜色:2.这种颜色的数量(用于启发式合并的判断):3.当前答案(即有几段),然后对于每一个操作简单处理一下就行了. 1 #include& ...
- jvm的小练习
代码如下: public static void main(String[] args) { byte[] array= new byte[1024*1024]; array=new byte[102 ...
- 一些 tips
在本博客中,一般写题解的题都是我认为比较有价值的题,然而我还做过一些有一定价值,但并没有达到值得写一篇题解的程度,故将这些题目总结出的套路用一句话概括在这里: 当然如果看到我太久不更请在评论区里催我一 ...