sysctl 参数笔记
一些关于sysctl参数设置的收集和解释。 /etc/sysctl.d/00-defaults.confkernel.printk输出内核日志信息的级别。 12345678# 映射到的proc文件系统位置 - /proc/sys/kernel/printk# Maximize console logging level for kernel printk messageskernel.printk = 8 4 1 7# (1) 控制台日志级别:优先级高于该值的消息将被打印至控制台。# (2) 缺省的消息日志级别:将用该值来打印没有优先级的消息。# (3) 最低的控制台日志级别:控制台日志级别可能被设置的最小值。# (4) 缺省的控制台:控制台日志级别的缺省值。 内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。 12345678#define KERN_EMERG "<0>" /* systemis unusable */#define KERN_ALERT &qu...
btrfs 笔记
学习btrfs文件系统笔记. btrfs 管理模式和标准的文件系统不同。 btrfs 的顶级卷可以理解为 存储池, 跨越多个设备添加所有的空间到顶级卷。在顶级卷中可以直接创建目录结构进行使用, 但是并不推荐。推荐的方式是在顶级卷下面创建子卷, 然后挂载子卷使用, 这样可以最大程度的发挥 btrfs 文件系统的高级特性。子卷可以和标准目录使用 ls 命令输出没有任何差异, 为了在更好的区分 子卷 还是 普通目录, 在创建子卷的时候使用 @VOLUME_NAME 的格式进行创建。 ^3e41e6 例如: 123456/mnt/btrfs/ <-- 这一层还是 xfs 文件系统的范围,下面的三个目录都是手动创建的挂载点|-- docker_data <-- 在这里挂载 @docker_data|-- harbor_data <-- 在这里挂载 @harbor_data`-- root <-- 在这里挂载 btrfs top volume, subvolume=/ |-- @docker_data <-- 在这里创建 btrfs subvo...
Fio 命令说明
FIO (Flexible I/O Tester) 是一款功能强大的磁盘性能测试工具,可用于对存储系统进行各种测试和评估。 Github地址 https://github.com/axboe/fio https://tobert.github.io/post/2014-04-17-fio-output-explained.html http://xiaqunfeng.cc/2017/07/12/fio-test-ceph/ https://fio.readthedocs.io/en/latest/fio_doc.html http://linuxperf.com/?p=156 使用说明1234567891011121314151617181920212223242526272829# fio test file defination# ini file format ; -- start job file --[global]size=1G # 设置测试文件的大小runtime=30 # 设定运行时间, 如果运行时间之内已经完成了文件大小的写入则会保持文件大...
Shell脚本处理目录或者文件名中的空格
问题:问题是: 罗列指定的目录下面的文件, 符合要求的文件保留, 未匹配的删除。 解决:简单的Bash脚本, 使用ls拿文件名, 使用For + IF判断即可。但是文件的目录中有的文件名是带有空格的, 而Shell 使用空格做分隔符,因此无法正确的处理完整的文件名。解决方案有特别多, 只记录一个我最后使用的方案:使用IFS变量来定义Shell 的默认分隔符, 将空格替换成\n\b. 1234567891011121314151617181920#!/bin/bash#SAVEIFS=$IFSIFS=$(echo -en "\n\b")for number in {1..10}do mkdir -pv "dir $number"donetreeFILE=`ls`for i in $FILE;do echo "The DirName: $i"doneIFS=$SAVEIFS 这样就可以拿到名称为dir 1的完整目录名字了,否则会默认吧空格分割的文件名称作为两个目录提取。 123456789101...
Linux中一些常见的性能分析命令
记录性能分析的思路。 最近的这个半年越来越好奇的事情是, 为什么命令会卡住,为什么命令会执行不下去,为什么命令会等待,等等等等。 那么这些问题, 有的是可以有答案的, 目前也不知道的。 已经大概掌握的几个不同的方法以及观测的工具, 大概做一个记录。 Strace命令Strace 命令的常见用法strace命令是用来追踪系统调用的,常见的可以追踪的系统调用需要阅读内核部分的代码。 但是常见的系统调用就是集中, read() , write() , ioctl(), futex() , mmap()大部分的时候 我们都是可以观测到卡住的部分的 , 这种追踪我认为常见的使用场景就是命令卡住了, 或者执行中的程序卡住了。 命令卡住的分析对于命令卡住的情况, 可以使用类似于如下的命令: 1strace -f -ttt -s 512 echo "123" 这样的话, 在执行的过程中就可以查看相关的内容,比如常见的卡在了系统调用的某个函数上, 这个可以用来定位,命令打开了那些文件,申请的那些内存地址,打开了什么文件,关闭Socket等等等等。目前我的办法的通过对比这个...
Kubernetes day2
对于etcd的操作和备份 Etcd的操作 - EtcdctlEtcd的规划 最好用 固态盘, Pod数量比较多的情况下会非常非常慢, 内存要大. 类似于redis 或者 Zookeeper, KV的存储. 支持watch机制,可以通知给node节点的数据变化. etcd consul zookeeper 的区别 名称 优点 缺点 接口 一致性算法 zookeeper 1.功能强大,不仅仅只是服务发现2.提供watcher机制能实时获取服务提供者的状态3.dubbo等框架支持 1.没有健康检查2.需在服务中集成sdk,复杂度高3.不支持多数据中心 sdk Paxos consul 1.简单易用,不需要集成sdk2.自带健康检查3.支持多数据中心4.提供web管理界面 1.不能实时获取服务信息的变化通知 http/dns Raft etcd 1.简单易用,不需要集成sdk2.可配置性强 1.没有健康检查2.需配合第三方工具一起完成服务发现3.不支持多数据中心 http Raft Etcdctl 的命令 查看etcd的成员清单 1]...
Harbor Http 安装部署
Harbor的部署记录。 Harbor Info Harbor 项目地址 Harbor HTTP部署因为是临时使用, 所以直接给了HTTP的权限, 为的是不走公网部署 CEPH Cluster, CEPH在BootStrap之后会默认去公网的镜像仓库尝试Pull镜像并且校验镜像和服务,所以给一个私有的仓库, 直接去找私有仓库就免了公网访问卡集群的正常启动的步骤。 下载解压123~]$ wget https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz~]$ mv harbor-offline-installer-v2.3.2.tgz /opt ~]$ tar zxvf /opt/harbor-offline-installer-v2.3.2.tgz 复制修改配置文件1~]$ cp /opt/harbor/harbor.yml.tmpl /opt/harbor/harbor.yml 配置默认的存储位置123# 注释掉https的部分,如果需要...
Kubernetes day1
云原生的定义 云原生一些概念十二因素应用 基准代码: 一份基准代码,多次部署(用同一个代码库进行版本控制) 依赖: 显式的声明和隔离相互之间的依赖 配置: 在环境中存储配置(配置中心,携程的apollo) 后端服务: 后端服务作为一个附加的资源,数据库,中间件等等 构建,发布,运行: 对程序执行构建或者打包,严格分离构建和运行,打镜像编译等等,构建和运行严格的分离 进程: 使用一个或者多个无状态进程运行应用 端口绑定: 通过端口绑定提供服务 并发: 通过进程模型进行扩展 易处理: 快速的启动,优雅的终止,最大程度的保持健壮性。 开发环境与线上环境等价: 尽可能保持Dev,Prelive,Live环境的一致性 日志: 将所有运行中的进程和后台服务的输出流按照的时间顺序统一收集存储和展示(ELK,Fluend,Logstash,Filebeat等等) 管理进程: 一次性管理类型的进程(Onetime Job)应该和正常的常驻进程使用同样的运行环境 Master - APIserverAPIserver提供了Kubernetes各类资源对象的CRUD以及Watch等等的HTTP RE...
Docker基础知识二周目
Docker Container 基础 。 again ….. Docker使用的六个名称空间 MNT Namespace - 提供文件的挂载和文件系统的隔离 IPC Namespace - 提供进程间通信 UTS Namespace - 提供主机名隔离 PID Namespace - 提供进程以及进程号隔离 Net Namespace - 提供网络隔离 User Namespace - 提供用户以及用户id的隔离 容器的进程ID关系1234567Host -------------------------------- | container ------------------------|systemd -- containerd -- container-shim -- | nginx-master -- nginx-worker ` -- container-shim -- | nginx-master -- nginx-worker ` -- container-shim -- | mys...
Ceph Cluster 04 - CRUSH算法
ceph笔记04 修改CRUSH算法的分配方式基础概念:五种运行图: MON服务维护 Monitor Map - 监控的运行图 MON的状态 OSD Map - OSD的状态, 每隔六秒钟汇报一次状态 PG Map - PG的运行图, PG的状态和映射关系 CRUSH Map - 一致性hash算法,和数据块和osd的分配关系, 动态更新,当客户端请求一个文件的时候,会通过CRUSH算法会根据osd的map创建PG组合的来对文件的存储进行负载和分配。假如有20个osd,创建32重组合分配对应的pg和osd的对应关系,选主从,选分布方式和节点的同步关系,叫做CRUSH Map。 MDS Map - Metadata Map ,元数据和数据文件的映射关系。 5种算法对节点的选择方式 Uniform List Tree Straw - 早期的版本,分布不是特别的均衡,抽签算法 Straw2 - 目前已经发展中的版本, 抽签算法 (Default) 对PG的动态调整默认情况下是动态调整的,但是可以手动调整为给予权重,设置PG分配的倾向,例如1T权重是1,等等等等 查看状态以及调整方...


