对于怎么用,上手的话,推荐《鸟哥的Linux私房菜》,按着这个手册,就能够学会基本的Linux的使用,如果再深入一点,推荐《Linux系统管理技术手册》,砖头厚的一本书,是Linux运维手边必备。
对于怎么编程,上手的话,推荐《UNIX环境高级编程》,有代码,有介绍,有原理,如果对内核的原理感兴趣,推荐《深入理解LINUX内核》。
Linux的架构如下图
我们知道,一台物理机上有很多的硬件,最重要的是CPU,内存,硬盘,网络,但是一个物理机上要跑很多的程序,这些资源应该给谁用呢?当然是大家轮着用,谁也别独占,谁也别饿死。为了完成这件事情,操作系统的内核就起到了大管家的作用,将硬件资源分配给不同的用户程序使用,并且在适当的时间将资源拿回来,再分配给其他的用户进程,这个过程称为调度。
操作系统的功能之一是系统调用
当用户程序想请求资源的时候,需要调用操作系统的系统调用接口,这是内核和用户态程序的分界线,就像你要打车,要通过打车软件的界面,下发打车指令一样,这样打车软件才会给你调度一辆车。
操作系统的功能之二是进程管理
当一个用户进程运行的时候,内核为他分配的资源,总要有一个数据结构保存,哪些资源分配给了这个进程。分配给这个进程的资源往往包括打开的文件,内存空间等。
操作系统的功能之三是内存管理
每个进程有独立的内存空间,内存空间是进程用来存放数据的,就像一间一间的仓库。为了进程使用方便,每个进程内存空间,在进程的角度来看都是独立的,也即都是从0号仓库,1号仓库,一直到N号仓库,都是独享的。但是从操作系统内核的角度来看,当然不可能独享,而是大家共享,M号仓库只有一个,你用他就不能用,这就需要一个仓库调度系统,将用户进程的仓库号和实际使用的仓库号对应起来,例如进程1的10号仓库,对应到真实的仓库是110号,进程2的20号仓库,对应到真实的仓库是120号。
操作系统功能之四是文件系统
对于Linux来讲,很多东西都是文件,例如进程号回对应一个文件,建立一个网络连接也对应一个文件。文件系统多种多样,为了能够统一适配,有一个虚拟文件系统的中间层VFS。
操作系统功能之五是设备管理
设备分两种,一种是块设备,一种是字符设备,例如硬盘就是块设备,可以格式化为文件系统,再如鼠标和键盘的输入输出是字符设备。
操作系统功能之六是网络管理
其实对于Linux来讲,网络也是基于设备和文件系统的,但是由于网络有自己的协议栈,要遵循TCP/IP协议栈标准。
对于Linux的基础知识方面,我写了几篇文章如下。
五、了解数据中心和网络基础知识
云平台当然会部署在数据中心里面,由于数据中心里面的硬件设备也是非常专业的,因而很多地方机房部门和云计算部门是两个部门,但是作为一个云架构师,需要和机房部门进行沟通,因而需要一定的数据中心知识,在数据中心里面,最难搞定的是网络,因而这里面网络知识是重中之重。
下面这个图是一个典型的数据中心图。
最外层是Internet Edge,也叫Edge Router,也叫Border Router,它提供数据中心与Internet的连接。
第一层core network,包含很多的core switches
· Available Zone同Edge router之间通信
· Available Zone之间的通信提供
· 提供高可用性连接HA
· 提供Intrusion Prevention Services
· 提供Distributed Denial of Service Attack Analysis and Mitigation
· 提供Tier 1 Load Balancer
第二层也即每个AZ的最上层,我们称为Aggregation layer。
第三层是access layer,就是一个个机架的服务器,用接入交换机连接在一起。
这是一个典型的三层网络结构,也即接入层、汇聚层、核心层三层。
对于数据中心,我写了几篇文章
除了数据中心以外,哪怕是做应用架构,对于网络的了解也是必须的。