Linux运维的必备技能
无论你是准备从事Linux运维工作的菜鸟,还是早已入门的老鸟。在互联网时代,设备和IT技术更新永无止境。作为一个Linux运维人员你无法阻止技术的更新,但是我们可以有“工欲善其事,必先利其器”的觉悟,脚踏实地走自己的道,修自己的行。 |
Linux运维人员主要划分为:初级、中级和高级三个等级,不同级别的Linux运维人员需要掌握的技能不同。本文主要为大家介绍各个等级人员需要掌握的必备技能,从而指引同行朋友在修行的过程中少走弯路。只属于个人多年的领悟,由于时间问题难免有不足之处,如有不足之处请发表评论!我会加以修正,从而达到写本文的初衷。
俗话说“隔行如隔山”,尤其对于一个计算机小白的话,入门很不容易。建议你先科普一下计算机的组成和工作原理、处理器的体系结构及原理、存储器、I/O设备、内存原理和文件系统等。通过这些的学习至少能够让你对计算机有一个基本的认识,如果你能更深入的理解这方面的知识对于你日后对Linux系统调优起着不可取代的作用。当然你也可是试着做一次服务器的设备选型,也能够让你去了解更多关于硬件的知识。
技术关键词:CPU、内存、磁盘、IO、文件系统 推荐读物<<现在操作系统>>和<<深入理解计算机系统>>。 |
接下来就是Linux操作系统的选择,将内核、源代码及相关的应用程序组织构成一个完整的操作系统,让一般的用户可以简便地安装和使用Linux,这就是所谓的发行版本(distribution)。我们一般谈论的Linux系统便是针对这些发行版本。在众多的发行版中选择一个适合入门学习的版本也不是一件容易的事。对于学习Linux初期推荐选择RHEL或CentOS这些“老牌”的操作系统;如果你只是为了看看Linux的华丽的桌面,推荐选择适合大众的Ubuntu;如果你想定制一个操作系统,那不防试试Gentoo。也就说Linux有迎合大众各种口味的操作系统,只有你想不到的,没有它没有的!
目前,CPU和内存的发展速度可以说是一日千里,固态硬盘的出现,摆脱了机械硬盘使用机械转子带动多个磁盘硅片的时代。但是其昂贵的价格,不能将其普及到所有的服务器上。很多服务器依然使用机械硬盘,机械硬盘的I/O速度取决于其转速。转速的增加,会使数据的读写效率有所提高,但与CPU的速度相比,磁盘的速度相对来说越来越慢了。这个速度差异导致单个磁盘无法与CPU速度匹配。解决磁盘速度问题的方法是使用磁盘阵列(RAID),可以减少维护时间,增强数据安全性,保证应用的性能。
对于中小型系统,无论使用怎样部署都没有多大的问题,重点是把握可恢复性。磁盘阵列支持的I/O访问次数和I/O数据传输与RAID设计算法有关。业务的不同,读和写操作的频繁次数自然不同,对于读操作频繁的系统适用于RAID1和RAID5(例如:Web服务器),对于写操作频繁的系统适用于RAID10(例如:数据库)。
安装系统前,避免不了合理的选择RAID阵列级别,提高存储设备的可靠性和效率,同时还要考虑预算,尽量的降低成本。
Linux操作系统有GUI和字符界面的安装方式,初期推荐你使用GUI和中文的安装方式快速的掌握操作系统的安装,之后就使用英文和字符的安装方式进行安装,这样就可以将安装过程看的更清楚和专业。最终的目标是实现定制化安装操作系统,按照服务器上跑的业务,合理的规划磁盘分区和选择要安装的软件。定制化安装系统可以提高系统的安装速度,给予我们意想不到的稳定性和安全性。
技术关键词:开源、GNU、GPL、POSIX、Linux内核、RAID、RAID等级、磁盘、磁盘原理、块、超级块、文件系统、i节点 推荐读物<<鸟哥的私房菜>>和<< RedHatEnterprise Linux5系统管理宝典>>。 |
恭喜你,你已经掌握的Linux系统的安装。安装后你输入用户名和密码登录系统后,第一眼看到的用户界面就是Shell,这个时候有必要知道Linux系统的组成、Shell解析命令的过程、常见的Shell版本、Shell的功能、Shell的元字符等。
Linux操作系统是一个可以放弃鼠标的操作系统,一切皆是文件, 一切皆是命令, 命令就是一切, 就像李宁的广告词一样“一切皆有可能”。Linux系统上有成百上千的命令,分为内置命令和外置命令,虽然这些命令的功能不同,幸好它们的使用方式和规则都是统一的,这就是Linux命令的语法。了解Linux命令的语法和养成使用Linux命令的好习惯是学习Linux运维的第一步,例如:命令和参数严格区分大小写、合理的使用Tab键补全命令和善用Linux帮助手册快速获取命令的帮助。对于Linux初级运维来说不止要掌握这些人人皆知的使用习惯,实际上我们可以认为Linux初级人员就是一个单机管理员或者称为Linux系统管理员,对于Linux的单机管理至少要掌握如下技术。下图中显示了Linux初级运维需要掌握的技术:
这些知识只是让你步入运维行业中最基本的一步,本来初级和中级运维在很多时候很难细致的去区分,对于初中级运维除了掌握以上的技术,还需要掌握企业常见的网络服务(例如:DHCP、DNS、FTP、Samba、Mail、NFS等)和网站架构LAMP、LNMP的部署及安全加固。使用Shell编写常用的安装、监控(CPU、内存、磁盘)脚本;正则表达式、sed、awk、sort、uniq、cut、find、grep等工具的使用。
上图中主要介绍了Shell脚本编程和LAMP的学习方向,通过Shell编写日常CPU、内存、硬盘和服务的监控脚本和报警、统计Web服务器的访问次数和访问排名、MySQL数据库备份脚本等。掌握LAMP和LNMP的部署和日常维护。防火墙的使用,例如:iptables和硬件防火墙的原理和规则的添加。
技术关键词:DHCP、DNS、FTP、Samba、Mail、NFS、Apache、MySQL、PHP、Nginx、Shell 推荐读物:<<鸟哥的私房菜服务>>、<<MySQL数据库开发、优化与管理维护>>、<<更安全的Linux网络>>、<<实战Nginx_取代Apache的高性能Web服务器>>、<<Unix.Shell编程>>、<<LINUX与UNIX SHELL编程指南>>、<<高级Bash脚本编程指南>> |
云计算和大数据时代的来临,未来对运维人员的要求只能是越来越高,多次看到“学会运维自动化、走遍天下都不怕”给人一种运维不自动化就不是运维,企业不云计算就不叫企业。事实并非如此,很多技术只能说是一个趋势,并未形成大势。只不过作为技术的我们需要关注未来的趋势,在空闲的时间去掌握这些技术。
对于高级运维来说,不仅需要丰富的知识体系还需要一线的经验,所以说精通还是很难的,不是我们看到很多刚毕业的学生在简历中写出了各种精通,由于是高级Linux运维,不经过多年的锻炼是达不到较高的境界。所以高级运维是稀缺型人才,对于企业来说也很难找到适合自己的人才。
高级运维是一个非常专业职位,高级运维需要掌握相当多的知识,包括但不限于网络技术、系统编程、运维流程及思想、虚拟化、自动化运维体系构建、数据库管理,云计算平台应用,大数据等。
技术关键词:高可用、高并发、负载均衡、云计算、大数据、自动化、监控工具、虚拟化、中间件、架构、读写分离、动态分离 推荐读取:<<构建高性能Web站点>>、<<高性能MySQL>>、<<精通Puppet配置管理工具>>、<<高性能Linux服务器构建实战运维监控性能调优与集群应用>>、<<CDN技术详解>>、<<实用负载均衡技术>>、<<高性能网站构建实践>>、 <<大型网站技术架构>>、<<Openstack实战指南>> |
写之前就感觉不好界定运维的等级,结果写完之后这种感觉更加强烈,有些技术你既可以说他是高级技术也可以说他很基础。我认为,技术没有等级,只要我们愿意去还原技术本身的面目,再简单的技术你也会感觉“有点意思”。最后祝愿各位,在技术的不归路上,我的技术我做主。
本文转自yjlsy 51CTO博客,原文链接:http://blog.51cto.com/baidu/1683613,如需转载请自行联系原作者