什么是 inode (索引节点)?
一般来说,面试不会问 inode 。但是 inode 是一个重要概念,是理解 Unix/Linux 文件系统和硬盘储存的基础。
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一 个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个储存文件的元信息的地方,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
简述 Linux 文件系统通过 i 节点把文件的逻辑结构和物理结构转换的工作过程?
Linux 通过 inode 节点表将文件的逻辑结构和物理结构进行转换。
inode 节点是一个 64 字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在 inode 节点表中最重要的内容是磁盘地址表。在磁盘地址表中有 13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。
Linux 文件系统通过把 inode 节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的 inode 节点号,通过该 inode 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。
什么是硬链接和软链接?
硬链接
由于 Linux 下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配 inode 。每添加一个硬链接,文件的链接数就加 1 。
不足:
1)不可以在不同文件系统的文件间建立链接;
2)只有超级用户才可以为目录创建硬链接。
软链接
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
不足:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
实际场景下,基本是使用软链接。
总结区别如下
- 硬链接不可以跨分区,软件链可以跨分区。
- 硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。
- 删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。
RAID 是什么?
RAID 全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID 通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘。
RAID 分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的 RAID 方案。
当然,因为很多公司都使用云服务,大家很难接触到 RAID 这个概念,更多的可能是普通云盘、SSD 云盘的概念。
安全
一台 Linux 系统初始化环境后需要做一些什么安全工作?
1、添加普通用户登陆,禁止 root 用户登陆,更改 SSH 端口号。
2、服务器使用密钥登陆,禁止密码登陆。
3、开启防火墙,关闭 SElinux ,根据业务需求设置相应的防火墙规则。
4、装 fail2ban 这种防止 SSH 暴力破击的软件。
5、设置只允许公司办公网出口 IP 能登陆服务器(看公司实际需要),也可以安装 VPN 等软件,只允许连接 VPN 到服务器上。
6、修改历史命令记录的条数为 10 条。
7、只允许有需要的服务器可以访问外网,其它全部禁止。
8、做好软件层面的防护。
设置 nginx_waf 模块防止 SQL 注入。
把 Web 服务使用 www 用户启动,更改网站目录的所有者和所属组为 www 。
什么叫 DDOS 攻击?怎么预防DDOS 攻击?
DDOS攻击,全称是 Distributed Denial of Service,翻译成中文就是分布式拒绝服务。一般来说是指攻击者对目标网站在较短的时间内发起大量合法请求,大规模消耗目标网站的主机资源,让它无法正常服务以达到瘫痪网络的目的。在线游戏、互联网金融等领域是 DDOS 攻击的高发行业。
可能我举个例子会更加形象点。
我开了一家有五十个座位的重庆火锅店,由于用料上等,童叟无欺。平时门庭若市,生意特别红火,而对面二狗家的火锅店却无人问津。二狗为了对付我,想了一个办法,叫了五十个人来我的火锅店坐着却不点菜,让别的客人无法吃饭。
怎么预防DDOS 攻击?
高防服务器
高防服务器主要是指能独立硬防御 50Gbps 以上的服务器,能够帮助网站拒绝服务攻击,定期扫描网络主节点等,这东西是不错,就是贵~
还是拿我开的重庆火锅店举例,高防服务器就是我给重庆火锅店增加了两名保安,这两名保安可以让保护店铺不受流氓骚扰,并且还会定期在店铺周围巡逻防止流氓骚扰。
黑名单
面对火锅店里面的流氓,我一怒之下将他们拍照入档,并禁止他们踏入店铺,但是有的时候遇到长得像的人也会禁止他进入店铺。这个就是设置黑名单,此方法秉承的就是“错杀一千,也不放一百”的原则,会封锁正常流量,影响到正常业务。
DDOS清洗
DDos 清洗,就是我发现客人进店几分钟以后,但是一直不点餐,我就把他踢出店里。
DDoS 清洗会对用户请求数据进行实时监控,及时发现DOS攻击等异常流量,在不影响正常业务开展的情况下清洗掉这些异常流量。
CDN 加速
CDN 加速,我们可以这么理解:为了减少流氓骚扰,我干脆将火锅店开到了线上,承接外卖服务,这样流氓找不到店在哪里,也耍不来流氓了。
在现实中,CDN 服务将网站访问流量分配到了各个节点中,这样一方面隐藏网站的真实 IP,另一方面即使遭遇 DDoS 攻击,也可以将流量分散到各个节点中,防止源站崩溃。
又拍云安全防护
又拍云安全防护是针对容易遭受大流量 DDoS 攻击的电商、金融、游戏等类型的客户专门推出的付费增值服务。DDoS 高防节点拥有强大的流量攻击防护能力,并且支持 TCP/UDP 等多种协议,可防护 SYN Flood,ACK Flood 等多种类型的攻击。用户接入服务后,防护平台会识别并将攻击流量引流至高防节点,确保用户业务的可持续使用。
什么叫 CC 攻击?CC攻击有哪些危害?如何防御CC攻击呢
CC攻击(Challenge Collapsar挑战黑洞 )是DDOS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。CC攻击是一种针对Http业务的攻击手段,该攻击模式不需要太大的攻击流量,它是对服务端业务处理瓶颈的精确打击,攻击目标包括:大量数据运算、数据库访问、大内存文件等
CC攻击的种类有三种,直接攻击,代理攻击,僵尸网络攻击,直接攻击主要针对有重要缺陷的 WEB 应用程序,一般说来是程序写的有问题的时候才会出现这种情况,比较少见。僵尸网络攻击有点类似于 DDOS 攻击了,从 WEB 应用程序层面上已经无法防御,所以代理攻击是CC 攻击者一般会操作一批代理服务器,比方说 100 个代理,然后每个代理同时发出 10 个请求,这样 WEB 服务器同时收到 1000 个并发请求的,并且在发出请求后,立刻断掉与代理的连接,避免代理返回的数据将本身的带宽堵死,而不能发动再次请求,这时 WEB 服务器会将响应这些请求的进程进行队列,数据库服务器也同样如此,这样一来,正常请求将会被排在很后被处理,就象本来你去食堂吃饭时,一般只有不到十个人在排队,今天前面却插了一千个人,那么轮到你的机会就很小很小了,这时就出现页面打开极其缓慢或者白屏。
CC攻击有哪些危害?
(1.)网站访问速度很慢。
明白了上方描述的CC攻击的原理就可以看出,CC攻击后会导致网站访问速度异常缓慢甚至会出现打不开或者连接不上的情况,哪怕真实的用户访问量很少,打开速度也非常慢。
(2.)被搜索引擎K站,排名消失。
网站长时间被CC攻击,会导致网站访问异常,搜索引擎无法抓取,导致辛辛苦苦做上来的关键词排名瞬间消失,网站访问量骤减,转化率大大降低,收益大大降低。
(3.)被云服务器提供商清退。
CC攻击会占用大量服务器资源,哪怕你的服务器再好,也经受不住长时间的CC轮番攻击,最终会都会宕机,严重的还会被云服务商清退,最终导致你更大的损失。(担心这块的可以优先考虑物理机)
(4.)严重影响用户体验。
正常访问的网站加载速度超过2秒,都会消耗用户的耐心,大家都知道加载速度超过2秒代表着什么,直接带来利益上的巨大损失,最终导致用户跳出率极高、严重流失,损害网站品牌形象。
如何防御CC攻击呢
(1).取消域名绑定
一般cc攻击都是针对网站的域名进行攻击,比如我们的网站域名是“www.*****.com”,那么攻击者就在攻击工具中设定攻击对象为该域名然后实施攻击。 对于这样的攻击我们的措施是取消这个域名的绑定,让CC攻击失去目标。
(2).域名欺骗解析
如果发现针对域名的CC攻击,我们可以把被攻击的域名解析到127.0.0.1这个地址上。我们知道127.0.0.1是本地回环IP是用来进行网络测试的,如果把被攻击的域名解析到这个IP上,就可以实现攻击者自己攻击自己的目的,这样他再多的肉鸡或者代理也会宕机,让其自作自受。
(3).更改Web端口
一般情况下Web服务器通过80端口对外提供服务,因此攻击者实施攻击就以默认的80端口进行攻击,所以,我们可以修改Web端口达到防CC攻击的目的。运行IIS管理器,定位到相应站点,打开站点“属性”面板,在“网站标识”下有个TCP端口默认为80,我们修改为其他的端口就可以了。
(4).屏蔽IP
我们通过命令或在查看日志发现了CC攻击的源IP,就可以在防火墙中设置屏蔽该IP对Web站点的访问,从而达到防范攻击的目的。
上面的这些只是针对比较简单的CC攻击。像遇到非常大量难检测的一般都是防不住的
市场上也有很多物理机服务器,都是有自带的cc策略数据库,能给根据精准的CC策略数据库中的策略来进行CC策略进行抓包封包处理防护。也可以根据特征来手动上CC策略,从此不怕CC.
CC的攻击的防御必须要结合实际业务情况,对实际业务构建系统的防御模型,如:连接特征模型、业务访问特征模型、客户端行为模型等,接收请求端统计客户信息并依据模型特征进行处理,包括:用户黑名单限制、限制访问速率、随机丢弃请求等。对于流行的 DDoS/CC 流量型攻击,DDoS 高防服务可以通过云端清洗集群、数据库监控牵引系统等技术进行防护。
什么数据库注入?如何避免 SQL 注入
用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL 注入。
SQL注入,是从正常的 WWW 端口访问,而且表面看起来跟一般的 Web 页面访问没什么区别,如果管理员没查看日志的习惯,可能被入侵很长时间都不会发觉。
如何避免 SQL 注入1. 避免使用动态SQL
避免将用户的输入数据直接放入 SQL 语句中,最好使用准备好的语句和参数化查询,这样更安全。
2. 不要将敏感数据保留在纯文本中
加密存储在数据库中的私有/机密数据,这样可以提供了另一级保护,以防攻击者成功地排出敏感数据。
3. 限制数据库权限和特权
将数据库用户的功能设置为最低要求;这将限制攻击者在设法获取访问权限时可以执行的操作。
4. 避免直接向用户显示数据库错误
攻击者可以使用这些错误消息来获取有关数据库的信息。
实战
如何选择 Linux 操作系统版本?
一般来讲,桌面用户首选 Ubuntu ;服务器首选 CentOS 。
安全性要求较高,则选择 Debian 或者 FreeBSD 。
需要使用数据库高级服务和电子邮件网络应用的用户可以选择 SUSE 。
想要新技术新功能可以选择 Feddora (Feddora 是 RHEL 和 CentOS 的一个测试版和预发布版本。)
【重点】根据现有状况,绝大多数互联网公司选择 CentOS 。现在比较常用的是 6 系列,现在市场占有大概一半左右。另外的原因是 CentOS 更侧重服务器领域,并且无版权约束
如何规划一台 Linux 主机,步骤是怎样?
1、确定机器是做什么用的,比如是做 WEB 、DB、还是游戏服务器。不同的用途,机器的配置会有所不同。
2、确定好之后,就要定系统需要怎么安装,默认安装哪些系统、分区怎么做。
3、需要优化系统的哪些参数,需要创建哪些用户等等的。
请问当用户反馈网站访问慢,你会如何处理?
有哪些方面的因素会导致网站网站访问慢?
1、服务器出口带宽不够用
本身服务器购买的出口带宽比较小。一旦并发量大的话,就会造成分给每个用户的出口带宽就小,访问速度自然就会慢。
跨运营商网络导致带宽缩减。例如,公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能导致带宽的缩减。
2、服务器负载过大,导致响应不过来
可以从两个方面入手分析:
分析系统负载,使用 w 命令或者 uptime 命令查看系统负载。如果负载很高,则使用top 命令查看 CPU ,MEM 等占用情况,要么是 CPU 繁忙,要么是内存不够。
如果这二者都正常,再去使用 sar 命令分析网卡流量,分析是不是遭到了攻击。一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。
3、数据库瓶颈
如果慢查询比较多。那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等。然后,也可以搭建MySQL 主从,一台 MySQL 服务器负责写,其他几台从数据库负责读。
4、网站开发代码没有优化好
例如 SQL 语句没有优化,导致数据库读写相当耗时。
针对网站访问慢,怎么去排查?
1、首先要确定是用户端还是服务端的问题。当接到用户反馈访问慢,那边自己立即访问网站看看,如果自己 这边访问快,基本断定是用户端问题,就需要耐心跟客户解释,协助客户解决问题。
不要上来就看服务端的问题。一定要从源头开始,逐步逐步往下。
2、如果访问也慢,那么可以利用浏览器的调试功能,看看加载那一项数据消耗时间过多,是图片加载慢,还 是某些数据加载慢。
3、针对服务器负载情况。查看服务器硬件(网络、CPU、内存)的消耗情况。如果是购买的云主机,比如阿里 云,可以登录阿里云平台提供各方面的监控,比如 CPU、内存、带宽的使用情况。
4、如果发现硬件资源消耗都不高,那么就需要通过查日志,比如看看 MySQL慢查询的日志,看看是不是某条SQL 语句查询慢,导致网站访问慢。
怎么去解决?
1、如果是出口带宽问题,那么久申请加大出口带宽。
2、如果慢查询比较多,那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
3、如果数据库响应慢,考虑可以加一个数据库缓存,如 Redis 等等。然后也可以搭建MySQL 主从,一台 MySQL 服务器负责写,其他几台从数据库负责读。
4、申请购买 CDN 服务,加载用户的访问。
5、如果访问还比较慢,那就需要从整体架构上进行优化咯。做到专角色专用,多台服务器提供同一个服务。
Linux 性能调优都有哪几种方法?
1、Disabling daemons (关闭 daemons)。
2、Shutting down the GUI (关闭 GUI)。
3、Changing kernel parameters (改变内核参数)。
4、Kernel parameters (内核参数)。
5、Tuning the processor subsystem (处理器子系统调优)。
6、Tuning the memory subsystem (内存子系统调优)。
7、Tuning the file system (文件系统子系统调优)。
8、Tuning the network subsystem(网络子系统调优)。
Linux 命令大全
Linux 命令大全:Linux 命令大全 | 菜鸟教程