当前位置: 首页 > news >正文

360优化大师官方网站asp做的网站后台怎么进去

360优化大师官方网站,asp做的网站后台怎么进去,wordpress免登录支付,建站之星安装说明不知道你有没有遇到过当一个文件夹下文件特别多#xff0c;在下面执行ls命令的时候要等好长时间才能展现出来的问题#xff1f;如果有#xff0c;你有想过这是为什么吗#xff0c;我们该如何解决? 要想深入理解这个的问题产生的原因#xff0c;我们就需要从文件夹占用的磁…不知道你有没有遇到过当一个文件夹下文件特别多在下面执行ls命令的时候要等好长时间才能展现出来的问题如果有你有想过这是为什么吗我们该如何解决? 要想深入理解这个的问题产生的原因我们就需要从文件夹占用的磁盘空间开始讨论了。 欢迎关注微信公众号开发内功修炼 inode消耗验证 在《新建一个空文件占用多少磁盘空间》中我提到了每一个文件会消耗其所在文件夹中的一点空间。文件夹呢其实也一样会消耗inode的。 我们先看一下当前inode的占用情况 # df -i Filesystem Inodes IUsed IFree IUse% Mounted on ...... /dev/sdb1 2147361984 12785020 2134576964 1% /search 再创建一个空文件夹 # mkdir temp # df -i Filesystem Inodes IUsed IFree IUse% Mounted on ...... /dev/sdb1 2147361984 12785021 2134576963 1% /search 通过IUsed可以看到和空文件一样空的文件夹也会消耗掉一个inode。不过这个很小我的机器上才是256字节而已应当不是造成ls命令卡主的元凶。 block消耗验证 文件夹的名字存在哪儿了呢嗯和《新建一个空文件占用多少磁盘空间》里的文件类似会消耗一个ext4_dir_entry_2今天用ext4举例它在linux源码的fs/ext4/ex4.h文件里定义,放到其父目录的block里了。根据这个相信你也很快能想到如果它自己节点下创建一堆文件的话就会占用它自己的block。我们来动手验证一下 # mkdir test # cd test # du -h 4.0K . 这里的4KB就表示消耗掉了一个block。 空文件不消耗block空目录为啥一开始就消耗block了呢那是因为其必须默认带两个目录项.和..。另外这个4K在你的机器上不一定是这么大它其实是一个block size在你格式化的时候决定的。 我们再新建两个空的文件再查看一下 # touch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab # touch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa # du -h 4.0K . 貌似没有什么变化。这是因为 第一、新的空文件不占用block所以这里显示的仍然是目录占用的block。第二、之前文件夹创建时候分配的4KB里面空闲空间还有够放的下这两个文件项 那么我再多创建一些试试动用脚本创建100个文件名长度为32Byte的空文件。 #!/bin/bash for((i1;i100;i)); do filetempDir/$(echo $i|awk {printf(%032d,$0)})echo $filetouch $file done # du -h 12K . 哈哈这时我们发现目录占用的磁盘空间变大了成了3个Block了。当我们创建到10000个文件的时候 # du -h 548K . 在每一个ext4_dir_entry_2里都除了文件名以外还记录着inode号等信息详细定义如下 struct ext4_dir_entry_2 {__le32 inode; /* Inode number */__le16 rec_len; /* Directory entry length */__u8 name_len; /* Name length */__u8 file_type;char name[EXT4_NAME_LEN]; /* File name */ }; 我们计算一下平均每个文件占用的空间548K/1000054字节。也就是说比我们的文件名32字节大一点点基本对上了。 这里我们也领会到一个事实文件名越长在其父目录中消耗的空间也会越大。 本文结论 一个文件夹当然也是要消耗磁盘空间的。 首先要消耗掉一个inode我的机器上它是256字节需要消耗其父目录下的一个目录项ext4_dir_entry_2保存自己inode号目录名。其下面如果创建文件夹或者文件的话它就需要在自己的block里ext4_dir_entry_2数组 目录下的文件/子目录越多目录就需要申请越多的block。另外ext4_dir_entry_2大小不是固定的文件名/子目录名越长单个目录项消耗的空间也就越大。 对于开篇的问题我想你现在应该明白为什么了,问题出在文件夹的block身上。 这就是当你的文件夹下面文件特别多尤其是文件名也比较长的时候它会消耗掉非常多的block。当你遍历文件夹的时候如果Page Cache中没有命中你要访问的block就会穿透到磁盘上进行实际的IO。在你的角度来看就是你执行完ls后卡住了。 那么你肯定会问我确实要保存许许多多的文件我该怎么办? 其实也很简单多创建一些文件夹就好了一个目录下别存太多就不会有这个问题了。工程实践中一般的做法就是通过一级甚至是二级hash把文件散列到多个目录中把单目录文件数量控制在十万或万以下。 ext的bug 貌似今天的实践应该结束了现在让我们把刚刚创建的文件全部删掉再看一下。 # rm -f * # du -h 72K . 等等什么情况文件夹下的文件都已经删了该文件夹为什么还占用72K的磁盘空间 这个疑惑也伴随了我很长时间后来才算是解惑。问题关键在于ext4_dir_entry_2中的rec_len。这个变量存储了当前整个ext4_dir_entry_2对象的长度这样操作系统在遍历文件夹的时候就可以通过当前的指针加上这个长度就可以找到文件夹中下一个文件的dir_entry了。这样的优势是遍历起来非常方便有点像是一个链表一个一个穿起来的。 但是如果要删除一个文件的话就有点小麻烦了当前文件结构体变量不能直接删否则链表就断了。 Linux的做法是在删除文件的时候在其目录中只是把inode设置为0就拉倒并没有回收整个ext4_dir_entry_2对象。其实和大家做工程的时候经常用到的假删除是一个道理。现在的xfs文件系统好像已经没有这个小问题了但具体咋解决的暂时没有深入研究如果你有答案欢迎留言 欢迎关注微信公众号开发内功修炼
http://www.sczhlp.com/news/245545/

相关文章:

  • 企业管理咨询网站湖州市吴兴区建设局网站
  • 如何做2级网站网页鉴赏
  • 看网站搜什么关键词一号网站建设
  • 广州网站建设出名 乐云践新哪个网站可以做行测题目
  • 西安看个号网络科技有限公司成都网站seo分析
  • PHP 结合 Tesseract OCR 解析验证码
  • UML图以及设计模式部分总结
  • 数字识别(非汉字版)
  • 先申请域名后做网站申请备案 关网站
  • 高校网站开发企业在建设银行网站怎么发工资
  • 婚纱网站制作wordpress中文安装
  • 做网站硬件工程是什么唯美音乐图文网站建设
  • 郑州中小企业网站制作在哪个公司建设网站好
  • 网站首页欣赏html5导航网站源码
  • wordpress是建站工具 还是语言中国互联网电视app下载安装
  • 国内有做外汇的正规网站吗国际空间站vs中国空间站
  • 网络营销的分类商丘 峰少 seo博客
  • wordpress网站空间做外包公司去哪找业务
  • 河北省住房城乡建设厅网站重庆定制网站建设公司
  • 金融门户网站建设网站制作的核心是什么
  • 网站tdk设置界面api in wordpress
  • 快速做网站服务好明天上海全面封控5天
  • 优秀策划设计网站徐州软件外包
  • 做网站上传电子书建设网站赚钱吗
  • 任丘网站优化html网页制作平台
  • 宾县建设局网站手机商城网站建设设计方案
  • 世界动画专业大学排名前十强seo查询系统
  • 电子商务网站建设实训展示关键词优化易下拉效率
  • 网站大改版怎么免费申请个人网站
  • 公司网站域名是什么广西住房和城乡建设厅网站首页