调优之文件调优
来源:互联网 发布:淘宝食品主图 编辑:程序博客网 时间:2024/05/01 13:04
08 Tunning Filesystem
文件系统调优
==================================================================================
一、了解文件系统
VFS虚拟文件系统
虚拟文件系统向系统调用屏蔽了不同底层文件系统的差异 用户执行一个操作 系统调用 访问的是系统调用
EXT3 Pros & Cons 利与弊
- Repair (fsck) 时间非常长
- 最大支持16TB
EXT4 Pros & Cons 利与弊
- Extent4 使节点表有了非常大的收缩,使节点表访问非常有效。相当于内存普通page和大页
- Extent4 不兼容EXT3, EXT2
- Faster fsck time (较ext3,速度提高10倍)
- Delayed allocation(尽量滞后写,不会立即fsync() )
- 支持更大的文件系统及单个大的文件
- 最大支持RHEL6 16TB,RHEL7 50TB
XFS Pros & Cons
- 针对大存储,性能非常优异
- RHEL7 支持 500TB
- RHEL6 用的太少, RHEL7 默认使用
- 对于大量的小文件,XFS不适合
BTRFS,从甲骨文公司推出的文件系统
- 内部就可以实现RAID和snapshot
- 对于元数据和用户数据的保护是非常强的
- 支持动态拉伸和缩小
- RHEL6 Tech preview技术预览,不支持生产环境
- RHEL7 Tech preview技术预览,作为XFS 备选方案
二、文件系统日志功能 (EXT3/EXT4/XFS)
File System Journaling 文件系统日志
- 日志使恢复提速(并非对数据的恢复)
- 日志可以保证文件系统的完整性
在写数据的时候如果超级块跟后端的实际inode和block块不一致导致文件系统操作 开机会全盘修复检查
写数据先写日志区 写入元数据 再写实际数据到文件系统 最后删除日志区源数据
断电 使用日志区比对
日志记录的三种模式
- data=ordered Default,仅记录meta data到journal,而且当所有data被flushed to disk后commit
- data=writeback 仅记录metadata,速率快,但一旦发送crash 不等数据写完到文件返回
- data=journal 写两份,文件meta data和block area都记录到journal,仅适合于大量小数据存储
External Journaling 外部日志 额外找磁盘存放日志
# mkfs.ext4 -O journal_dev -b 4096 /dev/vdb1 格式化为日志设备 -b块设备 常规日志和文件系统在同一个分区
# mkfs.ext4 -J device=/dev/vdb1 -b 4096 /dev/vda3 日志设备和常规文件的block size要相同
# blkid
/dev/vdb1: UUID="b1615781-00c9-4b54-96f9-2f84f0f47ed4" TYPE="jbd"
/dev/vda3: UUID="5a5cc225-ab89-4d36-a214-c7a458384da4" EXT_JOURNAL="b1615781-00c9-4b54-96f9-2f84f0f47ed4
修改文件系统和日志块大小 保持一致
External Journaling on Existed Partition
# tune2fs -l /dev/vda1 检查文件系统的块尺寸
Block size: 1024
# mkfs.ext4 -O journal_dev -b 1024 /dev/vdb2 必须和前面检查的文件块大小一致
# umout /dev/vda1
# tune2fs -O '^has_journal' /dev/vda1 移出存在的日志设备
# tune2fs -j -J device=/dev/vdb2 /dev/vda1 增加新的日志设备
# mount /dev/vda1
可以拿boot分区测试
三、挂载选项调优
========================================================
扩展知识:Relatime 驱动器访问优化 RHEL6开始 延迟更新
atime会大量消耗I/O
POSIX 标准要求操作系统维护记录每个文件最后一次被访问的文件系统元数据。这个时间戳被称为atime,
维护它需要一个重复的对存储的写入操作。这些写入操作让存储是设备及其连接保持忙碌和通电状态。因
为很少应用程序会使用 atime 数据, 所以这个存储设备活动是在浪费电力。特别是即使没有从存储中读取
该文件也会发生写入存储的事件,但是从缓冲中写入。有时,Linux 内核还支持 mount 的 noatime选项,并
不在使用此选项挂载的文件系统中写入 atime。但是只是关闭这个特性是有问题的,因为有些应用程序会依
赖 atime 数据,并在此数据不可用时失败。
红帽企业版 Linux 6 使用的内核之后此另一个可替换选项 -relatime。Relatime 维护 atime数据,但不是
每次访问该文件时都更改。启用这个选项,则只在上次更新 atime(mtime)后修改该文件时, 或者最后一次
访问该文件是在相当长一段时间前(默认为一天)时才会将 atime 数据写入磁盘。
什么时候更新atime,满足以下条件之一:
1. 修改文件时
2. 最后一次访问文件后,超过一天
默认情况下,所有现在挂载的文件系统都启用 relatime。要在整个系统中限制这个特性,请使用 boot 参
数 default_relatime=0。如果默认在某个系统中启用 relatime, 您可以通过使用选项 norelatime
挂载某个系统来限制它在某个具体文件系统中的使用。最后,要使系统更新文件的 atime 数据的默认周期
有所不同,请使用 relatime_interval= 引导参数,以秒为单位指定周期。默认值为 86400。 grub中给内核传参
========================================================
四、增加预读机制
[root@uplook ~]# blockdev --getra /dev/sda
256
[root@uplook ~]# blockdev --setra 512 /dev/sda 设置预读值
[root@uplook ~]# blockdev --getra /dev/sda
512
[root@uplook ~]# echo "blockdev --setra 512 /dev/sda" >> /etc/rc.local
五、文件系统碎片 Fragmentation
[root@uplook ~]# e2freefrag /dev/sda1
[root@uplook ~]# filefrag /file
六、RAID优化
Stripe & Stride sizes
七、设置文件系统的block size
block size文件存储在该文件系统上的最小分配单元
不同的系统其有效范围各有不同:上限为主机系统的最大页(page size)大小,下限取决于所使用的文件系统。
# mkfs.ext4 -b 1024 /dev/vdc1
# mkfs.ext4 -b 2048 /dev/vdc1
# mkfs.ext4 -b 4096 /dev/vdc1
不能超过4096 X86_64 内存最大页1024 超过挂载不上
- 调优之文件调优
- JVM性能调优之生成堆的dump文件
- JVM性能调优之生成堆的dump文件
- JVM性能调优之生成堆的dump文件
- JVM性能调优之生成堆的dump文件
- JVM性能调优之生成堆的dump文件
- JVM 性能调优之生成堆的 dump 文件
- JVM性能调优之生成堆的dump文件
- JVM性能调优之生成堆的dump文件
- JVM性能调优之生成堆的dump文件
- JVM性能调优之生成堆的dump文件
- JVM性能调优之生成堆的dump文件
- 《MYSQL性能调优与架构设计》第二章 MYSQL架构组成-- mysql物理文件组成之 日志文件
- oracle笔记整理15——性能调优之trace文件跟踪
- mark JVM性能调优之生成堆的dump文件
- 文件之索引文件
- nginx.conf文件详解及调优
- 性能调优-跟踪文件
- mysql在linux下的安装
- 【Python】Python学习笔记(一)——urllib类库基础
- JAVA单例模式
- Composer自动加载机制
- iOS 发送位置消息
- 调优之文件调优
- Android 一步步搭建MVP+Retrofit+RxJava网络请求框架
- bem(block,element,modifier)块,元素,修饰符,前端命名方法CSS 命名方案
- 解决springMVC中 shiro 注解授权失效 的问题
- 继承中的静态成员函数
- C++ Boost Thread
- 2.8.6_通过扩展CanvasRenderingContext2D来绘制虚线
- CAS单点登录(一):前期准备以及为CAS-Server配置SSL协议
- MATLAB中均值、方差、均方差的计算方法