标签:har for 不可 device 上传 cto window net clean
linux下用df命令查看磁盘空间和inode占用情况,网上一大堆。我比较喜欢用的是df -h 查看容量,df -ihT 查看inode和文件系统类型。
那么什么是inode呢?
简单的就是存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。可以用stat +文件名来查看
linux下inode和文件名是分离的,所以cp或者mv文件,只改变了文件名,但是他的inode不会变。有时候,文件名包含特殊字符,没办法用rm删除(用转义符号也没用),这时候可以直接删除inode节点
比如:我们在windows上传了一个带有特殊符号的文件,比如
首先用ls -il命令查看其inode,
然后使用命令find ./ -inum 36175886 -exec rm -i {} \;(使用find命令在当前目录下查找inode是36175886 的文件,将其作为参数传给rm命令,参数位置在{}里,以\;表示结束)。
当然,有时候还可以用双引号将要删除的文件名括起来。
好了,回到创建文件过多的情况。这时候,创建文件也出错No space left on device,用vim打开文件也出错E138: Can‘t write viminfo file,只能删除了。
警惕inode用光
[root@localhost tmp]# fdisk -l Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 978 7855753+ 83 Linux /dev/sda2 979 1043 522112+ 82 Linux swap / Solaris
來 源: freebsd.csie.nctu.edu.tw 檔 名: 0/System/inode(使用 70 埠) 標 題: 關 inode - About inode From: unixer.bbs@bbs.ee.ncku.edu.tw (優客李林) Newsgroups: tw.bbs.comp.386bsd Subject: 有關 inode... Date: 9 Dec 1996 08:27:00 GMT Hi... 由做過一些有關 filesystem 的 study, 在這邊對 inode 做一點說明... 1. inode 是作甚的? 一個 filesystem 可以粗略地分成 inode table 與 data area 兩部份. inode table 上有許多的 inode, 每個 inode 分別 記錄一個檔案的屬性, 與這個檔案分布在哪些 datablock 上 2. 一個 inode 有多大呢? 128 byte! 3. inode 和 data area 的關系 在 new filesystem 時, 通常會有一個參數, 用來描述要分配多少比例的空間給 inode table. 舉例來說, newfs -i 2048 是指 file system 中, 每分配 2048 byte 給 data area, 就分配一個 inode 但是一個 inode 就並不是一定就用掉 2048 byte, 也不是說 files allocation 的最小單位是 2048 byte, 它僅僅只是代表 filesystem 中 inode table/data area 分配空間的比例是 128/2048 也就是 1/16 (換個角度想, 我們可以想成是預估 filesystem 中 file 平均大小是 2048 byte) 如果 inode table 太小, 那在每個檔案都很小的時候, 就會發生 inode 用光 而 datablock 還剩一堆的情形. 4. file allocation 的最小單位 和 inode 多少有沒有關系呢? 沒有關系! FFS 中真正的最小單位是 fragment size 也就是我們在 new filesystem 時用的 newfs -b 8192 -f 1024 ^^^^^^^^ ps: -b 8192 代表 blocksize=8192, 這種"較大單位"是用來加速大檔案的存取用的 在 FreeBSD 中, 內定的是 -i 4096 -b 8192 -f 1024. 如果您要架 bbs/new 的話 可以考慮用 -i 1024 -b4096 -f1024 unixer ============================================================================ From: alexj@mail.tmc.edu.tw (Ji, Wen-Jie) Newsgroups: tw.bbs.comp.386bsd Subject: Re: HELP !! The parameter of newfs Date: Thu, 12 Dec 1996 01:39:31 GMT 沒關系,我自己找到答案了,寫在此讓大家分享一下. 所謂 block size & fragment size, 這是屬 file system 的一種解決方案. 自4.3 BSD, BSD 用這種方法來解決檔案 fragment 的問題 先假設 a block size= 4K, a fragment size = 256Bytes. 假如你現在要將一個 1K 的新檔案寫入 file system, FS 會把它存入 4 個fragment,而不會存入 block,一但這個檔案繼續被 append 增加到 4K 時, FS 會將它轉存到一個 block中, 而原來的 16 個fragments 就會被 clean ^^^^^^^^^^^^^^^^^^^^ 因為當你的檔案大到 4K 時,它佔用 了 16 (4K / 256 bytes) 個 fragments 再舉個例子, 如果現在又存了一個新的 4.1K 的檔案, FS 會分配 一個 block 及 4個 fragment 給 這個檔案, 因為 1 block + 4 fragments = 4 K + 256 bytes * 4 = 4.1K 所以,有此可知,對一台 news server, bbs, 或是會有大量的小檔案存取時, 為了降低 FS 的空間耗損率,應該採用 -b 4096 -f 256, 而不要採用預設值的 -b 8192 -f 1024,因為大部分的信件都不超過 512 bytes, 有些更不超過 256 bytes, 但是這樣可能會降低存取的速度.但我相信不嚴重 有興趣的人可以試試. ========================================================================= newfs 時的參數的影響:(以 100MB 的分割去作測試) >From jason@csie.NCTU.edu.tw Fri Mar 14 23:53:58 1997 From: Jason Chang size: 208845 (about 100MB) 參數 可用空間(1K-blocks) 可用 inode (ifree) -i 1024 91525 102397 -i 2048 96661 61437 -i 4096 100501 30717 -i 8192 102421 15357 -i 16384 103381 7677 -i 32768 103861 3837 -i 16384 -b 16384 -f 2048 103316 7677 -i 16384 -b 32768 -f 4096 103104 8189 -i 16384 -b 65536 -f 8192 102808 8189
# 以下内容来自于 proc 的manpage /proc/sys/fs/inode-max This file contains the maximum number of in-memory inodes. On some (2.4) systems, it may not be present. This value should be 3-4 times larger than the value in file-max, since stdin, stdout and network sockets also need an inode to handle them. When you regularly run out of inodes, you need to increase this value. /proc/sys/fs/inode-nr This file contains the first two values from inode-state. /proc/sys/fs/inode-state This file contains seven numbers: nr_inodes, nr_free_inodes, preshrink and four dummy values. nr_inodes is the number of inodes the system has allocated. This can be slightly more than inode- max because Linux allocates them one page full at a time. nr_free_inodes represents the number of free inodes. preshrink is non-zero when the nr_inodes > inode-max and the system needs to prune the inode list instead of allocating more.
# 新文件不能建立 # touch yfang (假设原来没有这个文件) touch: cannot touch `yfang‘: No space left on device ‘ # 临时文件自然也不能创建,可能导致很多连锁问题 # man bash 需要创建临时文件,所以这个命令你不能在正常使用 # 还有很多其他类似的命令,需要创建临时文件的你都没有机会再用了
# 测试开始前 [root@localhost ~]# df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 7609680 2206848 5010048 31% / tmpfs 127852 0 127852 0% /dev/shm [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 7.3G 2.2G 4.8G 31% / tmpfs 125M 0 125M 0% /dev/shm [root@localhost ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 1964160 354166 1609994 19% / tmpfs 31963 1 31962 1% /dev/shm # 实施inode侵占 for((i=1;i<1609990;i++));do touch file$i;done # 强行侵占所有inode后,注意最后df -i的输出 [root@localhost ~]# df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 7609680 2258580 4958316 32% / tmpfs 127852 0 127852 0% /dev/shm [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 7.3G 2.2G 4.8G 32% / tmpfs 125M 0 125M 0% /dev/shm [root@localhost ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 1964160 1964160 0 100% / tmpfs 31963 1 31962 1% /dev/shm
# 信息来自 mke2fs manpage -i bytes-per-inode Specify the bytes/inode ratio. mke2fs creates an inode for every bytes-per-inode bytes of space on the disk. The larger the bytes-per-inode ratio, the fewer inodes will be created. This value gen- erally shouldn’t be smaller than the blocksize of the filesystem, since then too many inodes will be made. Be warned that is not possible to expand the number of inodes on a filesystem after it is created, so be careful deciding the correct value for this parameter.
标签:har for 不可 device 上传 cto window net clean
原文地址:https://www.cnblogs.com/fpcbk/p/13193801.html