Articles of inode

如何拯救没有空闲inode的服务器(来自DDOS)

我的networking服务器之一是DDOS攻击。 除了有数百万PHP会话文件用完分区的100%inode以外,一切都很好。 整个/分区只有一个分区, 尝试了几个解决scheme,但只是在一定程度上工作。 https://unix.stackexchange.com/questions/37329/efficiently-delete-large-directory-containing-thousands-of-files?newreg=07f276292205457ab9975a0ea68e9273 http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux 释放了8%的inode后,磁盘变得非常缓慢,无法删除更多内容。 rm -f filename* rsync -a –delete empty_dir/ yourdirectory/ perl -e 'for(<*>){((stat)[9]<(unlink))}' 现在磁盘看起来像这样 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/vda1 2621440 2385895 235545 92% / tmpfs 128789 1 128788 1% /dev/shm 目录中仍然有600万个+小文件。 上述方法以约2个文件/秒的速度删除 我读了关于B树重新平衡。 但是,我如何诊断/解决慢速删除问题呢? “`

如何清理未处理的孤立inode列表?

我试图装载一个以前只读的文件系统可读写 : mount -o remount,rw /mountpoint 不幸的是,它没有工作: mount: /mountpoint not mounted already, or bad option dmesg报告: [2570543.520449] EXT4-fs (dm-0): Couldn't remount RDWR because of unprocessed orphan inode list. Please umount/remount instead umount也不起作用: umount /mountpoint umount: /mountpoint: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or […]

如果inode使用率很高,这意味着什么?

经过一些谷歌研究,我发现inode的使用可能与director / files的数量有关。 我猜测有一个限制(因此是什么决定了inode使用率%)。 这个限制是由什么决定的? 如果Inode使用率达到100%会发生什么情况?

XFS上的高目录 – 文件比率的影响

我们正在构build一个可能会产生非常大的XFS卷的产品,并且我正试图发现在给定架构的情况下我们可能遇到的扩展瓶颈。 当我们操作文件时,它们被放置在XFS卷上的目录中。 由于我们处理的文件数量众多,文件数量肯定在数千万之内,而且在发布之后太久之前可能会达到数亿。 我们知道这是因为我们目前的产品是这样的,所以期待我们的下一个产品是类似的。 因此,正确的早期工程是有序的。 本周这些文件基于以下粗略布局: $ProjectID/$SubProjectID/[md5sum chunked into groups of 4]/file 其中给出了这样的目录: 0123456/001/0e15/a644/8972/19ac/b4b5/97f6/51d6/9a4d/file 分块md5sum的原因是为了避免“一大堆文件/目录在一个目录中”的问题。 由于md5sum分块,这意味着1个文件导致8个目录被创build。 这对inode有着非常明显的影响,但我不清楚一旦我们达到规模,对XFS的影响会是什么。 有什么影响? 顺便说一下,这是内核2.6.32,目前CentOS 6.2(如果需要可以更改)。 在testing中,我已经创build了默认的xfs卷,并没有使用任何安装选项。 这是为了早日排除问题。 因为我们不需要它,所以noatime是一件简单的事情。 总体来说,XFS调整是我需要解决的另一个问题,但现在我担心我们现在devise的元数据乘数效应。 我已经知道一个更好的解决scheme将是什么,我只是不知道是否有案件推动改变。 由于md5sums在第一个数字中是非常独特的,单个子项目很less超过500万个文件,所以在我看来,我们只需要前两个数据块。 这将产生如下的布局: 0123456/001/0e15/a644/897219acb4b597f651d69a4d/file 完全完整的第一级和第二级将在每个第一级目录中具有2 16个第一级目录和2 16个第二级目录,卷上总共有2 32个目录。 因此假设的5百万个文件子项目因此将具有2 16个第一级目录,每个大约76(+/- 2)个二级目录以及每个第二级目录中的一个或两个第三级目录。 这种布局有更多的元数据效率。 我只是不知道是否值得努力改变现在的情况。

诊断Linux上的孤立节点的原因,繁忙的MySQL?

我们的其中一台服务器最近经历了一些文件系统损坏,我们的根文件系统被自动重新安装为只读。 我采取的步骤是: 试图remount > mount -n -o remount /失败 重新启动服务器 被提示执行手动fsck ,有5个孤立的inode需要修复。 执行完这些步骤之后,我能够获得访问权限,并且文件系统可以再次写入。 不幸的是,我没有任何信息logging,因为没有任何logging,或者我会包括这些logging。 原因之一是我们的数据库太忙,无法正确地将数据写入磁盘,这就造成了这个问题,高水平的高速caching被用来表明这可能是这种情况。 不过,我不确定这是因为虽然caching很高,我们根本不使用交换(下面的free输出)。 $ free -m total used free shared buffers cached Mem: 2041 1879 162 0 62 1599 -/+ buffers/cache: 216 1825 Swap: 471 0 471 发生故障后有什么办法可以诊断? MySQL看起来像一个可能的候选人吗? 如果没有的话,如果再发生这种情况,我还有什么要做的?

Linux目录大小/块数的单调增长

在Linux上(可能是作为文件系统块大小的函数),当我创build一个目录并对其进行stat时,它将返回4096的大小。我可以在这个目录中创build文件,直到一个点,而不增加感知的大小该目录(由stat报告)。 在某些时候,由于目录填满了许多文件,目录大小的气球(我不是在谈论目录的内容,我正在谈论代表目录本身消耗的块)。 如果文件被删除,目录大小保持不变。 这里有一个简单的例子: [root@uxlabtest:/]$ mkdir test [root@uxlabtest:/]$ stat test File: `test' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd00h/64768d Inode: 1396685 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-07-26 14:06:04.000000000 -0400 Modify: 2011-07-26 14:06:04.000000000 -0400 Change: 2011-07-26 14:06:04.000000000 -0400 然后触摸一堆文件: [root@uxlabtest:/]$ for i in `seq 1 […]

ext4:耗尽inodes

我用完inode。 只有11%可用: the-foo:~ # df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/system-home 9830400 8702297 1128103 89% /home 有没有办法解决这个问题,而不创build和复制到一个新的分区? 细节: the-foo:~ # tune2fs -l /dev/mapper/system-home tune2fs 1.42.6 (21-Sep-2012) Filesystem volume name: <none> Last mounted on: /home Filesystem UUID: 55899b65-15af-437d-ac56-d323c702f305 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index […]

设备错误没有剩余空间,但是df报告有更多可用空间

我的Debiannetworking服务器上使用Apache2与mod_php PHP会话似乎是随机失败,说没有空间来写他们: sudo tail -60 /var/log/apache2/error.log [Fri Jan 30 15:55:35 2015] [error] [client xxx.xxx.xxx.xxx] PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: open(/tmp/sess_555555555555555555, O_RDWR) failed: No space left on device (28) in /path/to-first-session-use/core/bootstrap.php on line 18 当我尝试: ls /tmp 它只是永远挂起,所以这是不好的。 但是,当我检查可用空间,并检查inode的使用是否合理… $ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 150G 121G 22G 85% / tmpfs […]

我可以在Linux中增加inode计数吗?

我有一个2.4.17内核的Linux MIPS路由器。 根fs是一个tmpfs和/ rom是一个cramfs。 tmpfs上有4MB可用内存和3MB空闲空间。 我可以创build一些新的空文件,但接下来的文件会以“空间不足”失败。 但是,我可以将1MB的数据附加到现有文件。 所以我的麻烦是inode计数。 和我的问题: 有没有办法dynamic增加inode? 如果我不能dynamic增加它 – 我在哪里可以增加内核源代码?

Linux:为什么要改变inode的大小?

Tune2fs允许将inode大小从默认值(ext3上的128个字节,ext4上的256个字节)更改为几乎任何值,但应该是2的幂。 更改默认inode大小的原因是什么? 这里写的是可以这样做,以便能够在inode中存储ACL属性。 还有什么可以存储在一个inode? 现代高容量硬盘(2TB以上)的inode尺寸有没有增加的理由?