内容目录
innode满了怎么办,蛋疼…..只能转移了
df -h还有空间
df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 26G 12G 69% / tmpfs 31G 0 31G 0% /dev/shm /dev/vdb1 493G 392G 76G 84% /data1 /dev/vdc1 3.9T 1.1T 2.7T 28% /data2
df -i 是我后面mv方案暂停后清理了50W碎文件释放50多W
df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/vda1 2621440 213239 2408201 9% / tmpfs 8115346 2 8115344 1% /dev/shm /dev/vdb1 32768000 32214873 553127 99% /data1 /dev/vdc1 262144000 47467201 214676799 19% /data2
不然的见过就是data1目录明明还有70多G ,但是无法写入了
因为都是日志文件 一个就几kb,三千多万个,写满了innode
科普内容
什么是inode和block? 所谓的inode就是索引节点(index node)的意思,在每一个存储设备被格式化创建文件系统后,所有的文件大致被分为了两部分,分别是inode和block。 其中inode用来存储文件属性信息,其中包括了文件大小,文件的归属者,文件的归属组,权限,类型,修改时间,以及指向文件实体数据(block)的指针。 block中存储的就是文件的实际数据,比如说,照片,视频,音频等等,但是有一点需要注意!就是inode当中不包含文件名!一个文件的文件名,存储在上级目录的block中! 其实inode和block之间的关系就像是一本书一样,inode是一本书的目录,一本书会有很多内容,一个知识点或者一个故事会占很多页,一个block就相当于书中的一页内容。 所以说一般情况下一个inode会对应一个或多个block。
开始解决问题 原来的磁盘还要用
开始直接使用mv/ 3000w个log文件在/data1/log/ 迁移到4T盘的 /data2/
mv /data1/log /data2/ 执行后发现短时间搞不定,为了防止ssh中断中断执行.我ctrl+z暂停,然后bg拉到后台执行
挂了一个晚上 发现速度不行,而且因为是整个mv,需要全部移动完成innode才会释放,这个目录程序还在跑而且不能停止服务的那种,不然依赖服务的服务全G,只能无奈kill停止,然后mv几个小的子文件文件夹释放了50多innode
然后我想着cp -r 会不会快一点,拿了个10多w子文件夹测试,速度基本一样.
最终方案rsync
rsync -a /data1/log/ /data2/log/
因为可以多线程……同步完之后,直接rm -rf删除
后续未测试方案
读取所有子文件夹,然后批量nohup mv 后台运行….后续有测试在更新
近期评论