前言在Linux下面用python进行数据处理,然后输出为csv格式,如果没有中文一切正常,但是如果有中文,就会出现乱码的问题,本篇将讲述怎么处理这个问题
处理过程原始代码123456789#!/usr/bin/env python# -*- coding: UTF-8 -*-import csv#import codecswith open('test.csv', 'wb') as csvfile:# csvfile.write(codecs.BOM_UTF8) spamwriter = csv.writer(csvfile, dialect='excel') spamwriter.writerow(['测试'] * 5 + ['Baked Beans']) spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
运行以后:Linux ...
前言如果你是新手,应该出现过敲盘符的时候,敲错的情况,有些操作可能没什么问题,查询类的操作都没问题,但是写入的情况,就可能比较麻烦了,当然老手也可能有误操作,本篇将讲述在误操作把分区表给弄丢了的情况,来看看我们应该如何恢复
实践过程我们现在有一个正常的集群,我们假设这些分区都是一致的,用的是默认的分区的方式,我们先来看看默认的分区方式是怎样的
破坏环境123456[root@lab8106 ceph]# ceph-disk list···/dev/sdb : /dev/sdb1 ceph data, active, cluster ceph, osd.0, journal /dev/sdb2 /dev/sdb2 ceph journal, for /dev/sdb1···
查看分区情况
12345678910[root@lab8106 ceph]# parted -s /dev/sdb printModel: SEAGATE ST3300657SS (scsi)Disk /dev/sdb: 300GBSector size (logical/physical): 512B/512BP ...
关于mon的数据的问题,一般正常情况下都是配置的3个mon的,但是还是有人会担心 Mon 万一三个同时都挂掉了怎么办,那么集群所有的数据是不是都丢了,关于后台真实数据恢复,有去后台取对象,然后一个个拼接起来的方案,这个是确定可以成功的,但是这个方法对于生产的集群耗时巨大,并且需要导出数据,然后又配置新的集群,工程比较耗大,考虑到这个问题,Ceph 的中国(Redhat)的一位开发者 tchaikov 就写了一个新的工具,来对损坏的MON的数据进行原集群的重构,这个比起其他方案要好很多,本篇将讲述怎么使用这个工具,代码已经合并到 Ceph 的master分支当中去了
关于这个工具相关的issue
打包一个合进新代码的master版本的ceph包从github上面获取代码默认的分支就是master的直接去clone就可以了
1[root@lab8106 ~]# git clone https://github.com/ceph/ceph.git
检查是否是master分支123[root@lab8106 ~]# cd ceph[root@lab8106 ceph]# git branch ...
暂未分类
未读前言之前有写过一篇删除OSD的正确方式,里面只是简单的讲了下删除的方式怎样能减少迁移量,本篇属于一个扩展,讲述了 Ceph 运维当中经常出现的坏盘提换盘的步骤的优化
基础环境两台主机每台主机8个 OSD,一共 16 个 OSD,副本设置为2,PG 数设置为800,计算下来平均每个 OSD 上的 P G数目为100个,本篇将通过数据来分析不同的处理方法的差别
开始测试前先把环境设置为 noout,然后通过停止 OSD 来模拟 OSD 出现了异常,之后进行不同处理方法
测试三种方法首先 out 一个 OSD,然后剔除 OSD,然后增加 OSD
停止指定 OSD 进程
out 指定 OSD
crush remove 指定 OSD
增加一个新的 OSD
一般生产环境会设置为 noout,当然不设置也可以,那就交给程序去控制节点的 out,默认是在进程停止后的五分钟,总之这个地方如果有 out 触发,不管是人为触发,还是自动触发数据流是一定的,我们这里为了便于测试,使用的是人为触发,上面提到的预制环境就是设置的 noout
开始测试前获取最原始的分布
1[root@lab8106 ~]# ...
前言本篇介绍了centos7下jewel版本的radosgw配置,这里的配置是指将服务能够正常起来,不涉及到S3的配置,以及其他的更多的配置,radosgw后面的gw就是gateway的意思,也就是我们说的网关的意思,本篇中所提及的实例也就是网关的意思,说实例是将每个单独的网关更细化一点的说法
很多人不清楚在centos7下面怎么去控制这个radosgw网关的服务的控制,这个地方是会去读取配置文件的,所以配置文件得写正确
预备环境一个完整的集群拥有一个正常的集群是需要提前准备好的,ceph -s检查正确的输出
关闭各种auth这个地方也可以不关闭,注意配置好用户认证就可以了,这里关闭了,配置起来方便,我是从来不开的,也避免了新手不会配置用户造成认证的各种异常关闭认证就是在ceph.conf里面添加下面字段
123auth_cluster_required = noneauth_service_required = noneauth_client_required = none
安装ceph-radosgw的包这个因为默认不会安装,所以要安装好
1yum install ceph-ra ...
前言ceph的rbd一直有个问题就是无法清楚的知道这个分配的空间里面到底使用了多少,这个在Jewel里面提供了一个新的接口去查询,对于老版本来说可能同样有这个需求,本篇将详细介绍如何解决这个问题
查询的各种方法目前已知的有三种方法
1、使用rbd du查询(Jewel才支持)
2、使用rbd diff
3、根据对象统计的方法进行统计
详细介绍
方法一:使用rbd du查询这个参考我之前的文章:查询rbd的使用容量
方法二:使用rbd diff12[root@lab8106 ~]# rbd diff rbd/zp | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'828.844 MB
方法三:根据对象统计的方法进行统计这个是本篇着重介绍的一点,在集群非常大的时候,再去按上面的一个个的查询,需要花很长的时间,并且需要时不时的跟集群进行交互,这里采用的方法是把统计数据一次获取下来,然后进行数据的统计分析,从而获取结果,获取的粒度是以存储池为基准的
...
前言copyset运用好能带来什么好处
降低故障情况下的数据丢失概率(增加可用性)
降低资源占用,从而降低负载
copyset的概念首先我们要理解copyset的概念,用通俗的话说就是,包含一个数据的所有副本的节点,也就是一个copyset损坏的情况下,数据就是全丢的如上图所示,这里的copyset就是:{1,5,6},{2,6,8} 两组
如果不做特殊的设置,那么基本上就是会随机的去分布
最大copyset如上图的所示,一般来说,最终组合将是一个最大的随机组合,比如这样的一个9个node随机组合3个的,这样的组合数有:从 n个元素中取出 k个元素, k个元素的组合数量为:9个随机3个的组合为84如果3个节点down掉,那么有数据丢失概率就是100%
最小copyset如果存在一种情况,分布是这样的那么copyset为{1,5,7},{2,4,9},{3,6,8}如果3个节点down掉,只有正好是上面的3种组合中的一种出现的时候,才会出现数据丢失那么数据丢失的概率为 3/84
最小copyset可能带来的不好的地方
真出现丢失的时候(概率极低),丢失的数据量将是最大化 ...
暂未分类
未读前言每一次做ftp的配置都要弄半天,找文档,各种权限控制的坑,折腾半天,这次还是准备记录下来,以备不时之需,这里不配置什么高级的功能,就去实现一个最简单的配置
匿名用户的上传和下载
配置proftp过程 配置过程尽量少的动原配置文件,需要共享的为/share/a目录,首先修改默认的目录
1DefaultRoot ~ !adm
修改为:
1DefaultRoot /share
让默认的根目录为 /share,默认的为用户的根目录,匿名用户对应的ftp用户的根目录
修改匿名用户的目录
1<Anonymous ~ftp>
修改为
1<Anonymous /share>
修改原匿名用户ftp的用户目录为/share
修改默认屏蔽权限WRITE
123<Limit WRITE SITE_CHMOD> DenyAll</Limit>
改成
123<Limit SITE_CHMOD> DenyAll</Li ...
暂未分类
未读前言这个工具最开始是从sebastien的blog里面看到的,这个是 Gregory Charot(工具的作者)写的,通常我们在获取一个ceph的信息的时候,需要敲一连串的命令去获得自己需要的信息,可能需要一大堆的解析才能完成,而经常出现的是,使用了后,下次使用的时候,又要重来一遍,所以作者把这些常用的操作做了一些归纳,形成了一个查询的工具,很多人有个相同的观点就是,越懒,就会想办法提高效率,当然,首先得有提高效率的意识,否则只剩下懒了
我做的事情就是把作者用shell的逻辑转换成了python的版本,这样也方便自己以后的扩展,这里感谢作者做的一些工作,让我很快就能完成了,这里并不是重复造车轮,本来自己就不会python,权当练手了
在linux下面我是不建议用中文的,但是这个工具里面还是改成用中文提示,因为中文可能看上去更清楚需要做的是一个什么事情,这个仅仅是一个查询工具
有一段时间没有更新blog了,主要是最近比较忙,没有时间去看太多的资料,没有时间来写下更多的东西,有时间还是会坚持写下去
项目地址原作者项目地址:https://github.com/gcharot/ceph-la ...
暂未分类
未读背景一般情况下,我们的IT系统都会有相关的告警的处理,有的是邮件,有的是短信,这些都能很方便的获得一些有用的信息在某些时候我们没有这样的系统,而自己又需要定期的获取一些信息的时候,配置一个邮件发送是很有用的
配置方法网上的大部分的方法使用的是sendmail的发送方法,这个地方我们只需要简单的发送邮件的需求,可以直接配置SMTP发送的模式
修改配置文件,填写发送的相关信息修改配置文件 /etc/mail.rc在最下面添加发送邮箱的信息
12set from=test@sina.com smtp=smtp.sina.comset smtp-auth-user=test@sina.com smtp-auth-password=test123456 smtp-auth=login
编写一个发送的脚本12345vim /root/sendmail.sh #! /bin/shtimeout 20 date > /tmp/mailtimeout 20 ceph -s >> /tmp/mailtimeout 600 mail -s "cephstatus-`date` ...