运维面试积累

标签:运维面试积累css

1.dns工做原理是什么:html

1.假如客户机访问www.qq.com,操做系统会先检查本身本地的HOSTS文件是否有这个网站的映射关系,若是有直接调用,完成域名解析前端

2.若是HOSTS没有,则查找本地的DNS解析缓存,若是有该记录,则直接返回,完成域名解析。node

3.若是本地缓存中没有,首先会找TCP/IP参数中设置的首选DNS服务器,在此叫它本地DNS服务器,此服务器收到查询时,若是要查询的域名,包含在本地配置区的资源中,则返回解析结果给客户机,完成域名解析。linux

4.若是都查询失败了,本地DNS会把请求发至13台跟DNS,根DNS判断这个域名是谁来受权管理,并会返还一个负责该顶级域名服务器的IP(好比。com)。本地DNS收到IP后,将会联系负责.com域的这台服务器,若是本身没法解析,会推送到二级域进行查询,直到找到主机。nginx

5.本地域名服务器把返回的结果缓存,备下一次使用,同事将结果返回给客户机web

 

2.DNS递归查询和迭代查询的区别是什么:面试

递归查询: 通常客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器自己不能解析,则会向另外的DNS服务器发出查询请求,获得结果后转交给客户机。redis

迭代查询(反复查询): 通常DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求。算法

 

3.半虚拟与全虚拟的区别:

半虚拟:半虚拟化是经过事先通过修改的客户机操做系统内核共享宿主底层硬件来实现的,优势是半虚拟化的虚拟机操做系统内核可以直接管理底层硬件,性能比全虚拟化技术更强,缺点是客户机操做系统内核须要事先进行修改,部署的便利性和灵活性都不够spacer.gif,兼容性不够好。

全虚拟:全虚拟化是经过客户机和宿主机直接的一个虚拟化逻辑层hypervisor来彻底模拟底层硬件细节,优势是客户机的操做系统内核不须要作特殊配置,部署便利,灵活,兼容性好,缺点是客户机操做系统的内核不可以直接管理底层硬件,内核经过hypervisor管理底层硬件须要有转换开销,性能比半虚拟化略弱。

Kvm是 半虚拟。 Xen和vmware是全虚拟。


4.OSI七层参考模型

应用层 表示层 会话层 传输层 网络层 数据链路层 物理层

每层含义访问:http://blog.csdn.net/youmu2010/article/details/6434867


5.nginx为何能够处理高并发

Nginx 不一样于 Apache2 的一点就是,Nginx 采用单线程,非阻塞,异步 IO 的工做模型。

Apache2 对于每个请求,都会建立一个新进程或线程,会浪费不少内存和 CPU 时间,而 Nginx 使用操做系统提供的IO多路复用技术(epoll), 在一个线程中处理全部的请求。当一个 IO 操做开始的时候,Nginx 不会等待操做完成就会去处理下一个请求,等到某个 IO 操做完成后,Nginx 再回过头去处理此次 IO 的后续工做。


6.nginx和apache谁处理静态块:

nginx处理静态快,apache处理动态快。


7.http协议

http是应用层的面相对象的协议,全称是超文本传输协议,是客户端与服务器通讯的协议,采用请求/响应的模式,最经常使用的有GET和POST请求


8.软链接与硬连接的区别:

若一个 inode 号对应多个文件名,则称这些文件为硬连接。所以,删除一个硬连接文件并不影响其余有相同 inode 号的文件。硬连接不能对目录进行建立,只可对文件建立。

软链接能够理解为windows下的快捷方式


9.请求一个网站的过程

域名解析 --> 发起TCP的3次握手 --> 创建TCP链接后发起http请求 --> 服务器响应http请求,浏览器获得html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户


10.linux中文件权限t和s分别是什么意思

suid的设置出如今文件拥有者的x位置上,若是以前用户有x权限,设置suid后,x就会成为s(小写的s);若是以前没有x权限,即-,设置以后就会成为S(大写S)。

这个脚本的所属主和所属组为root。咱们固然能够以root的用户的身份执行它,可是若是在某种场合,普通用户也须要执行这个脚原本修改本身的密码的时候,也须要调用这个脚本,因而,咱们设置了suid位,也就是咱们看到的那样,在所属主的标志位上有个s。这样一来,其余人有读取和执行的权限,并且能够假如咱们如今有个普通用户名为sunny,如今切换到sunny,执行此脚本,表面上咱们看是执行成功了,其实咱们是借助root用户的身份来执行它的,而不是sunny,这就是suid的做用。

T或T(Sticky):/tmp和 /var/tmp目录供全部用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。


11.top命令第三行都是什么含义

6.7% us — 用户空间占用CPU的百分比。

0.4% sy — 内核空间占用CPU的百分比。

0.0% ni — 改变过优先级的进程占用CPU的百分比

92.9% id — 空闲CPU百分比

0.0% wa — IO等待占用CPU的百分比

0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比

0.0% si — 软中断(Software Interrupts)占用CPU的百分比

静态查看的话可查看/proc/stat和/proc/loadavg显示处理器使用率和平均CPU使用率


12.netstat和ps的区别

netstat查看端口相关信息

ps查看当前正在运行的进程信息


13.写一条iptables容许192.168.0.3这个IP访问22端口

iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT


14.SNAT和DNAT的区别:

SNAT:开放内网机器外网权限

DNAT:发布内部服务器,让外面的用户能访问到服务器。

资料参考:http://blog.chinaunix.net/uid-7411781-id-3442250.html


15.iptables设置作nat转发的步骤

首先开启内核转发的模块。
echo 1 > /porc/sys/net/ipv4/ip_forward  #这是个暂时的作法,重启后就会失效,好的作法是:
vi /etc/sysctl.conf
修改其中的net.ipv4.ip_forward = 1
DNS的配置在/etc/resolv.conf中添加DNS的IP便可
而后要让它当即生效,须要执行命令:
sysctl -p 

第二步添加NAT:

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
#这条命令里的 eth0表明外网接口,-s 192.168.10.0/24表明内网段


16.网页返回常见状态码

200表示服务器成功处理请求。

201请求成功而且服务器建立了新的资源。

202服务器已经接受请求,但还没有处理。

400服务器不理解请求的语言,请求错误。

401身份验证错误

403服务器拒绝请求

404找不到网页

500服务器内部错误

502错误网关

503服务器不可用。

504网关超时

505服务器不支持请求中所用的http协议版本

参考网页:http://www.cnblogs.com/captain_jack/archive/2010/09/20/1831792.html


17.lvs、nginx、haproxy的区别

lvs优点:

1.抗负载能力强,工做在4层

2.工做稳定

3.无流量。lvs仅仅分发请求,而流量并不从它自己出去(dr)

4.基本支持全部应用。由于lvs工做在4层,因此它能够对几乎全部应用作负载均衡

nginx:

1.nginx工做在网络的7层,因此它能够针对http应用自己来作分流策略,好比针对域名、目录结构等。

2.nginx也一样能承受很高负载且稳定,但负载度和稳定度差lvs还有几个等级:nginx处理全部流量因此受限于机器IO和配置

3.nginx能够检测到服务器内部的故障,好比根据服务器处理网页返回的状态码、超时等等,而且会把返回错误的请求从新提交到另外一个节点。

在使用上,通常最前端所采起的策略应是lvs,也就是DNS的指向应为lvs均衡器,lvs的优势令它很是适合作这个任务。

重要的ip地址,最好交由lvs托管,好比数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会愈来愈大,若是更换ip则故障会接踵而至。因此将这些重要ip交给lvs托管是最为稳妥的,这样作的惟一缺点是须要的VIP数量会比较多。

nginx可做为lvs节点机器使用,一是能够利用nginx的功能,二是能够利用nginx的性能。固然这一层面也能够直接使用squid,squid的功能方面就比nginx弱很多了,性能上也有所逊色于nginx。

nginx也可做为中层代理使用,这一层面nginx基本上无对手,惟一能够撼动nginx的就只有lighttpd了,不过lighttpd目前尚未 能作到nginx彻底的功能,配置也不那么清晰易读。另外,中层代理的IP也是重要的,因此中层代理也拥有一个VIP和lvs是最完美的方案了。

haproxy:

一、HAProxy是工做在网络7层之上。

二、可以补充Nginx的一些缺点好比Session的保持,Cookie的引导等工做

三、支持url检测后端的服务器出问题的检测会有很好的帮助。

4.单纯从效率上来说HAProxy更会比Nginx有更出色的负载均衡速度。

五、HAProxy能够对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。

如今网站发展的趋势对网络负载均衡的使用是随着网站规模的提高根据不一样的阶段来使用不一样的技术:

第一阶段:利用Nginx或者HAProxy进行单点的负载均衡,这一阶段服务器规模刚脱离开单服务器、单数据库的模式,须要必定的负载均衡,可是 仍然规模较小没有专业的维护团队来进行维护,也没有须要进行大规模的网站部署。这样利用Nginx或者HAproxy就是第一选择,此时这些东西上手快, 配置容易,在七层之上利用HTTP协议就能够。这时是第一选择

第二阶段:随着网络服务进一步扩大,这时单点的Nginx已经不能知足,这时使用LVS或者商用F5就是首要选择,Nginx此时就做为LVS或者 F5的节点来使用,具体LVS或者F5的是选择是根据公司规模,人才以及资金能力来选择的,这里也不作详谈,可是通常来讲这阶段相关人才跟不上业务的提 升,因此购买商业负载均衡已经成为了必经之路。

第三阶段:这时网络服务已经成为主流产品,此时随着公司知名度也进一步扩展,相关人才的能力以及数量也随之提高,这时不管从开发适合自身产品的定制,以及下降成原本讲开源的LVS,已经成为首选,这时LVS会成为主流。

最终造成比较理想的状态为:F5/LVS<—>Haproxy<—>Squid/Varnish<—>AppServer。

 

18.经常使用的调度算法有什么:

1.轮叫调度

2.加权轮叫调度

3.最小链接调度

4.加权最小链接调度

 

19.lvs的三种路由方式

LVS-NAT:地址转换

LVS-DR:直接路由

LVS-TUN:隧道

详情参考:http://www.cnblogs.com/lixigang/p/5371815.html


20.redis两种持久化的区别

优势:

1.只有一个文件dump.rdb,方便持久化。

2.容灾性好,一个文件能够保存到安全的磁盘。

3.性能最大化,fork子进程来完成写操做,让主进程继续处理命令,因此是IO最大化。

4.相对于数据集大时,比AOF的启动效率更高。

缺点:

1.数据安全性低,当服务器还在等待写快照时出现了宕机,那么将会丢失数据。 

AOF持久化是指全部的命令行记录以redis命令请求协议的格式保存为aof文件。

优势:

1.数据安全,每进行一次命令操做就记录到aof文件中一次;

2.经过append模式写文件,即便中途服务器宕机,能够经过redis-check-aof工具解决数据一致性问题。

3.AOF机制的rewrite模式,用来将过大的aof文件缩小,

缺点:

1.文件会比RDB形式的文件大。

2.数据集大的时候,比rdb启动效率低。

 

21.linux文件删除原理

linux是经过link数量控制文件删除,通常来讲,每一个文件都有两个计数器:i_link和i_count

i_link是文件的硬连接数。 i_count是文件被进程调用数

只要i_link和i_count同时为0时,文件才回被删除。

rm删除的是文件的i_link数


22.linux系统的启动过程

1.加载BIOS

2.读取MBR

3.Boot Loader

4.加载内核

5.用户层init根据inittab文件来设定运行级别

6.init进程执行rc.sysinit

7.启动内核模块

8.执行不一样运行级别的脚本程序 

9.执行/etc/rc.d/rc.local

10.执行/bi/login程序,进入登录状态 

详细参考:http://blog.chinaunix.net/uid-26495963-id-3066282.html

 

23.top命令右上角的load average的值是什么意思,高于多少表明负载有问题

拆分出四个内容 :
1. load average(系统平均负载)是什么?
系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数.

2. load average的三个数值表明什么?
经过top\uptime\w能够获取到load average的值,它的三个数字值分别记录了一分钟\五分钟\十五分钟的系统平均负载.

3. 高于多少负载有问题? 
高于多少表明负载有问题呢,这里有两个法则:

“有多少核心即为有多少负荷”法则: 在多核处理中,你的系统均值不该该高于处理器核心的总数量。

“核心的核心”法则: 核心分布在分别几个单个物理处理中并不重要,其实两颗四核的处理器 等于 四个双核处理器 等于 八个单处理器。因此,它应该有八个处理器内核。


4. 咱们以哪一个数字为准?一分钟?五分钟?仍是十五分钟?
我认为你应该着眼于五分钟或者十五分钟的平均数值。坦白讲,若是前一分钟的负载状况是 1.00,那么仍能够说明认定服务器状况仍是正常的。 可是若是十五分钟的数值仍然保持在 1.00,那么就值得注意了(根据个人经验,这时候你应 该增长的处理器数量了).


24.当一个网站访问慢时,你怎么去优化 

翻译为: 当一个网站访问慢时, 你都是怎么去查找问题,和解决问题以达到优化效果的

第一,用5分钟排除网络因素,借助工具(如pagespeed)分析页面加载过程
1. 某个元素或者图片加载过慢: 具体缘由具体分析
2. DNS解析时长问题: 能够经过购买解析服务, 来让本身的域名在各地DNS更多缓存
3. 网络带宽瓶颈: 考虑增长带宽
4. 网络线路波动: 考虑CDN,或者镜像站
第二,要考虑到服务器问题
1. 是否有服务器过载: 考虑增长硬件
2. I/O操做:数据库的频繁读写,服务器的频繁请求(包括静态文件的读取,图片的读取)等都属于I/O问题。对于数据库的问题,首先要优化SQL,存储过程等。若是单表数据量过大要考虑作分割或者运用程序来控制分表。若是请求量过大,要考虑作集群。对于服务器(静态)文件的I/O问题,则能够考虑作CDN,这样也能够解决地域性问题。对于动态文件的访问,则涉及到代码优化及负载均衡两项。
3. 具体应用优化: nginx针对访问量修改配置文件,调高Buffers 调低keep alive空链接时间等
第三,安全方面
1. 查看web\mail等其它服务日志,是否存在被***现象: 针对安全方面加固
2. 是否有其它***存在DDOS,WEB CC等


25.进程和线程的区别

翻译: 进程和线程的概念

进程(英语:process),是计算机中已运行程序的实体。进程是程序的基本执行实体,进程自己不是基本运行单位,而是线程的容器

线程(英语:thread)是操做系统可以进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运做单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中能够并发多个线程,每条线程并行执行不一样的任务。

① 进程是系统进行资源分配的基本单位,有独立的内存地址空间; 线程是CPU调度的基本单位,没有单独地址空间,有独立的栈,局部变量,寄存器, 程序计数器等。
② 建立进程的开销大,包括建立虚拟地址空间等须要大量系统资源; 建立线程开销小,基本上只有一个内核对象和一个堆栈。
③ 一个进程没法直接访问另外一个进程的资源;同一进程内的多个线程共享进程的资源。
④ 进程切换开销大,线程切换开销小;进程间通讯开销大,线程间通讯开销小。
⑤ 线程属于进程,不能独立执行。每一个进程至少要有一个线程,成为主线程


26.经常使用的RAID原理

RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,所以具备很高的数据传输率,但它没有数据冗余,所以并不能算是真正的RAID 结构。RAID 0 只是单纯地提升性能,并无为数据的可靠性提供保证,并且其中的一个磁盘失效将影响到全部数据。所以,RAID 0 不能应用于数据安全性要求高的场合。

RAID 1它是经过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,所以RAID 1 能够提升读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统能够自动切换到镜像磁盘上读写,而不须要重组失效的数据。简单来讲就是:镜象结构,相似于备份模式,一个数据被复制到两块硬盘上。

RAID 10高可靠性与高效磁盘结构一个带区结构加一个镜象结构,由于两种结构各有优缺点,所以能够相互补充。主要用于容量不大,但要求速度和差错控制的数据库中。

RAID 5分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于全部磁盘上,任何一个硬盘损坏,均可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。


27.有没有作过性能调优

这个是个大的话题,要反问是应用调优仍是系统调优 没有进行过调优,基本调优步骤:
1. 找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);
2. 性能优化的方案(升级硬件?改进系统系统结构?);
3. 达到合理的硬件和软件配置;
4. 使系统资源使用达到最大的平衡。


28.我想查看WEB日志中访问TOP 10的IP有哪些怎么查看

当时是面试官让我把具体命令说出来, 也就是看看知道一些处理文本的命令嘛.其实不难:

1

cat logfile |cut -d ' ' -f 5 |sort |uniq -c | sort -nr | head -n 10 |less

cut命令负责将文本以空格分开,取第五列数据==>
排序==> 去重并统计次数(-c参数就是统计参数)==> 再次排序(统计次数会被写在IP以前, 因此这里是按统计次数排序 sort的-r是逆序就是从大到小,-n为按数字排序主要是sort默认排序极可能会把10判断为比2还小,经过-n就不会出现这个状况)==> 取次数最多的10条


29.CDN的主要原理

① 源站
源站指发布内容的原始站点。添加、删除和更改网站的文件,都是在源站上进行的;另外缓存服务器所抓取的对象也所有来自于源站。
② 缓存服务器
缓存服务器是直接提供给用户访问的站点资源,有一台或数台服务器组成;当用户发起访问时,他的访问请求被智能DNS定位到离他较近的缓存服务器。若是用户所请求的内容恰好在缓存里面,则直接把内容返还给用户;若是访问所需的内容没有被缓存,则缓存服务器向邻近的缓存服务器或直接向源站抓取内容,而后再返还给用户。
③ 智能DNS
智能DNS是整个CDN技术的核心,它主要根据用户的来源,将其访问请求指向离用户比较近的缓存服务器,如把广州电信的用户请求指向到广州电信IDC机房中的缓存服务器。经过智能DNS解析,让用户访问同服务商下的服务器,消除国内南北网络互相访问慢的问题,达到加速做用。智能DNS的出现,颠复了传统的一个域名对应一个镜像的作法,让用户更加便捷的去访问网站。

缓存服务器中有访问内容:
客户端请求 ==> 智能DNS解析到最近的缓存服务器 ==> 缓存服务器返回请求资源
缓存服务器中无访问内容:
客户端请求 ==> 智能DNS解析到最近的缓存服务器 ==> 缓存服务器发现没有客户端请求资源,向源站请求 ==> 源站返回资源到缓存服务器 ==> 缓存服务器返回客户端请求资源


30.跨服务器同步文件

查看:http://coolk.blog.51cto.com/1752609/1707382


31.服务器更换主板后linux没法识别网卡

系统加载网卡驱动后会去读一个文件,这个文件是一个缓存文件,包含了网卡的mac地址,由于更换了主板,网卡的mac也变更了,可是这个文件的mac仍是没有变,因此现有的网卡mac地址和文件里的不一样,因此系统就拒绝启动,把这个文件删除后重启系统就能够了 操做为下:

>#mv /etc/udev/rules.d/70-persistent-net.rules  /etc/udev/rules.d/70-persistent-net.rules.bak

>#reboot  #重启后会生成新的缓存文件

 

32.将/opt目录中建立时间超过7天的文件压缩成tar.ge格式

find /opt -type f -mtime +7 -name ‘*’ -exec tar -zxvf {}.tar.gz {}\;

-amin n

查找系统中最后N分钟访问的文件

-atime n

查找系统中最后n*24小时访问的文件

-cmin n

查找系统中最后N分钟被改变文件状态的文件

-ctime n

查找系统中最后n*24小时被改变文件状态的文件

-mmin n

查找系统中最后N分钟被改变文件数据的文件

-mtime n

查找系统中最后n*24小时被改变文件数据的文件

 

33.2016-09-09 13:30:28这个日期用命令怎么表示

data +“%Y-%m-%d %H:%M:%S”

详细参考data命令地址:http://blog.csdn.net/runming918/article/details/7223520


34.天天中午12点使用tcpdump命令抓取目的端口为TCP 80的1000个包输出到当前目录并以当前时间命名.请写出定时任务及脚本内容.

待补全

 

35.简述非对称加密算法工做过程。

非对称密钥加密体制,又称为公钥密码体制、双密钥密码体制。它是指对信息加密和解密时所使用的密钥是不一样的,即有两个密钥,一个是能够公开的,另外一个是私有的,这两个密钥组成一对密钥对,分别为公开密钥和私有密钥。若是使用其中一个密钥对数据进行加密,则只有用另一个密钥才能解密。因为加密和解密时所使用的密钥不一样,这种加密体制称为非对称密钥加密体制。 在公开密钥算法中,用公开的密钥进行加密,用私有密钥进行解密的过程,称为加密。而用私有密钥进行加密,用公开密钥进行解密的过程称为认证。

参考网页:http://www.wm23.com/wiki/933.htm

相关文章
相关标签/搜索