理解Linux的软硬链接

创建硬链接的命令

  1. [root@centos6 data]#ln /data/f1 /data/f2
  2.  
  3. [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号的文件

创建软链接的命令

  1. [root@centos6 tmp]#ln -sv /etc/fstab /data/fstab
  2. `/data/fstab' -> `/etc/fstab'
  3. [root@centos6 tmp]#ln -sv /etc/issue /data/issue
  4. `/data/issue' -> `/etc/issue'
  5.  
  6. lrwxrwxrwx 1 root root 10 May 12 09:35 fstab -> /etc/fstab
  7. 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 问题,就是要删除的文件太多了。

我一般会用

  1. find . -ctime +7 --iname "*" | xargs rm -rf {}

大概解释一下这个命令,删除当前目录下 7天前所有数据,如果还有 Argument list too long问题,就把时间适当调前一些,比如30天前 -ctime +30

或者如果你发现是og文件等等的一个大文件,并且它处于被进程打开的状态下,你直接删除后是释放不了空间的,你可以这样做

  1. > FILE

这样做即使有进程正在打开,也会立即释放空间

inode 是什么?

我们都知道一个文件是由数据和元数据组成,文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文名叫“索引节点”

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。

  1. [root@centos6 data]#df -i
  2. Filesystem Inodes IUsed IFree IUse% Mounted on
  3. /dev/sda2 6406144 134099 6272045 3% /
  4. tmpfs 125377 4 125373 1% /dev/shm
  5. /dev/sda1 65536 38 65498 1% /boot
  6. /dev/sda3 3203072 15 3203057 1% /data
  7. /dev/sr0 0 0 0 - /media/CentOS_6.10_Final

由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件。
会报磁盘空间已满的错误 No space left on device

/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。

目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。

ls -i命令列出整个目录文件,即文件名和inode号码:

  1. ls -i /etc

如果要查看文件的详细信息,就必须根据inode号码,访问inode节点,读取信息。ls -l命令列出文件的详细信息。

  1. 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磁盘爆满的解决方案以及文件权限的更多相关文章

  1. centos磁盘爆满,查找大文件并清理

    今天发现vps敲入crontab -e 居然提示 “Disk quota exceeded” 无法编辑.于是"df -h"查了查发现系统磁盘空间使用100%了.最后定位到是/var ...

  2. inode block 软硬链接

    inode block 软硬链接 1 inode 1.1 inode(索引节点)作用 (1)用于存储文件数据属性信息(2)用于存储数据指针信息 1.2 如何产生 格式化时,创建文件系统 1.3 如何查 ...

  3. 深入理解inode与软硬链接

    一.inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统 ...

  4. inode,软硬链接

    如何查看inode ll -di /boot / /app查看文件和文件夹的inode号 df -i查看挂载点文件夹的inode号 做inode增长实验 创建60万个文件的方法1(效率不高):for ...

  5. inode、软硬链接

    关于inode是什么,可以看这篇文章:http://www.cnblogs.com/adforce/p/3522433.html 如何查看inode ll -di /boot / /app查看文件和文 ...

  6. Linux文件系统属性和权限概念详解(包含inode、block、文件权限、文件软硬链接等)

    Linux中的文件属性 ls -lih 包括:索引节点(inode),文件类型,权限属性,硬链接数,所归属的用户和用户组,文件大小,最近修改时间,文件名等等 索引节点:相当于身份证号,系统唯一,系统读 ...

  7. 目录、目录项、文件名、inode、软硬链接的关系

    对于Unix系列的操作系统,大多都有v节点.但是对于linux来说,只有通用的i节点,却没有v节点. 下面来探讨一下,linux下的i节点. linux中,文件查找不是通过文件名称来查找的.实际上是通 ...

  8. 软硬连接ln

    软硬连接Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引 ...

  9. linux inode 详解 / 线上inode爆满解决方案

    本文大量参考阮一峰大神博客,整理笔记 之所以写inode文章是由于一次线上问题,引发对inode深入的思考. 磁盘的inode监控与磁盘空间的监控同等重要,线上服务器一定要做好磁盘inode与磁盘空间 ...

随机推荐

  1. 直播预告 | 猪齿鱼V1.1发布,线上新功能详解邀您参加

    2021年11月11日,数智化效能平台猪齿鱼 Choerodon发布 V1.1版本,多项功能新增或优化,多管齐下,全面提升团队工作效能! 通过提供体系化方法论和协作.测试.DevOps及容器工具,猪齿 ...

  2. 菜鸡的Java笔记 类图

    类图        1.如何实现类图的描述        2.时序图的使用                    从实际i的开发标准:应该在项目编写钱设计类图        而现在的开发大部分情况下, ...

  3. 面霸篇:Java 集合容器大满贯(卷二)

    面霸篇,从面试角度作为切入点提升大家的 Java 内功,所谓根基不牢,地动山摇. 码哥在 <Redis 系列>的开篇 Redis 为什么这么快中说过:学习一个技术,通常只接触了零散的技术点 ...

  4. shuffle.java

    /************************************************************************* * Compilation: javac Shuf ...

  5. [cf700D]Huffman Coding on Segment

    令$tot_{i}$为区间$[l,r]$中满足$a_{j}=i$的$j$的个数,将所有非0的$tot_{i}$取出,得到可重集$S$ 显然,有以下贪心:不断取出$S$中最小的两个元素,删除这两个元素并 ...

  6. [cf461E]Appleman and a Game

    考虑我的每一次添加操作,要满足:1.该串是t的子串:2.该串不能与下一次的串开头字母构成t的子串.那么,设f[i][j][k]表示拼i次,第i次填入的开头字母是j,第i+1填入的开头字母是k的最短长度 ...

  7. [cf674E]Bear and Destroying Subtrees

    令$f_{i,j}$表示以$i$为根的子树中,深度小于等于$j$的概率,那么$ans_{i}=\sum_{j=1}^{dep}(f_{i,j}-f_{i,j-1})j$ 大约来估计一下$f_{i,j} ...

  8. dart系列之:在dart中使用数字和字符串

    目录 简介 数字 字符串 StringBuffer 总结 简介 要想熟悉一种语言,最简单的做法就是熟悉dart提供的各种核心库.dart为我们提供了包括dart:core,dart:async,dar ...

  9. uni-app开发 uni.scss 样式的整体化设置

    今天在写uni-app设计的时候,界面图片.图标规格一直无法正常显示.查看了uni-app官网的代码注释后,发现了在style中设置<style lang="scss"> ...

  10. MYSQL免安装

    MYSQL免安装 本文使用mysql 8.0.22进行演示 一.MYSQL 下载 [x] 官网下载:地址:https://dev.mysql.com/downloads/mysql/ [x] 百度云盘 ...