Brains


Algorithm、Machine Learning、Search、cloud computing
on Linux, Namespace, Kernel

Linux Namespace简介

Linux Namespace简介 Linux Namespace提供了一种内核级别隔离系统资源的方法,通过将系统的全局资源放在不同的Namespace中,来实现资源隔离的目的。不同Namespace的程序,可以享有一份独立的系统资源。目前Linux中提供了六类系统资源的隔离机制,分别是: Mount: 隔离文件系统挂载点 UTS: 隔离主机名和域名信息 IPC: 隔离进程间通信 PID: 隔离进程的ID Network: 隔离网络资源 User: 隔离用户和用户组的ID 下面简单的介绍一下这些Namespace的使用和功能。 Namespace的使用 涉及到Namespace的操作接口包括clone()、setns()、unshare()以及还有/proc下的部分文件。为了使用特定的Namespace,在使用这些接口的时候需要指定以下一个或多个参数: CLONE_NEWNS: 用于指定Mount Namespace CLONE_NEWUTS: 用于指定UTS Namespace CLONE_NEWIPC: 用于指定IPC Namespace CLONE_NEWPID: 用于指定PID Namespace CLONE_NEWNET: 用于指定Network
Read More
on Linux, Memory, Study

内存寻址之段页存储机制分析

背景 学习操作系统这门课的时候,曾不止一次的接触到操作系统的段页式管理机制,但当是都是浅尝辄止,不知道操作系统为啥要有这个机制。如今时间过去很久,关于这个机制的背后的原理和实现机制,早已忘记很久了。。最近在看操作系统方面的知识,借此把自己的理解记录一下。 要理解段页式管理机制的发展历程,还得从早期的处理器的寻址方式说起。 内存寻址方式的发展历程 首先简单的介绍下内存寻址的概念,现代计算机是基于冯.诺依曼的体系结构,这个体系结构是以存储为中心的,也就是说所有的运算的前提都是先从内存中取得数据,所以内存寻址技术从某种程度上代表了计算机技术。 直接寻址 在处理器发展的早期阶段,Intel 公司推出了第一款8位的处理器--8080,它的内存寻址的方式简单粗暴,程序都是通过硬编码的形式绝对定位到内存地址。这种情况下的程序都有明显的缺点:可控性弱、难以重定位、难以维护等。 分段 很快在 Intel 推出的另一款处理器 8086 中,它可以寻址空间达到 1M,即地址线扩展到了 20 位,由于当时制造20位的寄存器比较困难,为了能在 16 位的寄存器的基础上寻址 20 位的地址空间,引入了一个重要的概念——段,段的地址存放在寄存器中,换句话说把
Read More
on Docker, HA, registry

基于kubernetes的Docker Registry的高可用部署

写在前面 在kubernetes集群中运维生成环境的服务已经长达半年多时间,我们遇到了很多问题,也踩到了很多坑,其中因为 Docker Registry 的故障而导致的不可用事件还是挺多的,这些问题常常被用户埋怨。 Docker Registry 作为镜像仓库、数据中心,在整个服务发布流程中是异常关键的一环。由于之前初期我们搭建的 Docker Registry 是通过 docker run 跑在单机的方式,这种情况下不仅有单点问题,还面临着磁盘损坏和镜像丢失的危险性。 后来为了提高平台的稳定性和可靠性,也为了我的毕业论文,特地的花时间来调研 Docker Registry 的部署和设计方案,这个方案不仅采纳了开源社区和其他公司的部署策略,同时也结合了本公司内部的基础上而设计的一套高可用的 Docker Registry 方案。 调研初期 在2017年3月份时候有幸参加了 ebay 公司举办了亿贝TechDay活动,在这次公开技术分享中,我不仅见识了由DaoCloud技术合伙人孙宏亮大神所分享的Docker安全思考,也同时领略了其他公司关于kubernetes、关于docker、关于registry的思考和尝试。 携程、京东的 Docker Registry 的部署过程中,都用到了一个harbor的开源镜像管理软件,这是我第一次接触这个项目。
Read More

虚拟化学习小组分享之——Borg论文解读

背景简介 组里目前支持了一个非常重要的业务,为了支持业务快速的扩展,更好的进行产品维护,决定成立一个虚拟化学习小组。主要宗旨就是为了提升大家对虚拟化、资源管理这方面知识的理解,共同调研生产环境下关于资源虚拟化方面的主流解决方案 Borg论文解读 先贴上原文的地址:http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43438.pdf 这里先做一下论文的简要梳理,然后对比一下开源平台kubernetes Borg简介 Borg是什么呢?它是Google公司的大规模分布式的集群管理系统,负责管理、调度、运行和监控公司绝大部分的应用程序和框架包括Gmail、Google Docs、Web Search这样的应用程序,也包含一些底层的框架Map Reduce计算框架、GFS分布式的存储系统、Big Table。主要是解决了这么几个问题 隐藏了资源管理和故障处理细节,使其用户可以专注应用开发 支持应用程序做到高可用和高可靠 提升了资源利用率,有效的降低了成本 整体框架 整体来看,Borg是一个典型的分布式平台架构,每个节点部署一个代理(
Read More
on summary

实习近半年了,写个总结吧

关于工作 从6月8号开始实习,到现在近半年了。回想这半年的生活过得像研一的时候,每天早晨9点起床,晚10点半回家,不过唯一值得欣慰的是每周有2天可以放松一下,而且有工资加上学校的补助,过得还是挺好的。在这里技术氛围比较浓厚,没有明显的等级观念,唯一不太好的就是大家都比较忙,很难有时间、有兴趣聊聊自己喜欢的事情,很少有机会大家一起出去聚聚,加深感情。 这半年来时间过得很快,成长的也很快,认识了很多优秀的朋友、同学,偶尔也能听到资深大牛的经验之谈,我还是很幸运的。下面总结一下自己半年的所得吧 关于职责 这半年来主要做的工作: 1、docker & kubernetes的调研 2、kubernetes集群 & MPI集群的运维 3、公司内部一个DNN文本计算平台的前后端开发 4、一个PaaS平台的后端开发 虽然很多事情都是修修补补的小事,但在这个过程中,也渐渐熟悉了软件开发的流程和运维经验,并且熟悉了内部平台的一些架构设计理念 关于运维 记得刚来的时候我做了大概2个月的运维工作,主要是关于docker & kubernetes的调研、集群搭建、稳定性测试工作,渐渐地熟悉了docker和kubernetes的使用和常见问题的处理方法。后来小组决定搭建一个高可用的kubernetes集群加进我们的平台中,
Read More

MySQL数据迁移

数据库的导入导出 我们此次准备迁移的共有五个数据库,分布在三台机器上: $HOSTNAME_0 $DATABASE_0 $HOSTNAME_1 $DATABASE_1 $HOSTNAME_2 $DATABASE_2 $HOSTNAME_2 $DATABASE_3 $HOSTNAME_2 $DATABASE_4 首先我们需要将这些数据库通过 mysqldump 的方式导出,其用法如下: mysqldump –h$HOSTNAME –u$USER –p$PASSWD $DATABASE > $DATABASE.sql 通过这种方式就可以将 $DATABASE 的数据以 SQL 语句的形式保存在文件中。有一些非常有用的选项,可以帮助我们更好的操作数据库: -t 表示仅导出数据库中的数据,不包括表结构 -d 表示仅导出数据库的表结构,不包含数据
Read More