存储基本概念【转】

1.lun
LUN的全称是Logical Unit Number,也就是逻辑单元号,其主要作用是为了给相连的服务器分配逻辑单元号(LUN)。磁盘阵列上的硬盘组成RAID组后,通常连接磁盘阵列的服务器并不能直接访问RAID组,而是要再划分为逻辑单元才能分配给服务器。这是因为SCSI总线上可挂接的设备数量是有限的,一般为8个或者16个,我们可以用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,在区别设备的时候,只要说几号几号就可以了。而实际上需要用来描述的对象,是远远超过该数字的,于是引进了LUN的概念,也就是说LUN ID的作用就是扩充了Target ID。每个Target下都可以有多个LUN Device,通常简称LUN Device为LUN,这样就可以说每个设备的描述就由原来的Target x变成Target x LUN y了。LUN就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方。
LUN ID不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的LUN可能是磁盘空间,可能是磁带机,或者是media changer等等。
LUN的神秘之处(相对于一些新手来说)在于,它很多时候不是什么可见的实体,而是一些虚拟的对象。比如一个阵列柜,主机那边看作是一个Target Device,那为了某些特殊需要,我们要将磁盘阵列柜的磁盘空间划分成若干个小的单元给主机来用,于是就产生了一些什么逻辑驱动器的说法,也就是比Target Device级别更低的逻辑对象,我们习惯于把这些更小的磁盘资源称之为LUN0、LUN1、LUN2…什么的。而操作系统的机制使然,操作系统识别的最小存储对象级别就是LUN Device,这是一个逻辑对象,所以很多时候被称为Logical Device。服务器识别到的最小的存储资源,就是LUN级别的。主机的HBA 卡看到的存储上的存储资源就靠主要两个东西来定位,一个就是存储系统的控制器(Target),一个就是LUN ID,这个LUN是由存储的控制系统给定的,是存储系统的某部分存储资源。一旦服务器与LUN连接上,就可以通过当前的网络接口将数据传输到磁盘阵列上。
2.volume
LUN是对存储设备而言的,volume是对主机而言的。
怎么去理解呢?选择存储设备上的多个硬盘形成一个RAID组,再在RAID组的基础上创建一个或多个LUN(一般创建一个LUN)。许多厂商的存储设备只支持一个RAID组上创一个LUN。此时LUN相对于存储设备是一个逻辑设备。当网络中的主机连接到存储设备时,就可以识别到存储设备上逻辑设备LUN,此时LUN相对于主机来讲就是一个“物理硬盘”,与C盘D盘所在IDC或SCSI硬盘的性属是相同的。在该“物理硬盘”上创建一个或多个分区,再创建文件系统,才可以得到一个VOLUME。此时VOLUME相对于主机是一个逻辑设备。
从容量大小方面比较VOLUME,分区、LUN、RAID的关系如下:
VOLUME = 分区 ≤ 主机设备管理器中的磁盘 = LUN ≤ RAID ≤ 存储设备中硬盘的总容量。
上述只是针对一般情况,VOLUME也只是针对主机来讲。个别厂商对LUN和VOLUME定义与普通厂商的定义不同,甚至会起一些奇怪的名称,这些名称即使是存储行业的资深人士也不一定全明白。不过只要你能分清楚其实质就行。
3.HBA
HBA,即主机总线适配器英文“Host Bus Adapter”缩写。是一个在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板或集成电路适配器。因为HBA减轻了主处理器在数据存储和检索任务的负担,它能够提高服务器的性能。一个HBA和与之相连的磁盘子系统有时一起被称作一个磁盘通道。
a、总线适配器是个什么东西呢?
我们首先要了解一下主机的结构,一台计算机内部多半由两条总线串起来(当然实际情况会有不同,这里只讨论常见的,简单的情况),一条总线叫系统总线,一条叫I/O总线。系统总线上接了CPU,Memory,cache什么的,I/O总线上接的就是外围设备,现如今最常见的就是PCI总线了。这两条总线之间用桥接的芯片或者说电路连接起来。举个形象的例子,就好比一个城市里,有两条主干道,一条属于行政区,一条属于商业区,中间有个环岛,将两条主干道连接到了一起,系统总线就好比行政区里的主干道,而I/O总线就好比商业区的主干道。系统总线和I/O总线的带宽的单位都是以Gbyte来记,但是显而易见的是,行政区的主干道和商业区的主干道相比的话,前者肯定更“核心”,更宽,更顺畅,设计的要求也高。 我们知道,在向公仆部门要求服务的时候,是要有一些接口的部门和程序的,而桥接芯片的作用就是连接和协调两条总线的工作的。
虽然I/O总线的速度和系统总线的带宽相比要低很多,但是好歹也是以G来计量的,而我们知道外围设备的速度,往往只有几百兆,甚至几十k而已,怎么协调工作呢?好比卖煎饼果子摊子不能直接戳到城市主干道上,怎么办?好办,在主干道边上开个2000平米的小吃城,把摊子都收进去好了。那么主机总线适配器的作用也就是这个,我们就是要把外设组织起来,连接到I/O总线上去!HBA就是指Host和I/O BUS直接的一个适配器,也好比一个水管工常说的“双通”。
b、常见的HBA有哪些呢?
比如显卡,网卡,scsi卡,1394卡等等。我要拿出来说的就是FCHBA和ATA&IDE。我们通常说的什么Emulex的LP9002,什么Qlogic的QLA2340都是FCHBA卡,就是将Fibre Channel的设备和IO总线连接起来的适配器。ATA也是一种适配器技术,我们PC主板上的ATA接口,就是一个磁盘适配器的对外接口,要强调的就是,ATA说的是适配器技术,IDE是说得存储外设技术,比如我们可以说IDE硬盘,IDE光驱,说ATA接口,但是说IDE接口,ATA硬盘就不时那么合适了,虽然很多情况下,大家都习惯把他们混在一起说。
描述HBA的时候,有几个主要的规范要说一下
> 一个承上,就是说,HBA和IOBUS怎么连,我们经常说的PCI接口卡,就是指这个HBA卡是要插在PCI BUS上的PCI slot上的,但是现在的计算机上,不仅仅只有PCI总线而已,大家碰到的时候留意。
>一个启下,就是说HBA要和外设怎么连,这样的规范就很多了。
>再说HBA本身,比如带宽,比如运行机制(protocol等),独立处理能力等等
Tips:有时候我们看到的一块卡,看到的实际是一个物理的卡,有的时候实际上是多个Adapter,好比一家机构,挂多个牌子,有的时候,一块卡有两条通道,好比一家公司,有两套人马。
4.DAS
DAS(Direct Attached Storage—直接连接存储),是指将存储设备通过SCSI接口或光纤通道直接连接到服务器上。
直连式存储依赖服务器主机操作系统进行数据的IO读写和存储维护管理,数据备份和恢复要求占用服务器主机资源(包括CPU、系统IO等),数据流需要回流主机再到服务器连接着的磁带机(库),数据备份通常占用服务器主机资源20-30%,因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行,以免影响正常业务系统的运行。直连式存储的数据量越大,备份和恢复的时间就越长,对服务器硬件的依赖性和影响就越大。
直连式存储与服务器主机之间的连接通道通常采用SCSI连接,带宽为10MB/s、20MB/s、40MB/s、80MB/s等,随着服务器CPU的处理能力越来越强,存储硬盘空间越来越大,阵列的硬盘数量越来越多,SCSI通道将会成为IO瓶颈;服务器主机SCSI ID资源有限,能够建立的SCSI通道连接有限。
无论直连式存储还是服务器主机的扩展,从一台服务器扩展为多台服务器组成的群集(Cluster),或存储阵列容量的扩展,都会造成业务系统的停机,从而给企业带来经济损失,对于银行、电信、传媒等行业7×24小时服务的关键业务系统,这是不可接受的。并且直连式存储或服务器主机的升级扩展,只能由原设备厂商提供,往往受原设备厂商限制。
5.NAS
NAS(Network Attached Storage—网络附加存储),即将存储设备通过标准的网络拓扑结构(例如以太网),连接到一群计算机上。NAS是部件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。需要共享文件的工程小组就是典型的例子。
NAS没有解决与文件服务器相关的一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。
随着IP网络技术的发展,网络接入存储(NAS)技术发生质的飞跃。早期80年代末到90年代初的10Mbps带宽,网络接入存储作为文件服务器存储,性能受带宽影响;后来快速以太网(100Mbps)、VLAN虚网、Trunk(Ethernet Channel) 以太网通道的出现,网络接入存储的读写性能得到改善;1998年千兆以太网(1000Mbps)的出现和投入商用,为网络接入存储(NAS)带来质的变化和市场广泛认可。由于网络接入存储采用TCP/IP网络进行数据交换,TCP/IP是IT业界的标准协议,不同厂商的产品(服务器、交换机、NAS存储)只要满足协议标准就能够实现互连互通,无兼容性的要求;并且2002年万兆以太网(10000Mbps)的出现和投入商用,存储网络带宽将大大提高NAS存储的性能。NAS需求旺盛已经成为事实。首先NAS几乎继承了磁盘列阵的所有优点,可以将设备通过标准的网络拓扑结构连接,摆脱了服务器和异构化构架的桎梏;其次,在企业数据量飞速膨胀中,SAN、大型磁带库、磁盘柜等产品虽然都是很好的存储解决方案,但他们那高贵的身份和复杂的操作是资金和技术实力有限的中小企业无论如何也不能接受的。NAS正是满足这种需求的产品,在解决足够的存储和扩展空间的同时,还提供极高的性价比。因此,无论是从适用性还是TCO的角度来说,NAS自然成为多数企业,尤其是大中小企业的最佳选择。
6.SAN
SAN(存储区域网络)采用光纤通道(Fibre Channel ,简称FC)技术,通过光纤通道交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换技术不完全相同,其服务器和SAN存储有兼容性的要求)。SAN解决方案是从基本功能剥离出存储功能,所以运行备份操作就无需考虑它们对网络总体性能的影响。
———————
作者:liukuan73
来源:CSDN
原文:https://blog.csdn.net/liukuan73/article/details/45506441
版权声明:本文为博主原创文章,转载请附上博文链接!

1.lunLUN的全称是Logical Unit Number,也就是逻辑单元号,其主要作用是为了给相连的服务器分配逻辑单元号(LUN)。磁盘阵列上的硬盘组成RAID组后,通常连接磁盘阵列的服务器并不能直接访问RAID组,而是要再划分为逻辑单元才能分配给服务器。这是因为SCSI总线上可挂接的设备数量是有限的,一般为8个或者16个,我们可以用Target ID(也有称为SCSI ID的)来描述这些设备,设备只要一加入系统,就有一个代号,在区别设备的时候,只要说几号几号就可以了。而实际上需要用来描述的对象,是远远超过该数字的,于是引进了LUN的概念,也就是说LUN ID的作用就是扩充了Target ID。每个Target下都可以有多个LUN Device,通常简称LUN Device为LUN,这样就可以说每个设备的描述就由原来的Target x变成Target x LUN y了。LUN就是我们为了使用和描述更多设备及对象而引进的一个方法而已,一点也没什么特别的地方。
LUN ID不等于某个设备,只是个号码而已,不代表任何实体属性,在我们的实际环境里,我们碰到的LUN可能是磁盘空间,可能是磁带机,或者是media changer等等。
LUN的神秘之处(相对于一些新手来说)在于,它很多时候不是什么可见的实体,而是一些虚拟的对象。比如一个阵列柜,主机那边看作是一个Target Device,那为了某些特殊需要,我们要将磁盘阵列柜的磁盘空间划分成若干个小的单元给主机来用,于是就产生了一些什么逻辑驱动器的说法,也就是比Target Device级别更低的逻辑对象,我们习惯于把这些更小的磁盘资源称之为LUN0、LUN1、LUN2…什么的。而操作系统的机制使然,操作系统识别的最小存储对象级别就是LUN Device,这是一个逻辑对象,所以很多时候被称为Logical Device。服务器识别到的最小的存储资源,就是LUN级别的。主机的HBA 卡看到的存储上的存储资源就靠主要两个东西来定位,一个就是存储系统的控制器(Target),一个就是LUN ID,这个LUN是由存储的控制系统给定的,是存储系统的某部分存储资源。一旦服务器与LUN连接上,就可以通过当前的网络接口将数据传输到磁盘阵列上。
2.volumeLUN是对存储设备而言的,volume是对主机而言的。
怎么去理解呢?选择存储设备上的多个硬盘形成一个RAID组,再在RAID组的基础上创建一个或多个LUN(一般创建一个LUN)。许多厂商的存储设备只支持一个RAID组上创一个LUN。此时LUN相对于存储设备是一个逻辑设备。当网络中的主机连接到存储设备时,就可以识别到存储设备上逻辑设备LUN,此时LUN相对于主机来讲就是一个“物理硬盘”,与C盘D盘所在IDC或SCSI硬盘的性属是相同的。在该“物理硬盘”上创建一个或多个分区,再创建文件系统,才可以得到一个VOLUME。此时VOLUME相对于主机是一个逻辑设备。
从容量大小方面比较VOLUME,分区、LUN、RAID的关系如下:
VOLUME = 分区 ≤ 主机设备管理器中的磁盘 = LUN ≤ RAID ≤ 存储设备中硬盘的总容量。
上述只是针对一般情况,VOLUME也只是针对主机来讲。个别厂商对LUN和VOLUME定义与普通厂商的定义不同,甚至会起一些奇怪的名称,这些名称即使是存储行业的资深人士也不一定全明白。不过只要你能分清楚其实质就行。
3.HBA HBA,即主机总线适配器英文“Host Bus Adapter”缩写。是一个在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板或集成电路适配器。因为HBA减轻了主处理器在数据存储和检索任务的负担,它能够提高服务器的性能。一个HBA和与之相连的磁盘子系统有时一起被称作一个磁盘通道。
a、总线适配器是个什么东西呢? 我们首先要了解一下主机的结构,一台计算机内部多半由两条总线串起来(当然实际情况会有不同,这里只讨论常见的,简单的情况),一条总线叫系统总线,一条叫I/O总线。系统总线上接了CPU,Memory,cache什么的,I/O总线上接的就是外围设备,现如今最常见的就是PCI总线了。这两条总线之间用桥接的芯片或者说电路连接起来。举个形象的例子,就好比一个城市里,有两条主干道,一条属于行政区,一条属于商业区,中间有个环岛,将两条主干道连接到了一起,系统总线就好比行政区里的主干道,而I/O总线就好比商业区的主干道。系统总线和I/O总线的带宽的单位都是以Gbyte来记,但是显而易见的是,行政区的主干道和商业区的主干道相比的话,前者肯定更“核心”,更宽,更顺畅,设计的要求也高。 我们知道,在向公仆部门要求服务的时候,是要有一些接口的部门和程序的,而桥接芯片的作用就是连接和协调两条总线的工作的。 虽然I/O总线的速度和系统总线的带宽相比要低很多,但是好歹也是以G来计量的,而我们知道外围设备的速度,往往只有几百兆,甚至几十k而已,怎么协调工作呢?好比卖煎饼果子摊子不能直接戳到城市主干道上,怎么办?好办,在主干道边上开个2000平米的小吃城,把摊子都收进去好了。那么主机总线适配器的作用也就是这个,我们就是要把外设组织起来,连接到I/O总线上去!HBA就是指Host和I/O BUS直接的一个适配器,也好比一个水管工常说的“双通”。 b、常见的HBA有哪些呢?
比如显卡,网卡,scsi卡,1394卡等等。我要拿出来说的就是FCHBA和ATA&IDE。我们通常说的什么Emulex的LP9002,什么Qlogic的QLA2340都是FCHBA卡,就是将Fibre Channel的设备和IO总线连接起来的适配器。ATA也是一种适配器技术,我们PC主板上的ATA接口,就是一个磁盘适配器的对外接口,要强调的就是,ATA说的是适配器技术,IDE是说得存储外设技术,比如我们可以说IDE硬盘,IDE光驱,说ATA接口,但是说IDE接口,ATA硬盘就不时那么合适了,虽然很多情况下,大家都习惯把他们混在一起说。 描述HBA的时候,有几个主要的规范要说一下    > 一个承上,就是说,HBA和IOBUS怎么连,我们经常说的PCI接口卡,就是指这个HBA卡是要插在PCI BUS上的PCI slot上的,但是现在的计算机上,不仅仅只有PCI总线而已,大家碰到的时候留意。    >一个启下,就是说HBA要和外设怎么连,这样的规范就很多了。    >再说HBA本身,比如带宽,比如运行机制(protocol等),独立处理能力等等 Tips:有时候我们看到的一块卡,看到的实际是一个物理的卡,有的时候实际上是多个Adapter,好比一家机构,挂多个牌子,有的时候,一块卡有两条通道,好比一家公司,有两套人马。
4.DASDAS(Direct Attached Storage—直接连接存储),是指将存储设备通过SCSI接口或光纤通道直接连接到服务器上。

直连式存储依赖服务器主机操作系统进行数据的IO读写和存储维护管理,数据备份和恢复要求占用服务器主机资源(包括CPU、系统IO等),数据流需要回流主机再到服务器连接着的磁带机(库),数据备份通常占用服务器主机资源20-30%,因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行,以免影响正常业务系统的运行。直连式存储的数据量越大,备份和恢复的时间就越长,对服务器硬件的依赖性和影响就越大。直连式存储与服务器主机之间的连接通道通常采用SCSI连接,带宽为10MB/s、20MB/s、40MB/s、80MB/s等,随着服务器CPU的处理能力越来越强,存储硬盘空间越来越大,阵列的硬盘数量越来越多,SCSI通道将会成为IO瓶颈;服务器主机SCSI ID资源有限,能够建立的SCSI通道连接有限。无论直连式存储还是服务器主机的扩展,从一台服务器扩展为多台服务器组成的群集(Cluster),或存储阵列容量的扩展,都会造成业务系统的停机,从而给企业带来经济损失,对于银行、电信、传媒等行业7×24小时服务的关键业务系统,这是不可接受的。并且直连式存储或服务器主机的升级扩展,只能由原设备厂商提供,往往受原设备厂商限制。5.NASNAS(Network Attached Storage—网络附加存储),即将存储设备通过标准的网络拓扑结构(例如以太网),连接到一群计算机上。NAS是部件级的存储方法,它的重点在于帮助工作组和部门级机构解决迅速增加存储容量的需求。需要共享文件的工程小组就是典型的例子。
NAS没有解决与文件服务器相关的一个关键性问题,即备份过程中的带宽消耗。与将备份数据流从LAN中转移出去的存储区域网(SAN)不同,NAS仍使用网络进行备份和恢复。NAS 的一个缺点是它将存储事务由并行SCSI连接转移到了网络上。这就是说LAN除了必须处理正常的最终用户传输流外,还必须处理包括备份操作的存储磁盘请求。
随着IP网络技术的发展,网络接入存储(NAS)技术发生质的飞跃。早期80年代末到90年代初的10Mbps带宽,网络接入存储作为文件服务器存储,性能受带宽影响;后来快速以太网(100Mbps)、VLAN虚网、Trunk(Ethernet Channel) 以太网通道的出现,网络接入存储的读写性能得到改善;1998年千兆以太网(1000Mbps)的出现和投入商用,为网络接入存储(NAS)带来质的变化和市场广泛认可。由于网络接入存储采用TCP/IP网络进行数据交换,TCP/IP是IT业界的标准协议,不同厂商的产品(服务器、交换机、NAS存储)只要满足协议标准就能够实现互连互通,无兼容性的要求;并且2002年万兆以太网(10000Mbps)的出现和投入商用,存储网络带宽将大大提高NAS存储的性能。NAS需求旺盛已经成为事实。首先NAS几乎继承了磁盘列阵的所有优点,可以将设备通过标准的网络拓扑结构连接,摆脱了服务器和异构化构架的桎梏;其次,在企业数据量飞速膨胀中,SAN、大型磁带库、磁盘柜等产品虽然都是很好的存储解决方案,但他们那高贵的身份和复杂的操作是资金和技术实力有限的中小企业无论如何也不能接受的。NAS正是满足这种需求的产品,在解决足够的存储和扩展空间的同时,还提供极高的性价比。因此,无论是从适用性还是TCO的角度来说,NAS自然成为多数企业,尤其是大中小企业的最佳选择。
6.SANSAN(存储区域网络)采用光纤通道(Fibre Channel ,简称FC)技术,通过光纤通道交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。SAN经过十多年历史的发展,已经相当成熟,成为业界的事实标准(但各个厂商的光纤交换技术不完全相同,其服务器和SAN存储有兼容性的要求)。SAN解决方案是从基本功能剥离出存储功能,所以运行备份操作就无需考虑它们对网络总体性能的影响。——————— 作者:liukuan73 来源:CSDN 原文:https://blog.csdn.net/liukuan73/article/details/45506441 版权声明:本文为博主原创文章,转载请附上博文链接!

Posted in 教学 | 评论关闭

几种存储接口协议的全面比较【转】

硬盘接口是硬盘与主机系统间的连接部件,作用是在硬盘缓存和主机内存之间传输数据。不同的硬盘接口决定着硬盘与控制器之间的连接速度,在整个系统中,硬盘接口的性能高低对磁盘阵列整体性能有直接的影响,因此了解一款磁盘阵列的硬盘接口往往是衡量这款产品的关键指标之一。存储系统中目前普遍应用的硬盘接口主要包括SATA、 SCSI、SAS和FC等,此外ATA硬盘在SATA硬盘出现前也在一些低端存储系统里被广泛使用。

每种接口协议拥有不同的技术规范,具备不同的传输速度,其存取效能的差异较大,所面对的实际应用和目标市场也各不相同。同时,各接口协议所处于的技术生命阶段也各不相同,有些已经没落并面临淘汰,有些则前景光明,但发展尚未成熟。那么经常困扰客户的则是如何选择合适类型阵列,既可以满足应用的性能要求,又可以降低整体投资成本。现在,我们将带您了解目前常见的硬盘接口技术的差异与特点,从而帮助您选择适合自身需求的最佳方案。

ATA,在并行中没落

ATA (AT Attachment)接口标准是IDE(Integrated DriveElectronics)硬盘的特定接口标准。自问世以来,一直以其价廉、稳定性好、标准化程度高等特点,深得广大中低端用户的青睐,甚至在某些高端应用领域,如服务器应用中也有一定的市场。ATA规格包括了 ATA/ATAPI-6 其中Ultra ATA 100兼容以前的ATA版本,在40-pin的连接器中使用标准的16位并行数据总线和16个控制信号。

最早的接口协议都是并行ATA(Paralle ATA)接口协议。PATA接口一般使用16-bit数据总线,每次总线处理时传送2个字节。PATA接口一般是100Mbytes/sec带宽,数据总线必须锁定在50MHz,为了减小滤波设计的复杂性,PATA使用Ultra总线,通过“双倍数据比率”或者2个边缘(上升沿和下降沿)时钟机制用来进行DMA传输。这样在数据滤波的上升沿和下降沿都采集数据,就降低一半所需要的滤波频率。这样带宽就是:25MHz 时钟频率x 2 双倍时钟频率x16 位/每一个边缘/ 8 位/每个字节= 100 Mbytes/sec。

在过去的20年中,PATA成为ATA硬盘接口的主流技术。但随着CPU时钟频率和内存带宽的不断提升,PATA逐渐显现出不足来。一方面,硬盘制造技术的成熟使ATA硬盘的单位价格逐渐降低,另一方面,由于采用并行总线接口,传输数据和信号的总线是复用的,因此传输速率会受到一定的限制。如果要提高传输的速率,那么传输的数据和信号往往会产生干扰,从而导致错误。

PATA的技术潜力似乎已经走到尽头,在当今的许多大型企业中,PATA现有的传输速率已经逐渐不能满足用户的需求。人们迫切期待一种更可靠、更高效的接口协议来替代PATA,在这种需求的驱使下,串行(Serial)ATA总线接口技术应运而生,直接导致了传统PATA技术的没落。

SATA,在低端徘徊

PATA曾经在低端的存储应用中有过光辉的岁月,但由于自身的技术局限性,逐步被串行总线接口协议(Serial ATA,SATA)所替代。SATA以它串行的数据发送方式得名。在数据传输的过程中,数据线和信号线独立使用,并且传输的时钟频率保持独立,因此同以往的PATA相比,SATA的传输速率可以达到并行的30倍。可以说:SATA技术并不是简单意义上的PATA技术的改进,而是一种全新的总线架构。

从总线结构上,SATA 使用单个路径来传输数据序列或者按照bit来传输,第二条路径返回响应。控制信息用预先定义的位来传输,并且分散在数据中间,以打包的格式用开/关信号脉冲发送,这样就不需要另外的传输线。SATA带宽为16-bit。并行Ultra ATA总线每个时钟频率传输16bit数据,而SATA仅传输1bit,但是串行总线可以更高传输速度来弥补串行传输的损失。SATA将会引入 1500Mbits/sec带宽或者1.5Gbits/sec带宽。由于数据用8b/10b编码,有效的最大传输峰值是150Mbytes/sec。

目前能够见到的有SATA-1和SATA-2两种标准,对应的传输速度分别是150MB/s和300MB/s。从速度这一点上,SATA已经远远把 PATA硬盘甩到了后面。其次,从数据传输角度上,SATA比PATA抗干扰能力更强。从SATA委员会公布的资料来看,到2007年,在第三代SATA技术中,个人电脑存储系统将具有最高达600MB/s的数据带宽。此外,串口的数据线由于只采用了四针结构,因此相比较起并口安装起来更加便捷,更有利于缩减机箱内的线缆,有利散热。

虽然厂商普遍宣称SATA支持热插拔,但实际上,SATA在硬盘损坏的时候,不能像SCSI/SAS和FC硬盘一样,显示具体损坏的硬盘,这样热插拔功能实际上形同虚设。同时,尽管SATA在诸多性能上远远优越于PATA,甚至在某些单线程任务的测试中,表现出了不输于SCSI的性能,然而它的机械底盘仍然为低端应用设计的,在面对大数据[注]吞吐量或者多线程的传输任务时,相比SCSI硬盘,仍然显得力不从心。除了速度之外,在多线程数据读取时,硬盘磁头频繁地来回摆动,使硬盘过热是SATA需要克服的缺陷。正是因为这些技术上致命的缺陷,导致目前为止,SATA还只能在低端的存储应用中徘徊。

SCSI,中端存储的主流之选

SCSI(Small Computer System Interface)是一种专门为小型计算机系统设计的存储单元接口模式,通常用于服务器承担关键业务的较大的存储负载,价格也较贵。SCSI计算机可以发送命令到一个SCSI设备,磁盘可以移动驱动臂定位磁头,在磁盘介质和缓存中传递数据,整个过程在后台执行。这样可以同时发送多个命令同时操作,适合大负载的I/O应用。在磁盘阵列上的整体性能也大大高于基于ATA硬盘的阵列。

SCSI规范发展到今天,已经是第六代技术了,从刚创建时候的SCSI(8bit)到今天的Ultra 320 SCSI,速度从1.2MB/s到现在的320MB/s有了质的飞跃。目前的主流SCSI硬盘都采用了Ultra 320 SCSI接口,能提供320MB/s的接口传输速度。SCSI硬盘也有专门支持热拔插技术的SCA2接口(80-pin),与SCSI背板配合使用,就可以轻松实现硬盘的热拔插。目前在工作组和部门级服务器中,热插拔功能几乎是必备的。

相比ATA硬盘,SCSI体现出了更适合中、高端存储应用的技术优势:

首先SCSI相对于ATA硬盘的接口支持数量更多。一般而言,ATA硬盘采用IDE插槽与系统连接,而每IDE插槽即占用一个IRQ(中断号),而每两个 IDE设备就要占用一个IDE能道,虽然附加IDE控制卡等方式可以增加所支持的IDE设备数量,但总共可连接的IDE设备数最多不能超过15个。而 SCSI的所有设备只占用一个中断号(IRQ),因此它支持的磁盘扩容量要比ATA更为巨大。这个优点对于普通用户而言并不具备太大的吸引力,但对于企业存储应用则显得意义非凡,某些企业需要近乎无节制地扩充磁盘系统容量,以满足网络存储用户的需求。

其次:SCSI的带宽很宽,Ultra 320 SCSI能支持的最大总线速度为320MB/s,虽然这只是理论值而已,但在实际数据传输率方面,最快 ATA/SATA的硬盘相比SCSI硬盘无论在稳定性和传输速率上,都有一定的差距。不过如果单纯从速度的角度来看,用户未必需要选择SCSI硬盘,RAID技术可以更加有效地提高磁盘的传输速度。

最后、SCSI硬盘CPU占用率低、并行处理能力强。在ATA和SATA硬盘虽然也能实现多用户同时存取,但当并行处理人数超过一定数量后,ATA/SATA硬盘就会暴露出很大的I/O缺陷,传输速率大幅下降。同时,硬盘磁头的来回摆动,也造成硬盘发热不稳定的现象。

对于SCSI而言,它有独立的芯片负责数据处理,当CPU将指令传输给SCSI后,随即去处理后续指令,其它的相关工作就交给SCSI控制芯片来处理;当 SCSI“处理器”处理完毕后,再次发送控制信息给CPU,CPU再接着进行后续工作,因此不难想像SCSI系统对CPU的占用率很低,而且SCSI硬盘允许一个用户对其进行数据传输的同时,另一位用户同时对其进行数据查找,这就是SCSI硬盘并行处理能力的体现。

SCSI硬盘较贵,但是品质性能更高,其独特的技术优势保障SCSI一直在中端存储市场占据中流砥柱的地位。普通的ATA硬盘转速是5400或者7200RPM;SCSI 硬盘是10000或者15000 RPM,SCSI硬盘的质保期可以达到5年,平均无故障时间达到1,200,000小时。然而对于企业来说,尽管SCSI在传输速率和容错性上有极好的表现,但是它昂贵的价格使得用户望而却步。而下一代SCSI技术SAS的诞生,则更好的兼容了性能和价格双重优势。

SAS,接口协议的明日帝国

SAS 是Serial Attached SCSI的缩写,即串行连接SCSI。和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。

SAS是新一代的SCSI技术,同SATA之于PATA的革命意义一样,SAS 也是对SCSI技术的一项变革性发展。它既利用了已经在实践中验证的 SCSI 功能与特性,又以此为基础引入了SAS扩展器。SAS可以连接更多的设备,同时由于它的连接器较小,SAS 可以在3.5 英寸或更小的 2.5 英寸硬盘驱动器上实现全双端口,这种功能以前只在较大的 3.5 英寸光纤通道硬盘驱动器上能够实现。该功能对于高密度服务器如刀片服务器等需要冗余驱动器的应用非常重要。

为保护用户投资,SAS的接口技术可以向下兼容SATA。SAS系统的背板(Backplane)既可以连接具有双端口、高性能的SAS驱动器,也可以连接高容量、低成本的SATA驱动器。过去由于SCSI、ATA分别占领不同的市场段,且设备间共享带宽,在接口、驱动、线缆等方面都互不兼容,造成用户资源的分散和孤立,增加了总体拥有成本。而现在,用户即使使用不同类型的硬盘,也不需要再重新投资,对于企业用户投资保护来说,实在意义非常。但需要注意的是,SATA系统并不兼容SAS,所以SAS驱动器不能连接到SATA背板上。

SAS 使用的扩展器可以让一个或多个SAS主控制器连接较多的驱动器。每个扩展器可以最多连接 128 个物理连接,其中包括其它主控连接,其它 SAS 扩展器或硬盘驱动器。这种高度可扩展的连接机制实现了企业级的海量存储空间需求,同时可以方便地支持多点集群,用于自动故障恢复功能或负载平衡。前期,SAS接口速率为3Gbps(SAS1.0),其SAS扩展器多为12端口。目前6Gbps(SAS2.0)、12Gbps(SAS3.0)的高速接口均已商用,并且会有28或36端口的SAS扩展器出现以适应不同的应用需求。

在SAS接口享有种种得天独厚的优势的同时,SAS产品的成本从芯片级开始,都远远低于FC,而正是因为SAS突出的性价比优势,使SAS在磁盘接口领域,给光纤存储带来极大的威胁。目前众多厂商均已推出SAS磁盘接口协议的产品,SAS也成为存储的主流接口标准。

Posted in 网络存储 | 评论关闭

systemctl 命令完全指南(转)

Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。

Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。

在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。

使用Systemctl管理Linux服务

本文旨在阐明在运行systemd的系统上“如何控制系统和服务”。

Systemd初体验和Systemctl基础

1. 首先检查你的系统中是否安装有systemd并确定当前安装的版本

  1. # systemctl --version
  2. systemd 215
  3. +PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR

上例中很清楚地表明,我们安装了215版本的systemd。

2. 检查systemd和systemctl的二进制文件和库文件的安装位置

  1. # whereis systemd
  2. systemd: /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz
  3. # whereis systemctl
  4. systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz

3. 检查systemd是否运行

  1. # ps -eaf | grep [s]ystemd
  2. root 1 0 0 16:27 ? 00:00:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
  3. root 444 1 0 16:27 ? 00:00:00 /usr/lib/systemd/systemd-journald
  4. root 469 1 0 16:27 ? 00:00:00 /usr/lib/systemd/systemd-udevd
  5. root 555 1 0 16:27 ? 00:00:00 /usr/lib/systemd/systemd-logind
  6. dbus 556 1 0 16:27 ? 00:00:00 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation

注意:systemd是作为父进程(PID=1)运行的。在上面带(-e)参数的ps命令输出中,选择所有进程,(-a)选择除会话前导外的所有进程,并使用(-f)参数输出完整格式列表(即 -eaf)。

也请注意上例中后随的方括号和例子中剩余部分。方括号表达式是grep的字符类表达式的一部分。

4. 分析systemd启动进程

  1. # systemd-analyze
  2. Startup finished in 487ms (kernel) + 2.776s (initrd) + 20.229s (userspace) = 23.493s

5. 分析启动时各个进程花费的时间

  1. # systemd-analyze blame
  2. 8.565s mariadb.service
  3. 7.991s webmin.service
  4. 6.095s postfix.service
  5. 4.311s httpd.service
  6. 3.926s firewalld.service
  7. 3.780s kdump.service
  8. 3.238s tuned.service
  9. 1.712s network.service
  10. 1.394s lvm2-monitor.service
  11. 1.126s systemd-logind.service
  12. ....

6. 分析启动时的关键链

  1. # systemd-analyze critical-chain
  2. The time after the unit is active or started is printed after the "@" character.
  3. The time the unit takes to start is printed after the "+" character.
  4. multi-user.target @20.222s
  5. └─mariadb.service @11.657s +8.565s
  6. └─network.target @11.168s
  7. └─network.service @9.456s +1.712s
  8. └─NetworkManager.service @8.858s +596ms
  9. └─firewalld.service @4.931s +3.926s
  10. └─basic.target @4.916s
  11. └─sockets.target @4.916s
  12. └─dbus.socket @4.916s
  13. └─sysinit.target @4.905s
  14. └─systemd-update-utmp.service @4.864s +39ms
  15. └─auditd.service @4.563s +301ms
  16. └─systemd-tmpfiles-setup.service @4.485s +69ms
  17. └─rhel-import-state.service @4.342s +142ms
  18. └─local-fs.target @4.324s
  19. └─boot.mount @4.286s +31ms
  20. └─systemd-fsck@dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d19608096
  21. └─dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d196080964.device @4

重要:Systemctl接受服务(.service),挂载点(.mount),套接口(.socket)和设备(.device)作为单元。

7. 列出所有可用单元

  1. # systemctl list-unit-files
  2. UNIT FILE STATE
  3. proc-sys-fs-binfmt_misc.automount static
  4. dev-hugepages.mount static
  5. dev-mqueue.mount static
  6. proc-sys-fs-binfmt_misc.mount static
  7. sys-fs-fuse-connections.mount static
  8. sys-kernel-config.mount static
  9. sys-kernel-debug.mount static
  10. tmp.mount disabled
  11. brandbot.path disabled
  12. .....

8. 列出所有运行中单元

  1. # systemctl list-units
  2. UNIT LOAD ACTIVE SUB DESCRIPTION
  3. proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File Syste
  4. sys-devices-pc...0-1:0:0:0-block-sr0.device loaded active plugged VBOX_CD-ROM
  5. sys-devices-pc...:00:03.0-net-enp0s3.device loaded active plugged PRO/1000 MT Desktop Adapter
  6. sys-devices-pc...00:05.0-sound-card0.device loaded active plugged 82801AA AC'97 Audio Controller
  7. sys-devices-pc...:0:0-block-sda-sda1.device loaded active plugged VBOX_HARDDISK
  8. sys-devices-pc...:0:0-block-sda-sda2.device loaded active plugged LVM PV Qzyo3l-qYaL-uRUa-Cjuk-pljo-qKtX-VgBQ8
  9. sys-devices-pc...0-2:0:0:0-block-sda.device loaded active plugged VBOX_HARDDISK
  10. sys-devices-pl...erial8250-tty-ttyS0.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS0
  11. sys-devices-pl...erial8250-tty-ttyS1.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS1
  12. sys-devices-pl...erial8250-tty-ttyS2.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS2
  13. sys-devices-pl...erial8250-tty-ttyS3.device loaded active plugged /sys/devices/platform/serial8250/tty/ttyS3
  14. sys-devices-virtual-block-dm\x2d0.device loaded active plugged /sys/devices/virtual/block/dm-0
  15. sys-devices-virtual-block-dm\x2d1.device loaded active plugged /sys/devices/virtual/block/dm-1
  16. sys-module-configfs.device loaded active plugged /sys/module/configfs
  17. ...

9. 列出所有失败单元

  1. # systemctl --failed
  2. UNIT LOAD ACTIVE SUB DESCRIPTION
  3. kdump.service loaded failed failed Crash recovery kernel arming
  4. LOAD = Reflects whether the unit definition was properly loaded.
  5. ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
  6. SUB = The low-level unit activation state, values depend on unit type.
  7. 1 loaded units listed. Pass --all to see loaded but inactive units, too.
  8. To show all installed unit files use 'systemctl list-unit-files'.

10. 检查某个单元(如 cron.service)是否启用

  1. # systemctl is-enabled crond.service
  2. enabled

11. 检查某个单元或服务是否运行

  1. # systemctl status firewalld.service
  2. firewalld.service - firewalld - dynamic firewall daemon
  3. Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
  4. Active: active (running) since Tue 2015-04-28 16:27:55 IST; 34min ago
  5. Main PID: 549 (firewalld)
  6. CGroup: /system.slice/firewalld.service
  7. └─549 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
  8. Apr 28 16:27:51 tecmint systemd[1]: Starting firewalld - dynamic firewall daemon...
  9. Apr 28 16:27:55 tecmint systemd[1]: Started firewalld - dynamic firewall daemon.

使用Systemctl控制并管理服务

12. 列出所有服务(包括启用的和禁用的)

  1. # systemctl list-unit-files --type=service
  2. UNIT FILE STATE
  3. arp-ethers.service disabled
  4. auditd.service enabled
  5. autovt@.service disabled
  6. blk-availability.service disabled
  7. brandbot.service static
  8. collectd.service disabled
  9. console-getty.service disabled
  10. console-shell.service disabled
  11. cpupower.service disabled
  12. crond.service enabled
  13. dbus-org.fedoraproject.FirewallD1.service enabled
  14. ....

13. Linux中如何启动、重启、停止、重载服务以及检查服务(如 httpd.service)状态

  1. # systemctl start httpd.service
  2. # systemctl restart httpd.service
  3. # systemctl stop httpd.service
  4. # systemctl reload httpd.service
  5. # systemctl status httpd.service
  6. httpd.service - The Apache HTTP Server
  7. Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
  8. Active: active (running) since Tue 2015-04-28 17:21:30 IST; 6s ago
  9. Process: 2876 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  10. Main PID: 2881 (httpd)
  11. Status: "Processing requests..."
  12. CGroup: /system.slice/httpd.service
  13. ├─2881 /usr/sbin/httpd -DFOREGROUND
  14. ├─2884 /usr/sbin/httpd -DFOREGROUND
  15. ├─2885 /usr/sbin/httpd -DFOREGROUND
  16. ├─2886 /usr/sbin/httpd -DFOREGROUND
  17. ├─2887 /usr/sbin/httpd -DFOREGROUND
  18. └─2888 /usr/sbin/httpd -DFOREGROUND
  19. Apr 28 17:21:30 tecmint systemd[1]: Starting The Apache HTTP Server...
  20. Apr 28 17:21:30 tecmint httpd[2881]: AH00558: httpd: Could not reliably determine the server's fully q...ssage
  21. Apr 28 17:21:30 tecmint systemd[1]: Started The Apache HTTP Server.
  22. Hint: Some lines were ellipsized, use -l to show in full.

注意:当我们使用systemctl的start,restart,stop和reload命令时,我们不会从终端获取到任何输出内容,只有status命令可以打印输出。

14. 如何激活服务并在启动时启用或禁用服务(即系统启动时自动启动服务)

  1. # systemctl is-active httpd.service
  2. # systemctl enable httpd.service
  3. # systemctl disable httpd.service

15. 如何屏蔽(让它不能启动)或显示服务(如 httpd.service)

  1. # systemctl mask httpd.service
  2. ln -s '/dev/null' '/etc/systemd/system/httpd.service'
  3. # systemctl unmask httpd.service
  4. rm '/etc/systemd/system/httpd.service'

16. 使用systemctl命令杀死服务

  1. # systemctl kill httpd
  2. # systemctl status httpd
  3. httpd.service - The Apache HTTP Server
  4. Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
  5. Active: failed (Result: exit-code) since Tue 2015-04-28 18:01:42 IST; 28min ago
  6. Main PID: 2881 (code=exited, status=0/SUCCESS)
  7. Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
  8. Apr 28 17:37:29 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  9. Apr 28 17:37:29 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  10. Apr 28 17:37:39 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  11. Apr 28 17:37:39 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  12. Apr 28 17:37:49 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  13. Apr 28 17:37:49 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  14. Apr 28 17:37:59 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  15. Apr 28 17:37:59 tecmint systemd[1]: httpd.service: Got notification message from PID 2881, but recepti...bled.
  16. Apr 28 18:01:42 tecmint systemd[1]: httpd.service: control process exited, code=exited status=226
  17. Apr 28 18:01:42 tecmint systemd[1]: Unit httpd.service entered failed state.
  18. Hint: Some lines were ellipsized, use -l to show in full.

使用Systemctl控制并管理挂载点

17. 列出所有系统挂载点

  1. # systemctl list-unit-files --type=mount
  2. UNIT FILE STATE
  3. dev-hugepages.mount static
  4. dev-mqueue.mount static
  5. proc-sys-fs-binfmt_misc.mount static
  6. sys-fs-fuse-connections.mount static
  7. sys-kernel-config.mount static
  8. sys-kernel-debug.mount static
  9. tmp.mount disabled

18. 挂载、卸载、重新挂载、重载系统挂载点并检查系统中挂载点状态

  1. # systemctl start tmp.mount
  2. # systemctl stop tmp.mount
  3. # systemctl restart tmp.mount
  4. # systemctl reload tmp.mount
  5. # systemctl status tmp.mount
  6. tmp.mount - Temporary Directory
  7. Loaded: loaded (/usr/lib/systemd/system/tmp.mount; disabled)
  8. Active: active (mounted) since Tue 2015-04-28 17:46:06 IST; 2min 48s ago
  9. Where: /tmp
  10. What: tmpfs
  11. Docs: man:hier(7)
  12. http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
  13. Process: 3908 ExecMount=/bin/mount tmpfs /tmp -t tmpfs -o mode=1777,strictatime (code=exited, status=0/SUCCESS)
  14. Apr 28 17:46:06 tecmint systemd[1]: Mounting Temporary Directory...
  15. Apr 28 17:46:06 tecmint systemd[1]: tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.
  16. Apr 28 17:46:06 tecmint systemd[1]: Mounted Temporary Directory.

19. 在启动时激活、启用或禁用挂载点(系统启动时自动挂载)

  1. # systemctl is-active tmp.mount
  2. # systemctl enable tmp.mount
  3. # systemctl disable tmp.mount

20. 在Linux中屏蔽(让它不能启用)或可见挂载点

  1. # systemctl mask tmp.mount
  2. ln -s '/dev/null' '/etc/systemd/system/tmp.mount'
  3. # systemctl unmask tmp.mount
  4. rm '/etc/systemd/system/tmp.mount'

使用Systemctl控制并管理套接口

21. 列出所有可用系统套接口

  1. # systemctl list-unit-files --type=socket
  2. UNIT FILE STATE
  3. dbus.socket static
  4. dm-event.socket enabled
  5. lvm2-lvmetad.socket enabled
  6. rsyncd.socket disabled
  7. sshd.socket disabled
  8. syslog.socket static
  9. systemd-initctl.socket static
  10. systemd-journald.socket static
  11. systemd-shutdownd.socket static
  12. systemd-udevd-control.socket static
  13. systemd-udevd-kernel.socket static
  14. 11 unit files listed.

22. 在Linux中启动、重启、停止、重载套接口并检查其状态

  1. # systemctl start cups.socket
  2. # systemctl restart cups.socket
  3. # systemctl stop cups.socket
  4. # systemctl reload cups.socket
  5. # systemctl status cups.socket
  6. cups.socket - CUPS Printing Service Sockets
  7. Loaded: loaded (/usr/lib/systemd/system/cups.socket; enabled)
  8. Active: active (listening) since Tue 2015-04-28 18:10:59 IST; 8s ago
  9. Listen: /var/run/cups/cups.sock (Stream)
  10. Apr 28 18:10:59 tecmint systemd[1]: Starting CUPS Printing Service Sockets.
  11. Apr 28 18:10:59 tecmint systemd[1]: Listening on CUPS Printing Service Sockets.

23. 在启动时激活套接口,并启用或禁用它(系统启动时自启动)

  1. # systemctl is-active cups.socket
  2. # systemctl enable cups.socket
  3. # systemctl disable cups.socket

24. 屏蔽(使它不能启动)或显示套接口

  1. # systemctl mask cups.socket
  2. ln -s '/dev/null' '/etc/systemd/system/cups.socket'
  3. # systemctl unmask cups.socket
  4. rm '/etc/systemd/system/cups.socket'

服务的CPU利用率(分配额)

25. 获取当前某个服务的CPU分配额(如httpd)

  1. # systemctl show -p CPUShares httpd.service
  2. CPUShares=1024

注意:各个服务的默认CPU分配份额=1024,你可以增加/减少某个进程的CPU分配份额。

26. 将某个服务(httpd.service)的CPU分配份额限制为2000 CPUShares/

  1. # systemctl set-property httpd.service CPUShares=2000
  2. # systemctl show -p CPUShares httpd.service
  3. CPUShares=2000

注意:当你为某个服务设置CPUShares,会自动创建一个以服务名命名的目录(如 httpd.service),里面包含了一个名为90-CPUShares.conf的文件,该文件含有CPUShare限制信息,你可以通过以下方式查看该文件:

  1. # vi /etc/systemd/system/httpd.service.d/90-CPUShares.conf
  2. [Service]
  3. CPUShares=2000

27. 检查某个服务的所有配置细节

  1. # systemctl show httpd
  2. Id=httpd.service
  3. Names=httpd.service
  4. Requires=basic.target
  5. Wants=system.slice
  6. WantedBy=multi-user.target
  7. Conflicts=shutdown.target
  8. Before=shutdown.target multi-user.target
  9. After=network.target remote-fs.target nss-lookup.target systemd-journald.socket basic.target system.slice
  10. Description=The Apache HTTP Server
  11. LoadState=loaded
  12. ActiveState=active
  13. SubState=running
  14. FragmentPath=/usr/lib/systemd/system/httpd.service
  15. ....

28. 分析某个服务(httpd)的关键链

  1. # systemd-analyze critical-chain httpd.service
  2. The time after the unit is active or started is printed after the "@" character.
  3. The time the unit takes to start is printed after the "+" character.
  4. httpd.service +142ms
  5. └─network.target @11.168s
  6. └─network.service @9.456s +1.712s
  7. └─NetworkManager.service @8.858s +596ms
  8. └─firewalld.service @4.931s +3.926s
  9. └─basic.target @4.916s
  10. └─sockets.target @4.916s
  11. └─dbus.socket @4.916s
  12. └─sysinit.target @4.905s
  13. └─systemd-update-utmp.service @4.864s +39ms
  14. └─auditd.service @4.563s +301ms
  15. └─systemd-tmpfiles-setup.service @4.485s +69ms
  16. └─rhel-import-state.service @4.342s +142ms
  17. └─local-fs.target @4.324s
  18. └─boot.mount @4.286s +31ms
  19. └─systemd-fsck@dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d196080964.service @4.092s +149ms
  20. └─dev-disk-by\x2duuid-79f594ad\x2da332\x2d4730\x2dbb5f\x2d85d196080964.device @4.092s

29. 获取某个服务(httpd)的依赖性列表

  1. # systemctl list-dependencies httpd.service
  2. httpd.service
  3. ├─system.slice
  4. └─basic.target
  5. ├─firewalld.service
  6. ├─microcode.service
  7. ├─rhel-autorelabel-mark.service
  8. ├─rhel-autorelabel.service
  9. ├─rhel-configure.service
  10. ├─rhel-dmesg.service
  11. ├─rhel-loadmodules.service
  12. ├─paths.target
  13. ├─slices.target
  14. │ ├─-.slice
  15. │ └─system.slice
  16. ├─sockets.target
  17. │ ├─dbus.socket
  18. ....

30. 按等级列出控制组

  1. # systemd-cgls
  2. ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
  3. ├─user.slice
  4. │ └─user-0.slice
  5. │ └─session-1.scope
  6. │ ├─2498 sshd: root@pts/0
  7. │ ├─2500 -bash
  8. │ ├─4521 systemd-cgls
  9. │ └─4522 systemd-cgls
  10. └─system.slice
  11. ├─httpd.service
  12. │ ├─4440 /usr/sbin/httpd -DFOREGROUND
  13. │ ├─4442 /usr/sbin/httpd -DFOREGROUND
  14. │ ├─4443 /usr/sbin/httpd -DFOREGROUND
  15. │ ├─4444 /usr/sbin/httpd -DFOREGROUND
  16. │ ├─4445 /usr/sbin/httpd -DFOREGROUND
  17. │ └─4446 /usr/sbin/httpd -DFOREGROUND
  18. ├─polkit.service
  19. │ └─721 /usr/lib/polkit-1/polkitd --no-debug
  20. ....

31. 按CPU、内存、输入和输出列出控制组

  1. # systemd-cgtop
  2. Path Tasks %CPU Memory Input/s Output/s
  3. / 83 1.0 437.8M - -
  4. /system.slice - 0.1 - - -
  5. /system.slice/mariadb.service 2 0.1 - - -
  6. /system.slice/tuned.service 1 0.0 - - -
  7. /system.slice/httpd.service 6 0.0 - - -
  8. /system.slice/NetworkManager.service 1 - - - -
  9. /system.slice/atop.service 1 - - - -
  10. /system.slice/atopacct.service 1 - - - -
  11. /system.slice/auditd.service 1 - - - -
  12. /system.slice/crond.service 1 - - - -
  13. /system.slice/dbus.service 1 - - - -
  14. /system.slice/firewalld.service 1 - - - -
  15. /system.slice/lvm2-lvmetad.service 1 - - - -
  16. /system.slice/polkit.service 1 - - - -
  17. /system.slice/postfix.service 3 - - - -
  18. /system.slice/rsyslog.service 1 - - - -
  19. /system.slice/system-getty.slice/getty@tty1.service 1 - - - -
  20. /system.slice/systemd-journald.service 1 - - - -
  21. /system.slice/systemd-logind.service 1 - - - -
  22. /system.slice/systemd-udevd.service 1 - - - -
  23. /system.slice/webmin.service 1 - - - -
  24. /user.slice/user-0.slice/session-1.scope 3 - - - -

控制系统运行等级

32. 启动系统救援模式

  1. # systemctl rescue
  2. Broadcast message from root@tecmint on pts/0 (Wed 2015-04-29 11:31:18 IST):
  3. The system is going down to rescue mode NOW!

33. 进入紧急模式

  1. # systemctl emergency
  2. Welcome to emergency mode! After logging in, type "journalctl -xb" to view
  3. system logs, "systemctl reboot" to reboot, "systemctl default" to try again
  4. to boot into default mode.

34. 列出当前使用的运行等级

  1. # systemctl get-default
  2. multi-user.target

35. 启动运行等级5,即图形模式

  1. # systemctl isolate runlevel5.target
  2. # systemctl isolate graphical.target

36. 启动运行等级3,即多用户模式(命令行)

  1. # systemctl isolate runlevel3.target
  2. # systemctl isolate multiuser.target

36. 设置多用户模式或图形模式为默认运行等级

  1. # systemctl set-default runlevel3.target
  2. # systemctl set-default runlevel5.target

37. 重启、停止、挂起、休眠系统或使系统进入混合睡眠

  1. # systemctl reboot
  2. # systemctl halt
  3. # systemctl suspend
  4. # systemctl hibernate
  5. # systemctl hybrid-sleep

对于不知运行等级为何物的人,说明如下。

  • Runlevel 0 : 关闭系统
  • Runlevel 1 : 救援?维护模式
  • Runlevel 3 : 多用户,无图形系统
  • Runlevel 4 : 多用户,无图形系统
  • Runlevel 5 : 多用户,图形化系统
  • Runlevel 6 : 关闭并重启机器

到此为止吧。保持连线,进行评论。别忘了在下面的评论中为我们提供一些有价值的反馈哦。喜欢我们、与我们分享,求扩散。

Posted in Linux | 评论关闭