下面是一名运维人员求职数十家公司总结的 Linux运维面试题,给大家参考下~
1、现在给你三百台服务器,你怎么对他们进行管理?
管理3百台服务器的方式:
1)设定跳板机
使用统一账号登录,便于安全与登录的考量。
2)使用 salt、ansiable、puppet 进行系统的统一调度与配置的统一管理。3)建立简单的服务器的系统、配置、应用的 cmdb 信息管理。便于查阅每台服务器上的各种信息记录。
2、简述 raid0 raid1 raid5 三种工作模式的工作原理及特点
RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据
还有一个大功能,多块盘放在一起可以有冗余(备份)RAID整合方式有很多,常用的:0 1 5 10
RAID 0,可以是一块盘和 N 个盘组合
- 优点读写快,是 RAID 中最好的
- 缺点:没有冗余,一块坏了数据就全没有了
RAID 1,只能2块盘,盘的大小可以不一样,以小的为准。
- 10G+10G只有10G,另一个做备份。它有100%的冗余,
- 缺点:浪费资源,成本高
RAID 5 ,3块盘,容量计算10 *(n-1),损失一块盘
特点,读写性能一般,读还好一点,写不好
- 冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
- 性能从好到坏:RAID0 RAID10 RAID5 RAID1
- 成本从低到高:RAID0 RAID5 RAID1 RAID10
单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5\RAID0(为了维护成本,RAID10)
WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)有多台,监控、应用服务器,RAID0 RAID5
我们会根据数据的存储和访问的需求,去匹配对应的RAID级别
3、LVS、Nginx、HAproxy 有什么区别?工作中你怎么选择?
- LVS:是基于四层的转发
- HAproxy:是基于四层和七层的转发,是专业的代理服务器
- Nginx:是WEB服务器,缓存服务器,又是反向代理服务器
,可以做七层的转发
区别:LVS由于是基于四层的转发所以只能做端口的转发,而基于URL的、基于目录的这种转发LVS就做不了。
工作选择:
- HAproxy 和 Nginx 由于可以做七层的转发,所以 URL 和目录的转发都可以做
- 在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
- 选择 HAproxy 或者 Nginx 足已,由于 HAproxy 由是专业的代理服务器
- 配置简单,所以中小型企业推荐使用 HAproxy
4、Squid、Varinsh 和 Nginx 有什么区别,工作中你怎么选择?
Squid、Varinsh 和 Nginx 都是代理服务器
什么是代理服务器:
能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接收你的请求,我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你;如果我在我本地没有找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网。
区别:
1)Nginx 本来是反向代理/web服务器,用了插件可以做做这个副业,但是本身不支持特性挺多,只能缓存静态文件
2)从这些功能上。varnish 和 squid 是专业的 cache 服务,而 nginx 这些是第三方模块完成3)varnish 本身的技术上优势要高于 squid,它采用了可视化页面缓存技术
在内存的利用上,Varnish 比 Squid 具有优势,性能要比 Squid 高。还有强大的通过 Varnish 管理端口,可以使用正则快速、批量地清除部分缓存。它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的
4)squid 的优势在于完整的庞大的 cache 技术资料,和很多的应用生产环境
工作中选择:
要做 cache 服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。
5、Tomcat和Resin有什么区别,工作中你怎么选择?
- 区别:Tomcat 用户数多,可参考文档多,Resin用户数少,可考虑文档少
最主要区别则是 Tomcat 是标准的 java 容器,不过性能方面比 resin 的要差一些。但稳定性和 java 程序的兼容性,应该是比 resin 的要好
工作中选择:现在大公司都是用 resin,追求性能;而中小型公司都是用 Tomcat,追求稳定和程序的兼容
6、什么是中间件?什么是jdk?
中间件介绍:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯,是连接两个独立应用程序或独立系统的软件。
相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递,通过中间件,应用程序可以工作于多平台或OS环境。
jdk:jdk是Java的开发工具包它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境