libaio

如何提高Linux下块设备IO的整体性能?

冷暖自知 提交于 2020-05-09 21:43:32
编辑手记: 本文主要讲解Linux IO调度层的三种模式:cfp、deadline和noop,并给出各自的优化和适用场景建议。 作者简介: 邹立巍 Linux系统技术专家。目前在腾讯SNG社交网络运营部 计算资源平台组,负责内部私有云平台的建设和架构规划设计。 曾任新浪动态应用平台系统架构师,负责微博、新浪博客等重点业务的内部私有云平台架构设计和运维管理工作。 IO调度发生在Linux内核的IO调度层。这个层次是针对Linux的整体IO层次体系来说的。从read()或者write()系统调用的角度来说,Linux整体IO体系可以分为七层,它们分别是: VFS层: 虚拟文件系统层。由于内核要跟多种文件系统打交道,而每一种文件系统所实现的数据结构和相关方法都可能不尽相同,所以,内核抽象了这一层,专门用来适配各种文件系统,并对外提供统一操作接口。 文件系统层: 不同的文件系统实现自己的操作过程,提供自己特有的特征,具体不多说了,大家愿意的话自己去看代码即可。 页缓存层:负责真对page的缓存。 通用块层: 由于绝大多数情况的io操作是跟块设备打交道,所以Linux在此提供了一个类似vfs层的块设备操作抽象层。下层对接各种不同属性的块设备,对上提供统一的Block IO请求标准。 IO调度层 :因为绝大多数的块设备都是类似磁盘这样的设备

BlueStore源码分析之事物状态机

放肆的年华 提交于 2020-05-08 22:35:49
前言 BlueStore可以理解为一个支持ACID的本地日志型文件系统。所有的读写都是以 Transaction 进行,又因为支持覆盖写,所以写流程设计的相对复杂一些,涉及到一系列的状态转换。我们着重分析一下状态机、延迟指标以及如何保证IO的顺序性和并发性。 目录 状态机 延迟分析 IO保序 线程队列 IO状态 最后YY 状态机 queue_transactions queue_transactions 是ObjectStore层的统一入口,KVStore、MemStore、FileStore、BlueStore都相应的实现了这个接口。 state_t state 变量记录了当前时刻事物处于哪个状态。在创建TransactionContext的时候会将 state 初始化为 STATE_PREPARE ,然后在 _txc_add_transaction 中会根据操作码类型(opcode)进行不同的处理。同时会获取PG对应的OpSequencer(每个PG有一个OpSequencer)用来保证PG上的IO串行执行,对于deferred-write会将其数据写入RocksDB(WAL)。 以下阶段就进入BlueStore状态机了,我们以写流程为导向分析状态机的每个状态。 STATE_PREPARE 从state_prepare开始已经进入事物的状态机了。这个阶段会调用 _txc_add

分布式存储Ceph之PG状态详解

可紊 提交于 2020-05-07 19:30:02
1. PG介绍 这次主要来分享Ceph中的PG各种状态详解,PG是最复杂和难于理解的概念之一,PG的复杂如下: 在架构层次上,PG位于RADOS层的中间。 a. 往上负责接收和处理来自客户端的请求。 b. 往下负责将这些数据请求翻译为能够被本地对象存储所能理解的事务。 是组成存储池的基本单位,存储池中的很多特性,都是直接依托于PG实现的。 面向容灾域的备份策略使得一般而言的PG需要执行跨节点的分布式写,因此数据在不同节点之间的同步、恢复时的数据修复也都是依赖PG完成。 2. PG状态表 正常的PG状态是 100%的active + clean, 这表示所有的PG是可访问的,所有副本都对全部PG都可用。 如果Ceph也报告PG的其他的警告或者错误状态。PG状态表: 3.1 Degraded 3.1.1 说明 降级:由上文可以得知,每个PG有三个副本,分别保存在不同的OSD中,在非故障情况下,这个PG是active+clean 状态,那么,如果PG 的 副本osd.4 挂掉了,这个 PG 是降级状态。 3.1.2 故障模拟 a. 停止osd.1 $ systemctl stop ceph-osd@1 b. 查看PG状态 $ bin/ceph pg stat 20 pgs: 20 active+undersized+degraded; 14512 kB data, 302 GB used

redhat7.6Linux安装Oracle19C完整版教程

坚强是说给别人听的谎言 提交于 2020-05-06 08:08:55
首先安装配置虚拟机,见博客 https://www.cnblogs.com/xuzhaoyang/p/11264563.html 然后配置IP地址,见博客 https://www.cnblogs.com/xuzhaoyang/p/11264573.html 配置本地的yum源,见博客 https://www.cnblogs.com/xuzhaoyang/p/11264584.html 接下来,如果选在在外部Xshell链接Linux操作,可以参见博客 https://www.cnblogs.com/xuzhaoyang/p/11264587.html ,当然也可以在虚拟机里直接使用 (本人推荐使用Xshell还有Xftp链接,这样配置更加快捷方便) 然后在进行验证在Linux下的图形化显示xclock,见博客 https://www.cnblogs.com/xuzhaoyang/p/11264609.html Oracle19C的安装包下载: https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 需要先行自己注册一个账号。 下载完之后的压缩包 接下来,咱们开始进入正题,哈哈 1创建组和用户 /usr/sbin/groupadd -g 54321 oinstall

linux手动安装配置 mysql5.7

北城余情 提交于 2020-04-29 18:55:50
本文原出处地址 https://www.cnblogs.com/mujingyu/p/7689116.html 一、安装前的检查    1.1 检查 linux 系统版本     [root@localhost ~]# cat /etc/system-release       说明:小生的版本为 linux 64位:CentOS Linux release 7.4.1708 (Core)    1.2 检查是否安装了 mysql     [root@localhost ~]# rpm -qa | grep mysql       若存在 mysql 安装文件,则会显示 mysql安装的版本信息         如:mysql-connector-odbc-5.2.5-6.el7.x86_64       卸载已安装的MySQL,卸载mysql命令,如下:         [root@localhost ~]# rpm -e --nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64       将/var/lib/mysql文件夹下的所有文件都删除干净。      细节注意:       检查一下系统是否存在 mariadb 数据库,如果有,一定要卸载掉,否则可能与 mysql 产生冲突。       小生的系统安装模式的是最小安装

CentOS 7 静默安装 Oracle 11g 11.2.0.2 数据库系统(三)

对着背影说爱祢 提交于 2020-04-28 20:38:09
Oracle DataBase 的安装过程: 检查 Oracle 11g 的软件依赖环境 [root@localhost binary]# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel | grep "not installed" package compat-libcap1 is not installed package compat-libstdc++-33 is not installed package gcc is not installed package gcc-c++ is not installed package glibc-devel is not installed package ksh is not installed package libaio-devel is not installed package libstdc++-devel is not installed package sysstat is not

CentOS7中安装MySQL5.7

 ̄綄美尐妖づ 提交于 2020-04-28 08:28:39
安装必要的组件 yum install –y autoconf automake imake libxml2-devel expat-devel cmake gcc gcc -c++ libaio libaio-devel bzr bison libtool ncurses5-devel 下载mysql源安装包 cd / tmp wget http: // dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 安装mysql源 yum -y localinstall mysql57-community-release-el7- 8 .noarch.rpm 检查mysql源是否安装成功 yum repolist enabled | grep " mysql.*-community.* " 如果出现: mysql-connectors-community/x86_64 MySQL Connectors Community 45 mysql -tools-community/x86_64 MySQL Tools Community 59 mysql57 -community/x86_64 MySQL 5.7 Community Server 247 说明mysql源已经安装成功。可以修改 vim /etc/yum

hdparm 命令使用;关闭硬盘 HDD cache; 硬盘读写性能测试;

*爱你&永不变心* 提交于 2020-04-27 17:21:21
最新需要使用硬盘做一些测试,需要使用到hdparm工具,并进行了解,并进行简要记录; hdparm、dd、fio、都是很好的硬盘测试软件;通常使用其对硬盘信息做基本了解; 关闭硬盘写Cache用例: hdparm -W /dev/ sdh # 查看写缓存状态; hdparm -W 0 /dev/ sdh # 关闭Cache,保证数据强一致性;放置断电时数据未落盘; hdparm -W 1 /dev/sdh # 打开 测试磁盘和磁盘缓存读取速度: 查看磁盘信息: fdisk -l /dev/ sdh hdparm /dev/sdh 评估磁盘读取速度: hdparm -t /dev/sdh 评估磁盘缓存读取速度: hdparm -T /dev/sdh 直接测试硬盘的读性能(绕过内核页缓存): hdparm -tT --direct /dev/sdh 顺序写测试: time -p bash -c "dd if=/dev/urandom of=./dd.log bs=1M count=50000" 随机写测试: fio -filename=randw-singlethread -fallocate=none -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=libaio -bs=32k -size=1000M -runtime=30s

CentOS生产环境无网络安装percona-xtrabackup2.4【RPM安装教程】

时光怂恿深爱的人放手 提交于 2020-04-26 18:04:01
  Percona XtraBackup 8.0不支持对在MySQL 8.0之前的版本,Percona Server for MySQL或 Percona XtraDB Cluster中创建的数据库进行备份。由于MySQL 8.0在数据字典,重做日志和撤消日志中引入的更改与以前的版本不兼容,因此Percona XtraBackup 8.0 目前不可能也支持8.0之前的版本。   因为我准备备份生产环境的数据,但是生产环境不能连外网,所以只能先下载rpm包或者源码包进行安装,编译安装太慢了,所以就选择rpm包安装,安装的时候,可能也需要解决依赖的问题,缺什么就下载什么rpm包,这样最好。   授人以鱼不如授人以渔,以下是我的安装步骤,另外,结束时附上我是如何找到这些依赖rpm包。   因为生产环境是mysql5.6的,所以这里演示的是centos6安装percona-xtrabackup-24-2.4.4版本。   CentOS7的percona-xtrabackup2.4.12版本 wget https: // www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm  

安装并配置多实例mysql数据库

。_饼干妹妹 提交于 2020-04-18 17:50:38
一、下载介质 http://mirrors.sohu.com/mysql/ http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.40.tar.gz http://dev.mysql.com/downloads/mysql/ http://ftp.ntu.edu.tw/MySQL/Downloads/ 二、安装mysql需要的依赖包和编译软件 [root@monitor01 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@monitor01 ~]# uname -r 3.10.0-957.el7.x86_64 [root@monitor01 ~]# uname -m x86_64 安装依赖包 [root@monitor01 yum.repos.d]# yum install ncurses-devel libaio-devel cmake gcc gcc-c++ glibc openssl-devel bison-devel autoconf -y [root@monitor01 yum.repos.d]# rpm -qa curses-devel libaio-devel 安装编译mysql需要的软件 [root