2021年的主要战略技术趋势
ext4挂载参数:noatime Linux上对每个文件都记录了3个时间戳 时间戳全称含义atimeaccess time访问时间,就是最近一次读的时间mtimedata modified time数据修改时间,就是内容最后一次改动时间ctimestatus change time文件状态(元数据)的改变时间,比如权限,所有者等
我们编译执行的Make可以根据修改时间来判断是否要重新编译,而atime记录的访问时间其实在很多场景下都是多余的。所以,noatime应运而生。不记录atime可以大量减少读造成的元数据写入量,而元数据的写入往往产生大量的随机IO。 可惜失败了。由于时刻有任务在执行,不太好直接umount或者-o remount,ro,无法在挂载时取消日志。既然取消不了,咱们就让日志减少损耗,就需要修改挂载参数了。 ext4挂载参数: data ext4有3种日志模式,分别是ordered,writeback,journal。他们的差别网上有很多资料,我简单介绍下:
在不需要担心掉电的服务器环境,我们完全可以使用writeback的日志模式,以获取最高的性能。 我猜测ITer使用的默认参数格式化的分区,为其分配了块大小为4K,inode数量达到19660万个且使能了日志。 块大小设为4K无可厚非,适用于当前源文件偏小的情况,也没必要为了更紧凑的空间降低块大小。空闲 inode 达到 14522万,空闲占比达到 73.86%。当前 74% 的空间使用率,inode只使用了26.14%。一个inode占256B,那么10000万个inode占用23.84G。inode 实在太多了,造成大量的空间浪费。可惜,inode数量在格式化时指定,后期无法修改,当前也不能简单粗暴地重新格式化。 我们能做什么呢?我们可以从日志和挂载参数着手优化
日志是为了保证掉电时文件系统的一致性,(ordered日志模式下)通过把元数据写入到日志块,在写入数据后再修改元数据。如果此时掉电,通过日志记录可以回滚文件系统到上一个一致性的状态,即保证元数据与数据是匹配的。然而上文有说,此服务器有备用电源,不需要担心掉电,因此完全可以把日志取消掉。 此服务器主要有两个块设备,分别是 sda和 vda。sda 是常见的 SCSI/IDE 设备,我们个人PC上如果使用的机械硬盘,往往就会是 sda 设备节点。vda 是 virtio 磁盘设备。由于本服务器是 KVM 提供的虚拟机,不管是 sda 还是 vda,其实都是虚拟设备,差别在于前者是完全虚拟化的块设备,后者是半虚拟化的块设备。从网上找到的资料来看,使用半虚拟化的设备,可以实现Host与Guest更高效的协作,从而实现更高的性能。在此例子中,sda 作为根文件系统使用,vda 则是用于存储用户数据,在编译时,主要看的是 vda 分区的IO情况。
vda 使用 ext4 文件系统。ext4 是目前常见的Linux上使用的稳定的文件系统,查看其超级块信息: (编辑:济源站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |