Ceph Pool操作总结

Ceph Pool操作总结 一个ceph集群可以有多个pool,每个pool是逻辑上的隔离单位,不同的pool可以有完全不一样的数据处理方式,比如Replica Size(副本数)、Placement Groups、CRUSH Rules、快照、所属者等。 ...

May 19, 2016 · 3 min · 1058 words · Ringi Lee

Docker跨主机通信实现与分析

前言 docker目前支持以下5种网络模式: bridge:此时docker引擎会创建一个veth对,一端连接到容器实例并命名为eth0,另一端连接到指定的网桥中(比如docker0),因此同在一个主机的容器实例由于连接在同一个网桥中,它们能够互相通信。容器创建时还会自动创建一条SNAT规则,用于容器与外部通信时。如果用户使用了-p或者-Pe端口端口,还会创建对应的端口映射规则。 host:与宿主机共享网络,此时容器没有使用网络的namespace,宿主机的所有设备,如Dbus会暴露到容器中,因此存在安全隐患。 none:不设置网络,相当于容器内没有配置网卡,用户可以手动配置。 container:指定与某个容器实例共享网络 network:使用自定义网络,可以使用docker network create创建,并且默认支持多种网络驱动,用户可以自由创建桥接网络或者overlay网络。 默认是桥接模式,网络地址为172.16.0.0/16,同一主机的容器实例能够通信,但不能跨主机通信。本文下面将介绍如何使用gre隧道技术实现跨主机通信。 ...

May 10, 2016 · 6 min · 2837 words · Ringi Lee

Linux常用网络工具总结

本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof、ip、tcpdump、iptables等。本文不会深入研究这些命令的强大用法,因为每个命令都足以写一篇文章,本文只是简单地介绍并辅以几个简单demo实例,旨在大脑中留个印象,平时遇到问题时能够快速搜索出这些工具,利用强大的man工具,提供一定的思路解决问题。 ...

May 04, 2016 · 20 min · 9922 words · Ringi Lee

使用Harbor构建私有Docker镜像仓库

简介 Harbor是VMware公司最近开源的企业级Docker Registry项目, 项目地址为https://github.com/vmware/harbor 其目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文。Harbor的每个组件都是以Docker容器的形式构建的,使用Docker Compose来对它进行部署。用于部署Harbor的Docker Compose模板位于 /Deployer/docker-compose.yml,由5个容器组成: ...

April 18, 2016 · 8 min · 3840 words · Ringi Lee

谈谈Docker数据容器

翻译自: Data-only container madness 什么是数据容器? 数据容器就是本身只创建一个volume供其他容器共享,创建完后即退出,不执行任何任务。比如通过以下方式创建一个postgres容器。 ...

April 14, 2016 · 4 min · 1931 words · Ringi Lee

虚拟机、Docker和Hyper技术比较

操作系统 我们知道: 1 完整的操作系统=内核+apps 内核负责管理底层硬件资源,包括CPU、内存、磁盘等等,并向上为apps提供系统调用接口,上层apps应用必须通过系统调用方式使用硬件资源,通常并不能直接访问资源。apps就是用户直接接触的应用,比如命令行工具、图形界面工具等(linux的图形界面也是作为可选应用之一,而不像windows是集成到内核中的)。同一个内核加上不同的apps,就构成了不同的操作系统发行版,比如ubuntu、rethat、android(当然内核通常针对不同的发行版会有修改)等等。因此我们可以认为,不同的操作系统发行版本其实就是由应用apps构成的环境的差别(比如默认安装的软件以及链接库、软件包管理、图形界面应用等等)。我们把所有这些apps环境打成一个包,就可以称之为镜像。问题来了,假如我们同时有多个apps环境,能否在同一个内核上运行呢?因为操作系统只负责提供服务,而并不管为谁服务,因此同一个内核之上可以同时运行多个apps环境。比如假设我们现在有ubuntu和fedora的apps环境,即两个发行版镜像,分别位于/home/int32bit/ubuntu和/home/int32bit/fedora,我们最简单的方式,采用chroot工具即可快速切换到指定的应用环境中,相当于同时有多个apps环境在运行。 ...

March 20, 2016 · 10 min · 4531 words · Ringi Lee

使用bash关联数组统计单词频数

从bash 4开始支持关联数组,使用前需要声明,即 1 2 3 4 5 6 7 8 declare -A map map[key1]=value1 map[key2]=value2 map=([key1]=value1 [key2]=value2) # 获取keys keys=${!map[@]} # 获取values values=${map[@]} 利用关联数组,很容易实现单词统计,源码文件wordCount.sh ...

March 18, 2015 · 1 min · 186 words · Ringi Lee

bash字符串前美元符号的作用

bash是由内置变量IFS作为字段分隔符,IFS变量的值直接影响脚本如何解析参数,其默认值为\<space\>\<tab\>\<newline\>, 即空格、制表符以及换行符。 遇到一个需求是需要设置分隔符为换行符\n, 即一行一个字段,空格和制表符不会分割字段。很容易想到的办法是重设IFS变量值: ...

November 30, 2014 · 2 min · 699 words · Ringi Lee

随机数生成算法和洗牌算法

1 伪随机数 什么是随机数?通俗说法就是随机产生一个数,这个数预先不能计算出来,并且每个数字出现的概率是一样的。随机数必须满足以下两个条件: 不可计算性。即在随机数产生前,不能通过任何方式计算出来。 机会均等性。即需要保证每个数出现的概率是相等的。 在生活中,随机数产生其实并不难,比如通过掷骰子的方式就可以很容易获取一个随机数。但计算机产生随机数却并不容易。在编程中,我们经常调用随机数生成器函数,但其实产生的并不是真正的随机数,而是通过一定的算法计算出来的(不满足随机数的不可计算性),我们称它为伪随机数! ...

October 24, 2014 · 6 min · 2951 words · Ringi Lee

小米2013校招笔试算法题-朋友圈

题目描述:假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友…),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。 假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友圈,结果为2个朋友圈。 最后请分析所写代码的时间、空间复杂度。评分会参考代码的正确性和效率。 ...

October 27, 2013 · 2 min · 993 words · Ringi Lee