inode

Why is the JDK NIO using so many anon_inode file descriptors?

别来无恙 提交于 2019-12-04 09:39:38
I'm using Sun's JDK 1.6.0_26 and NIO (with Netty) and in lsof I see hundreds of file descriptors that are anon_inode : $ lsof -np 11225 | fgrep -w anon_inode java 11225 nobody 57u 0000 0,9 0 1386 anon_inode java 11225 nobody 61u 0000 0,9 0 1386 anon_inode java 11225 nobody 65u 0000 0,9 0 1386 anon_inode java 11225 nobody 69u 0000 0,9 0 1386 anon_inode java 11225 nobody 73u 0000 0,9 0 1386 anon_inode java 11225 nobody 77u 0000 0,9 0 1386 anon_inode java 11225 nobody 81u 0000 0,9 0 1386 anon_inode java 11225 nobody 86u 0000 0,9 0 1386 anon_inode java 11225 nobody 89u 0000 0,9 0 1386 anon_inode

总结软连接和硬连接区别,并用实例操作说明

◇◆丶佛笑我妖孽 提交于 2019-12-04 04:53:05
软链接   ln -s 原文件 目标文件    特征:1、相当于windows的快捷方式     2、符号链接,所以链接文件大小都很小     3、当运行软连接的时候,会根据链接指向找到真正的文件,然后执行 4、所有链接文件的权限都是777,而真正的权限是由指向的那个文件决定的 5、原文件丢失后,软链接无法访问,会报找不到的错误 6、ls -al ,软连接后面箭头执行的时源文件 硬链接    ln 源文件 目标文件    特征:1、原文件和链接文件的属性完全一样      2、链接文件和源文件的关系类似于:复制+同步更新      3、当原文件丢失,硬链接文件还可以访问      4、不能跨分区,不能针对目录使用      5、原理:原文件和硬链接文件的节点相同的,1个文件名只能对应1个节点号。但是1个节点号能对应多个文件名。所以,他们的属性完全相同,并且修改了其中一个的内容另外一个也会跟着修改。 实例如下: 创建a文件的软连接b,并查看a和软链接文件a.link的inodes、权限、大小,如下: [root@VM_0_15_centos ~]# ln -s a a.link [root@VM_0_15_centos ~]# ll -i total 6728 394681 -rw-r--r-- 1 root root 6888896 Nov 10 21:42 a 394522

linux 增加inode 的方法

假如想象 提交于 2019-12-04 04:49:42
创建文件系统时,可以指定块的大小。如果将来在你的文件系统中是一些比较大的文件的话,使用较大的块大小将得到较好的性能。将ext2文件系统的块大小调整为4096byte而不是缺省的1024byte,可以减少文件碎片,加快fsck扫描的速度和文件删除以及读操作的速度。另外,在ext2的文件系统中,为根目录保留了5%的空间,对一个大的文件系统,除非用作日志文件,5%的比例有些过多。可以使用命令"# mke2fs -b 4096 -m 1 /dev/hda6"将它改为1%并以块大小4096byte创建文件系统。 使用多大的块大小,需要根据你的系统综合考虑,如果系统用作邮件或者新闻服务器,使用较大的块大小,虽然性能有所提高,但会造成磁盘空间较大的浪费。比如文件系统中的文件平均大小为2145byte,如果使用4096byte的块大小,平均每一个文件就会浪费1951byte空间。如果使用 1024byte 的块大小,平均每一个文件会浪费927byte空间。在性能和磁盘的代价上如何平衡,要看具体应用的需要。 第1组命令: mkfs.ext3 -T news /dev/sda5 (指定该分区文件系统的块大小为4096) mkfs.ext3 -b 4096 /dev/sda5 第2组命令: mkfs.ext3 -i 4096 /dev/sda5 (指定每个inode的字节数为4096) mkfs

IO性能篇-学习笔记

混江龙づ霸主 提交于 2019-12-04 04:43:58
(说明:本文是《极客时间-linux性能优化实战》的读书笔记) 问题:磁盘和文件系统的关系? 答:磁盘为系统提供了最基本的持久化存储。 文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构。 文件系统,本身是对存储设备上的文件,进行组织管理的机制。组织方式不同,就会形成不同的文件系统。 问题:索引节点和目录项的功能与关系? 答:Linux 文件系统为每个文件都分配两个数据结构,索引节点(index node)和目录项(directory entry)。 索引节点( inode),用来记录文件的元数据,比如 inode 编号、文件大小、访问权限、修改日期、数据的位置等。索引节点和文件一一对应,它也会被持久化存储到磁盘中,索引节点同样占用磁盘空间。 目录项( dentry),用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项,就构成了文件系统的目录结构。不同于索引节点,目录项是由内核维护的一个内存数据结构,通常也被叫做目录项缓存。 索引节点是每个文件的唯一标志,目录项维护的是文件系统的树状结构。 目录项和索引节点的关系是多对一,可以简单理解为,一个文件可以有多个别名。 问题:linux中文件数据到底是怎么存储的呢? 答:磁盘读写的最小单位是扇区,每个扇区512B. 文件系统把连续的扇区组成逻辑块,每次都以逻辑块为最小单元,来管理数据

How to efficiently monitor a directory for changes on linux?

独自空忆成欢 提交于 2019-12-03 20:10:31
问题 I am working with Magento, and there is a function that merges CSS and Javascript into one big file. Regardless the pros and cons of that, there is the following problem: The final file gets cached at multiple levels that include but are not limited to: Amazon CloudFront Proxy servers Clients browser cache Magento uses an MD5 sum of the concatenated css filenames to generate a new filename for the merged css file. So that every page that has a distinct set of css files gets a proper merged

Is it possible to recreate a file from an opened file descriptor?

心不动则不痛 提交于 2019-12-03 12:18:34
Now, this question may seem weird, and it probably is, but to give some context, I've been reading this to learn about i-nodes in which the author gives an interesting example: { FILE *fp; fp = fopen("some.hidden.file","w"); unlink("some.hidden.file"); /* deletes the filename part */ /* some.hidden.file no longer has a filename and is truly hidden */ fprintf(fp,"This data won't be found\n"); /* access the data part */ /*etc*/ fclose(fp); /* finally release the data part */ } This allows to create a "hidden" temporary file. My question here being: is there any way to recreate a filename that

Linux中的文件

天大地大妈咪最大 提交于 2019-12-03 11:18:29
一般情况下,每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 ..)被格式化为文件系统后,都会有两部份,一部份是iNode,另一部份是Block。Block是用来存储数据用的,而iNode就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。 在 Linux 中的文件系统中,文件 = N(N>=1)个 inode + M(M>=1)个数据块。 数据块,存放文件的内容数据,数据块的数目根据文件内容的大小而定。 inode 称为信息节点、索引节点、i 节点。其作用有二: 1、存储跟文件相关的属性信息,如修改时间、所有者、文件类型和文件长度,注意这些信息里并没有文件名; 2、存储指向文件内容数据块的指针信息。 在一个文件系统中,一个 inode 代表一个文件,并使用一个整数值来标志该 inode,称为 inode-number,该值对于一个文件系统而言是唯一的,即通过该值可以找到其对应的 inode。一般情况下,一个文件只有一个 inode 信息用来描述它。 综上所述,假设 Linux 系统中有一个文件 a,则该文件在文件系统层面上,可以抽象表示为下图(超级块描述文件系统本身的信息): 下面通过一个程序来获取某个文件的inode信息: /* * 文件名:filstat.c * 描述: 打印指定文件名的inode信息 */ #include<stdio

整理

梦想与她 提交于 2019-12-03 08:07:24
操作系统 1. 进程与线程的本质区别、以及各自的使用场景 答:进程是操作系统分配资源的基本单位,线程是cpu调度的基本单位。 线程非共享的,errno变量,独立的栈空间,未决信号集,寄存器和栈指针(指向内核栈) 线程的优点: 通信方便(socket,fifo,pipe,mmap,消息队列),共享数据方便 开销小,提高了程序的并发性 线程的缺点: 库函数调用,并不稳定,对信号不友好(信号的处理方式是共享的),调试困难,不支持gdb 各自的使用场景: 线程:在等待I/O的时候,可以交给一个线程去做,继续去做别的事情 进程:需要安全稳定的时候使用线程,虽然创建一个进程的花费比线程一个大 2. 线程可以看做寄存器和栈的集合,这句话怎么理解? 答: 首先,从内核的角度来看,线程和进程是类似的,都拥有独立的pcb。但是每个线程都有各自的任务需要去执行,这些都保存在各自的寄存器和栈中。在线程中调用函数的时候,是通过栈帧结构实现的。调用函数的时候,将 函数参数,返回地址,ebp指针,esp指针压入栈中进行保存。然后移动ebp指针和esp指针重新为函数创建一个栈帧结构。 因为ebp指针和sep指针的值是储存在寄存器中,并且函数运行空间的申请,参数,函数地址的保存等需要通过栈来实现,所以,线程可以看做寄存器和栈的集合 3. 线程号和线程ID的区别? 线程号是cpu分配时间轮片的依据

What is the fastest way to find all the file with the same inode?

大兔子大兔子 提交于 2019-12-03 07:42:42
问题 The only way I know is: find /home -xdev -samefile file1 But it's really slow. I would like to find a tool like locate . The real problems comes when you have a lot of file, I suppose the operation is O(n). 回答1: Here's a way: Use find -printf "%i:\t%p or similar to create a listing of all files prefixed by inode, and output to a temporary file Extract the first field - the inode with ':' appended - and sort to bring duplicates together and then restrict to duplicates, using cut -f 1 | sort |

[转帖]【mount】Linux根目录空间不足

心已入冬 提交于 2019-12-03 01:18:52
【mount】Linux根目录空间不足 2019.04.15 21:30:47字数 1094阅读 107 一、问题背景 一台数据库服务器,突然监控告警,报根目录空间不足(no space left on device),登录机器初步查看,发现根目录确实满了。 # df -hT 二、问题排查 根目录下包括所有的目录,而有些目录是挂了盘的,这些目录不会占用根目录下的系统磁盘空间。 出现根目录空间不足的情况只要关注那些未挂盘的文件大小,使用du命令查看各个目录的大小(只显示一层目录) # du -h --max-depth=1 / 但是却并没有发现某个目录下有特大的文件存在。 灵机一动,是否有文件已被删除,但是引用该文件的进程仍然活动,导致文件所占磁盘没有被释放。 # lsof | grep deleted 根目录磁盘空间已满,根目录没有大文件,文件如果正在使用的时候被删除,进程可以继续读取文件,文件仍然占用空间,导致文件被删除但是空间未释放。 解决方法是删掉占用文件的进程,但结果中仍然没有发现有大文件。 有没有可能是这台服务器的block虽然还有剩余,但inode已经用满,因此在创建新目录或文件时,系统提示磁盘空间不足? inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是 block