博文

目前显示的是 十月, 2022的博文

Linux虚拟化技术(第49天)

操作系统原理 系统调用:操作系统提供的调用接口 库:库是对系统调用的封装 用户态和内核态 x86指令分4层:ring0,ring1,ring2, ring3 MMU:内存管理单元,主要用于内存分页 寄存器:cpu内部保持数据的元器件 cpu缓存:一级缓存,二级缓存,三级缓存 IO设备:包括控制器和设备 控制器:集成在主板上的芯片 驱动程序:通常由设备生产商提供 每个控制器都集成少量的用于通信的寄存器:内核调用驱动程序进行读写操作,驱动程序会操作控制器对设备进行读写。 IO端口空间:所有IO设备的控制器上的寄存器集合,每一个寄存器表现为一个IO端口,被映射到内存中,每一个IO端口的都有一个独立的地址 中断:主板上的可编程中断控制器 中断号:IO设备的控制器在系统启动时要向中断控制器注册一个中断号,当IO设备有读写请求时,向中断控制器发出中断请求,中断控制器通知CPU,CPU发起中断切换。 中断分为中断上部,中断下部。 中断上部:将IO设备缓存中的内容copy到内核内存中 DMA:直接内存访问,完成中断上部。 虚拟地址 物理地址 虚拟化技术: 将计算机资源分割 cpu的虚拟化的技术:模拟和虚拟 模拟:软件模拟,emulation,宿主机架构和guest架构可以不一样,必须模拟出来ring0, ring1, ring2,ring3 虚拟:virtualization,guest并不知自己运行于虚拟机中,必须模拟出来一个特权环境,各guest内核运行于宿主机的ring1,当guest主机运行特权指令时候可以进行二进制翻译,把指令翻译为宿主机的特权指令运行之。 HVM:硬件辅助虚拟化技术:intel vt技术 宿主机运行于ring-1级,各guest用户态进程运行于ring3, guest内核态运行于ring0。 半虚拟化技术:para-virtualization 在硬件上运行hypervisor,也就是vm monitor,hypervisor直接管理硬件,hypervisor虚拟一层hyper call, 各guest的内核进程可以直接调用hyper call。各guest的内核必须做相应的调整,才能适配对hyper call的调用,所以guest是知道hyper call的存在的 Memory的虚拟: intel EPT技术:extended page table,M...

puppet(第45天)

图片
 puppet:IT基础设施自动化管理工具: provisioning   系统安装 configuration  配置 orchestration  编排 reporting  报告   官网: https://puppet.com/ 源码: https://github.com/puppetlabs/puppet/tags    作者:Luke Kanies 开发语言:ruby puppet工作特性: puppet工作特性:master/agent 模式 master: puppet server,指挥调配各agent agent:  agent管理各个节点,真正执行相应管理操作的核心部件;周期性地去master请求与自己相关的配置 puppet的工作模式: 声明性的,基于模型的配置语言:      定义:使用puppet配置语言定义基础配置信息     模拟:模拟部署     执行:强制当前与定义的目标状态保持一致     报告:通过puppet api将执行结果发送给接收者 puppet的三个层次: 配置语言: 事务层: 资源抽象层:     资源类型:例如用户,组,文件,服务,cron任务等     属性及状态与其实现方式分离     期望状态 puppet核心组件:资源 资源清单:manifests 资源清单以及清单中的资源定义的所依赖文件,模板等数据按照特定结构组织起来即为模块。 master,agent交互如下图: 没人用了,不想更了

MySQL复制及分布式(第43天)

 MySQL replication: MHA:master HA 主节点高可用,在mysql主从架构基础上研发的,对主节点进行监控,可实现自动故障转移至其他从节点,通过提升某一个从节点为新的主节点,前端需要mysql读写分离器 Galera Cluster  :不基于mysql的主从架构复制架构,所有节点都可以读写,通过wresp协议在全局实现复制,各个节点使用ssh协议通信。前端不需要mysql读写分离器。(在生产环境中可用) 分布式系统: 1:系统的各个组件分布于网络上上的多个计算机 2:各个组件之间仅仅通过消息传递来通信并协调行动 多线程编程模型有如下: 1:互不通信的线程模型 2:基于共享容器(队列)协同工作的模型,有线程安全和线程不安全之分,实现机制有COW(写时才复制),锁等 3:通过事件协调的多线程模型

MySQL的备份和恢复、主从复制架构(第42天)

 MySQL备份和恢复: 逻辑备份工具介绍 : mysqldump, mydumper, phpAdmin Schema(结构:库,表等的结构)和数据是保存在一起的的巨大的SQL语句,单个的巨大的备份文件 mysqldump 客户端命令, 通过mysql协议连接到mysqld服务 命令的语法格式: mysqldump [OPTIONS] database [tables]:备份单个库,或库指定的一个或多个表 mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]:备份一个或多个库 mysqldump [OPTIONS] --all-databases [OPTIONS]:备份所有库 mysqldump选项: -A, --all-databases MyISAM, InnoDB: 温备      -x, --lock-all-tables:锁定所有库所有表      -l, --lock-tables:对于每个单独的数据库,在备份之前锁定其所有表 InnoDB:      --single-transaction:启动一个大的单一事务实现备份 -B, --databases db_name1 db_name2 ...:备份指定的数据库 -C, --compress:压缩传输; -E, --events:备份指定库的事件调度器; -R, --routines:备份存储过程和存储函数; --triggers:备份表相关的触发器 --master-data[=#]: #表示数字,1或者2       记录备份到的时间点(然后就可以使用mysqlbinlog命令从这个时间点开始继续备份)      1:记录CHANGE MASTER TO语句;此语句未被注释;      2:记录为注释语句; --flush-logs, -F:锁定表之后执行flush logs命令; 注意:二进制日志文件与数据文件不应该放置于同一磁盘; 例子: mysqldump -uroot -p  --databases  php...

MySQL的日志和备份(第41天)

  MySQL日志分类: 查询日志:query log ,一般不开启 慢查询日志:slow query log  错误日志:error log   二进制日志:binary log 中继日志:reley log 事务日志:transaction log   查询日志: 查询日志记录查询操作,这些日志可以保存在文件(file)和表(table)中,查询日志一般不开启 查询日志的相关的变量:  show global variables like '%log%';   general_log      可以设置为ON或者OFF,表示开启或者关闭 general_log_file          c:\wamp64\bin\mysql\mysql5.7.24\data\hp8570p.log log_output      可以设置为TABLE或者FILE或者NONE 慢查询日志:slow query log   慢查询日志一般建议开启 查询时间超过指定时长的查询操作,long_query_time变量就是指定时长 show global variables like 'long_query_time';   查询该变量 set global long_query_time=12;      设置该变量 慢查询相关变量: slow_query_log      可以设置为ON或者OFF slow_query_log_file          c:\wamp64\bin\mysql\mysql5.7.24\data\hp8570p-slow.log 错误日志: 并不是只记录错误日志 该日志记录了mysqld启动和关闭过程中输出的事件信息,mysqld运行中产生的错误信息,event scheduler运行一个event时产生的日志信息,在主从复制架构中的从服务器上启动从服务器线程时产生的信息 错误日志的相关变量: log_error...

MySQL用户,权限,索引,事务,存储引擎,日志管理(第40天)

权限: mysql中的权限可以分为:库级别,表级别,字段级别,管理类权限,程序类级别(是否有执行某些函数,存储过程的权限) 管理类级别的权限有: CREATE TEMPORARY TABLES CREATE USER FILE  读写文件权限 SUPER SHOW DATABASES RELOAD SHUTDOWN REPLICATION  SLAVE REPLICATION  CLIENT LOCK TABLES 锁表权限 PROCESS  进程相关 程序类权限有: FUNCTION 函数 PROCEDURE  存储过程 TRIGGER  触发器 如上配合CREATE, ALTER, DROP, EXCUTE 使用 库级别和表级别:TABLE or DATABASE ALTER CREATE CREATE VIEW DOOP INDEX SHOW VIEW GRANT OPTION  把自己获得的权限赠给其他用户一个副本 数据操作权限: SELECT 查询权限 INSERT  插入数据权限 DELETE  删除权限 UPDATA  更新权限 字段级别: SELECT(col1, col2, col3, ...)  查询某些字段的权限 UPDATE(col1, col2, col3, ...) INSERT(col1, col2, col3, ....) 所有权限: ALL PRIVILEGES 数据库的权限数据保存在元数据库mysql中的,进入mysql时,使用 use mysql;  show tables; 查看具体的权限授权情况, mysql中的授权相关的表有db、host、user,其他的表比如columns_priv、tables_priv, procs_priv mysql的用户: mysql的用户格式如下:有两部分组成用户和主机 用户@主机:表示此用户帐号可从@HOST范围内的某主机对此MySQL服务端建立连接; @HOST: 表示客户端,HOST可以使用通配符(%,_),主机名,ip地址 %: _: 172.16.0.0/16, 172.16.%.% 创建用户: CREATE USER 'username'@'hos...