存储系统基础知识介绍

开源Linux

共 10677字,需浏览 22分钟

 ·

2021-08-10 11:54

关注「开源Linux」,选择“设为星标”
回复「学习」,有我为您特别筛选的学习资料


存储系统是整个IT系统的基石,是IT技术赖以存在和发挥效能的基础平台。早先的存储形式是存储设备(通常是磁盘)与应用服务器其他硬件直接安装于同一个机箱之内,并且该存储设备是给本台应用服务器独占使用的。

今天,我们科普一下存储基础知识:外置数据存储,分享内容和目录如下:

  • 一、存储简介及存储方式
    • 1、简介
    • 2、三种常见存储方式 DAS、NAS和SAN
    • 3、DAS、NAS和SAN三种存储方式比较
    • 4、存储常见品牌
    • 5、常用介质
  • 二、磁盘阵列及 RAID技术详解
    • 1、磁盘阵列
    • 2、RAID技术详解

1一、存储简介及存储方式

1、简介

存储就是根据不同的应用环境通过采取合理、 安全、有效的方式将数据保存到某些介质上并能保证有效的访问。
总的来讲可以包含两个方面的含义:
  • 一方面它是数据临时或长期驻留的物理媒介;
  • 另一方面,它是保证数据完整安全存放的方式或行为。

2、三种常见存储方式 DAS、NAS和SAN

2.1 DAS

DAS(Direct Access Storage —直接连接存储)是指将存储设备通过 SCSI接口或光纤通道直接连接到一台计算机上。DAS这种存储方式与我们普通的 PC存储架构一样,外部存储设备都是直接挂接在服务器内部总线上, 数据存储设备是整个服务器结构的一部分。


DAS存储方式主要适用以下环境
(1)小型网络
因为网络规模较小,数据存储量小,而且也不是很复杂,采用这种存储方式对服务器的影响不会很大。并且这种存储方式也十分经济,适合拥有小型网络的企业用户。
(2)地理位置分散的网络
虽然企业总体网络规模较大,但在地理分布上很分散,通过 SAN或NAS在它们之间进行互联非常困难,此时各分支机构的服务器也可采用 DAS存储方式,这样可以降低成本。
(3) 特殊应用服务器
在一些特殊应用服务器上,如微软的集群服务器或某些数据库使用的原始分区,均要求存储设备直接连接到应用服务器。
局限性
直连式存储依赖服务器主机操作系统进行数据的 IO读写和存储维护管理,数据备份和恢复要求占用服务器主机资源(包括 CPU、系统IO等),数据备份通常占用服务器主机资源 20-30%,因此许多企业用户的日常数据备份常常在深夜或业务系统不繁忙时进行,以免影响正常业务系统的运行。直连式存储的数据量越大,备份和恢复的时间就越长,对服务器硬件的依赖性和影响就越大。
直连式存储与服务器主机之间的连接通道通常采用 SCSI(小型计算机系统接口,是一种智能的通用接口标准)连接,带宽为 10MB/s、20MB/s、40MB/s、80MB/s等,随着服务器 CPU的处理能力越来越强,存储硬盘空间越来越大,阵列的硬盘数量越来越多, SCSI通道将会成为IO瓶颈;服务器主机 SCSI ID资源有限,能够建立的 SCSI通道连接有限。
无论直连式存储还是服务器主机的扩展, 从一台服务器扩展为多台服务器组成的群集(Cluster) ,或存储阵列容量的扩展,都会造成业务系统的停机,从而给企业带来经济损失,对于银行、电信、传媒等行业7×24小时服务的关键业务系统,这是不可接受的。

2.2 NAS

NAS(Network Attached Storage )—网络连接存储,即将存储设备通过标准的网络拓扑结构(例如以太网),连接到一群计算机上。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。其成本远远低于使用服务器存储,而效率却远远高于后者。
NAS产品包括存储器件(例如硬盘驱动器阵列、CD或DVD驱动器、磁带驱动器或可移动的存储介质)和集成在一起的简易服务器,可用于实现涉及文件存取及管理的所有功能。简易服务器经优化设计,可以完成一系列简化的功能, 例如文档存储及服务、电子邮件、互联网缓存等等。集成在NAS设备中的简易服务器可以将有关存储的功能与应用服务器执行的其他功能分隔开。
这种方法从两方面改善了数据的可用性。第一,即使相应的应用服务器不再工作了,仍然可以读出数据。第二,简易服务器本身不会崩溃,因为它避免了引起服务器崩溃的首要原因,即应用软件引起的问题。

NAS的优点:
(1)真正的即插即用
NAS是独立的存储节点存在于网络之中,与用户的操作系统平台无关,真正的即插即用。
(2)存储部署简单
NAS不依赖通用的操作系统,而是采用一个面向用户设计的,专门用于数据存储的简化操作系统,内置了与网络连接所需要的协议, 因此使整个系统的管理和设置较为简单。
(3)存储设备位置非常灵活
(4)管理容易且成本低
NAS数据存储方式是基于现有的企业局域网而设计的, 按照TCP/IP协议进行通信,以文件的 I/O方式进行数据传输。
NAS的缺点:
(1)存储性能较低
(2)可靠度不高

2.3 SAN

SAN(Storage Area Network) 存储区域网络1991年,IBM公司在 S/390服务器中推出了 ESCON(Enterprise SystemConnection管理系统连接 )技术。它是基于光纤介质,最大传输速率达17MB/s的服务器访问存储器的一种连接方式。在此基础上,进一步推出了功能更强的 ESCONDirector(FC SWitch) ,构建了一套最原始的 SAN系统。
SAN存储方式创造了存储的网络化。存储网络化顺应了计算机服务器体系结构网络化的趋势。FC-SAN的支撑技术是光纤通道 (FC Fiber Channel) 技术。FC技术支持HIPPI、IPI、SCSI、IP、ATM等多种高级协议,其最大特性是将网络和设备的通信协议与传输物理介质隔离开, 这样多种协议可在同一个物理连接上同时传送。当然SAN也可以使用IP通道进行部署---IP-SAN。
FC-SAN的硬件基础设施是光纤通道,用光纤通道构建的 SAN由以下三个部分组成:
  1. 存储和备份设备:包括磁带、磁盘和光盘库等。
  2. 光纤通道网络连接部件:包括主机总线适配卡、驱动程序、光缆、集线器、交换机、光纤通道和 SCSI间的桥接器
  3. 应用和管理软件:包括备份软件、存储资源管理软件和存储设备管理软件。
FC-SAN的优势:
(1)网络部署容易
(2)高速存储性能。因为 SAN采用了光纤通道技术,所以它具有更高的存储带宽,存储性能明显提高。SAN的光纤通道使用全双工串行通信原理传输数据,传输速率高达1062.5Mb/s。
(3)良好的扩展能力。由于 SAN采用了网络结构,扩展能力更强。光纤接口提供了10公里的连接距离,这使得实现物理上分离,不在本地机房的存储变得非常容易。

3、DAS、NAS和SAN三种存储方式比较

3.1连接方式对比

从连接方式上对比,DAS采用了存储设备直接连接应用服务器,具有一定的灵活性和限制性;NAS通过网络(TCP/IP,ATM,FDDI)技术连接存储设备和应用服务器,存储设备位置灵活,随着万兆网的出现,传输速率有了很大的提高;FC-SAN则是通过光纤通道(Fibre Channel)技术连接存储设备和应用服务器,具有很好的传输速率和扩展性能。三种存储方式各有优势,相互共存,占到了磁盘存储市场的70%以上。SAN和NAS产品的价格仍然远远高于 DAS.许多用户出于价格因素考虑选择了低效率的直连存储而不是高效率的共享存储。
客观的说,SAN和NAS系统已经可以利用类似自动精简配置(thinprovisioning )这样的技术来弥补早期存储分配不灵活的短板。然而,之前它们消耗了太多的时间来解决存储分配的问题增加内链, 以至于给DAS留有足够的时间在数据中心领域站稳脚跟。此外, SAN和NAS依然问题多多,至今无法解决。但是SAN常用于大型网络存储的建设,并且在混合存储技术成熟的未来, 是颇具潜力的。

3.2 应用场景对比

  • DAS虽然比较古老了,但是还是很适用于那些数据量不大, 对磁盘访问速度要求较高的中小企业;
  • NAS多适用于文件服务器,用来存储非结构化数据,虽然受限于以太网的速度,但是部署灵活,成本低;
  • SAN则适用于大型应用或数据库系统,缺点是成本高、较复杂。

4、存储常见品牌

EMC、IBM、NetApp、HP、HDS、DELL、华为等。

5、常用介质

  • 硬盘
  • 磁带
  • 光盘
  • 移动存储设备

2二、磁盘阵列及 RAID技术详解

1、磁盘阵列

1.1 定义

磁盘阵列(Redundant Arrays of Independent Disks ,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。
磁盘阵列是由很多价格较便宜的磁盘, 组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。
磁盘阵列还能利用同位检查( Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

1.2 分类

磁盘阵列其样式有三种,一是外接式磁盘阵列柜、二是内接式磁盘阵列卡,三是利用软件来仿真
外接式磁盘阵列柜最常被使用大型服务器上,具可热交换( Hot Swap)的特性,不过这类产品的价格都很贵。
内接式磁盘阵列卡,因为价格便宜,但需要较高的安装技术,适合技术人员使用操作。硬件阵列能够提供在线扩容、动态修改阵列级别、自动数据恢复、驱动器漫游、超高速缓冲等功能。它能提供性能、数据保护、可靠性、可用性和可管理性的解决方案。阵列卡专用的处理单元来进行操作。
利用软件仿真的方式,是指通过网络操作系统自身提供的磁盘管理功能将连接的普通SCSI卡上的多块硬盘配置成逻辑盘,组成阵列。软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低,有的降低幅度还比较大,达30%左右。因此会拖累机器的速度,不适合大数据流量的服务器。

1.3 原理

磁盘阵列作为独立系统在主机外直连或通过网络与主机相连。磁盘阵列有多个端口可以被不同主机或不同端口连接。一个主机连接阵列的不同端口可提升传输速度。
和当时PC用单磁盘内部集成缓存一样,在磁盘阵列内部为加快与主机交互速度,都带有一定量的缓冲存储器。主机与磁盘阵列的缓存交互, 缓存与具体的磁盘交互数据。
在应用中,有部分常用的数据是需要经常读取的,磁盘阵列根据内部的算法,查找出这些经常读取的数据,存储在缓存中,加快主机读取这些数据的速度, 而对于其他缓存中没有的数据,主机要读取,则由阵列从磁盘上直接读取传输给主机。对于主机写入的数据,只写在缓存中,主机可以立即完成写操作。然后由缓存再慢慢写入磁盘。

2、RAID技术详解

2.1 简介

随着计算机应用的日益普及,人们对计算速度和性能的要求也逐渐提高。在一个完整的计算机系统中,CPU和内存的作用固然重要,但是数据存储设备性能的好坏和速度的快慢也直接影响到整个系统的表现。本文所要讲解的 RAID技术起初主要应用于服务器高端市场, 但是随着个人用户市场的成熟和发展, 正不断向低端市场靠拢,从而为用户提供了一种既可以提升硬盘速度, 又能够确保数据安全性的良好的解决方案。本文将对 RAID技术进行较为详细的介绍,希望能够对广大读者有所帮助。
RAID是英文Redundant Array of Inexpensive Disks 的缩写,中文简称为磁盘阵列。其实,从RAID的英文原意中,我们已经能够多少知道 RAID就是一种由多块廉价磁盘构成的冗余阵列。虽然 RAID包含多块磁盘,但是在操作系统下是作为一个独立的大型存储设备出现。RAID技术分为几种不同的等级,分别可以提供不同的速度,安全性和性价比。
人们在开发RAID时主要是基于以下设想,即几块小容量硬盘的价格总和要低于一块大容量的硬盘。虽然目前这一设想还没有成为现实, RAID在节省成本方面的作用还不是很明显,但是 RAID可以充分发挥出多块硬盘的优势,实现远远超出任何一块单独硬盘的速度和吞吐量。除了性能上的提高之外, RAID还可以提供良好的容错能力,在任何一块硬盘出现问题的情况下都可以继续工作, 不会受到损坏硬盘的影响。

2.2 RIAD 等级分类

常用的等级有01350110级等。RAID分类通常我们有5种常见的RAID级别,这些级别不是刻意分出来的,而是按功能分的。不同的 RAID级别提供不同的性能,数据的有效性和完整性取决于特定的 I/O环境。没有任何一种RAID级别可以完美的适合任何用户。
2.2.1 RIAD 0
我们在前文中已经提到 RAID分为几种不同的等级,其中, RAID 0是最简单的一种形式。RAID 0可以把多块硬盘连接在一起形成一个容量更大的存储设备。最简单的RAID 0技术只是提供更多的磁盘空间,不过我们也可以通过设置,使用RAID 0来提高磁盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,但是实现成本是最低的。
RAID 0最简单的实现方式就是把几块硬盘串联在一起创建一个大的卷集。磁盘之间的连接既可以使用硬件的形式通过智能磁盘控制器实现, 也可以使用操作系统中的磁盘驱动程序以软件的方式实现。图示如下:
在上述配置中,我们把4块磁盘组合在一起形成一个独立的逻辑驱动器, 容量相当于任何任何一块单独硬盘的 4倍。如图中彩色区域所示,数据被依次写入到各磁盘中。当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中。
这种设置方式只有一个好处,那就是可以增加磁盘的容量。至于速度,则与其中任何一块磁盘的速度相同,这是因为同一时间内只能对一块磁盘进行 I/O操作。如果其中的任何一块磁盘出现故障, 整个系统将会受到破坏,无法继续使用。从这种意义上说,使用纯 RAID 0方式的可靠性仅相当于单独使用一块硬盘的1/4(因为本例中RAID 0使用了4块硬盘)。
虽然我们无法改变 RAID 0的可靠性问题,但是我们可以通过改变配置方式,提供系统的性能。与前文所述的顺序写入数据不同,我们可以通过创建带区集,在同一时间内向多块磁盘写入数据。具体如图所示:
上图中,系统向逻辑设备发出的 I/O指令被转化为4项操作,其中的每一项操作都对应于一块硬盘。我们从图中可以清楚的看到通过建立带区集, 原先顺序写入的数据被分散到所有的四块硬盘中同时进行读写。四块硬盘的并行操作使同一时间内磁盘读写的速度提升了 4倍。
在创建带区集时,合理的选择带区的大小非常重要。如果带区过大,可能一块磁盘上的带区空间就可以满足大部分的 I/O操作,使数据的读写仍然只局限在少数的一、两块硬盘上,不能充分的发挥出并行操作的优势。另一方面,如果带区过小,任何I/O指令都可能引发大量的读写操作,占用过多的控制器总线带宽。因此,在创建带区集时,我们应当根据实际应用的需要,慎重的选择带区的大小。我们已经知道,带区集可以把数据均匀的分配到所有的磁盘上进行读写。
如果我们把所有的硬盘都连接到一个控制器上的话, 可能会带来潜在的危害。这是因为当我们频繁进行读写操作时, 很容易使控制器或总线的负荷超载。为了避免出现上述问题,建议用户可以使用多个磁盘控制器。示意图如下:
这样,我们就可以把原先控制器总线上的数据流量降低一半。当然,最好解决方法还是为每一块硬盘都配备一个专门的磁盘控制器。
RAID 0特性:
备注:条带卷 有很好的读写性能 不容错
2.2.2 RIAD 1
虽然RAID 0可以提供更多的空间和更好的性能,但是整个系统是非常不可靠的,如果出现故障,无法进行任何补救。所以, RAID 0一般只是在那些对数据安全性要求不高的情况下才被人们使用。
RAID 1和RAID 0截然不同,其技术重点全部放在如何能够在不影响性能的情况下最大限度的保证系统的可靠性和可修复性上。RAID 1是所有RAID等级中实现成本最高的一种,尽管如此,人们还是选择 RAID 1来保存那些关键性的重要数据。
RAID 1又被称为磁盘镜像,每一个磁盘都具有一个对应的镜像盘。对任何一个磁盘的数据写入都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数据。显然,磁盘镜像肯定会提高系统成本。因为我们所能使用的空间只是所有磁盘容量总和的一半。下图显示的是由 4块硬盘组成的磁盘镜像,其中可以作为存储空间使用的仅为两块硬盘(画斜线的为镜像部分)。
RAID 1下,任何一块硬盘的故障都不会影响到系统的正常运行,而且只要能够保证任何一对镜像盘中至少有一块磁盘可以使用, RAID 1甚至可以在一半数量的硬盘出现问题时不间断的工作。当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据。
通常,我们把出现硬盘故障的 RAID系统称为在降级模式下运行。虽然这时保存的数据仍然可以继续使用,但是 RAID系统将不再可靠。如果剩余的镜像盘也出现问题,那么整个系统就会崩溃。因此,我们应当及时的更换损坏的硬盘,避免出现新的问题。
更换新盘之后,原有好盘中的数据必须被复制到新盘中。这一操作被称为同步镜像。同步镜像一般都需要很长时间,尤其是当损害的硬盘的容量很大时更是如此。在同步镜像的进行过程中,外界对数据的访问不会受到影响, 但是由于复制数据需要占用一部分的带宽,所以可能会使整个系统的性能有所下降。
因为RAID 1主要是通过二次读写实现磁盘镜像,所以磁盘控制器的负载也相当大,尤其是在需要频繁写入数据的环境中。为了避免出现性能瓶颈,使用多个磁盘控制器就显得很有必要。下图示意了使用两个控制器的磁盘镜像。
使用两个磁盘控制器不仅可以改善性能, 还可以进一步的提高数据的安全性和可用性。我们已经知道, RAID 1最多允许一半数量的硬盘出现故障,所以按照我们上图中的设置方式(原盘和镜像盘分别连接不同的磁盘控制) ,即使一个磁盘控制器出现问题,系统仍然可以使用另外一个磁盘控制器继续工作。这样,就可以把一些由于意外操作所带来的损害降低到最低程度。
RAID 1特性:
备注:镜像卷 写入性能一般 读数据快 容错 磁盘50%浪费
2.2.3 RIAD 10
根据组合分为RAID 10和RAID 01,实际是将RAID 0和RAID 1标准结合的产物,在连续地以位或字节为单位分割数据并且并行读 /写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。它的优点是同时拥有 RAID 0的超凡速度和RAID 1的数据高可靠性。
Raid 10其实结构非常简单,首先创建 2个独立的Raid1,然后将这两个独立的Raid1组成一个Raid0,当往这个逻辑Raid中写数据时,数据被有序的写入两个Raid1中。磁盘1和磁盘2组成一个Raid1,磁盘3和磁盘4又组成另外一个Raid1;这两个Raid1组成了一个新的 Raid0。如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘3中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成 Raid10,且具有raid0和raid1两者的特性。
虽然Raid10方案造成了50%的磁盘浪费,但是它提供了 200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一 Raid1中,就能保证数据安全性。假如磁盘中的某一块盘坏了,整个逻辑磁盘仍能正常工作的。[2]当我们需要恢复RAID 10中损坏的磁盘时,只需要更换新的硬盘,按照RAID10的工作原理来进行数据恢复,恢复数据过程中系统仍能正常工作。原先的数据会同步恢复到更换的硬盘中。
总的来说,RAID 10以RAID 0为执行阵列,以 RAID 1为数据保护阵列,它具有与RAID 1一样的容错能力,用于容错处理的系统开销与单独的镜像操作基本一样,由于使用RAID 0作为执行等级,因此具有较高的 I/O宽带;对于那些想在RAID 1基础上大幅提高性能的用户,它是一个完美的解决方案。RAID 10适用于数据库存储服务器等需要高性能、高容错但对容量要求不大的场合。
RAID 10特性:
2.2.4 RIAD 2
这是RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分割为独立的位元,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些。
2.2.5 RIAD 3
它同RAID 2非常类似,都是将数据条块化分布于不同的硬盘上,区别在于RAID 3使用简单的奇偶校验,并用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈。
RAID 3特性:
2.2.6 RIAD 4
RAID4和RAID3很象,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。在图上可以这么看, RAID3是一次一横条,而RAID4一次一竖条。它的特点的 RAID3也挺象,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。

2.2.7 RIAD 5
RAID 5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID 5更适合于小数据块和随机读写的数据。RAID 3与RAID 5相比,最主要的区别在于 RAID 3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID 5来说,大部分数据传输只对一块磁盘操作, 并可进行并行操作。在RAID5中有“写损失”,即每一次写操作将产生四个实际的读 /写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。
RAID 5特性:
备注:至少3块盘 只允许坏一块盘 读写性能好 坏掉一块盘读性能变慢

2.3 RIAD 各级别优缺点

  • RAID 0 存取速度最快 没有容错
  • RAID 1 完全容错成本高
  • RAID 2 带海明码校验,数据冗余多,速度慢
  • RAID 3 写入性能最好 没有多任务功能
  • RAID 4 具备多任务及容错功能 Parity  磁盘驱动器造成性能瓶颈
  • RAID 5 具备多任务及容错功能 写入时有overhead
  • RAID 0+1/RAID 10 速度快、完全容错 成本高

2.4 硬RAID与软RAID

一般来说,要实现 RAID可以分为硬件实现和软件实现两种。所谓硬 RAID就是指通过硬件实现,同理软件实现的就称作为软 RAID。

下面就来分别解释一下硬RAID与软RAID。所谓硬RAID,就是用专门的RAID控制器将硬盘和电脑连接起来,RAID控制器负责将所有的 RAID成员磁盘配置成一个虚拟的 RAID磁盘卷。对于操作系统而言,他只能识别到由 RAID控制器配置后的虚拟磁盘,而无法识别到组成RAID的各个成员盘。软 RAID就是不使用RAID控制器,而是直接通过软件层实现的 RAID。与硬RAID不同的是,软RAID的各个成员盘对于操作系统来说是可见的,但操作系统并不把各个成员盘呈现给用户, 而只是把通过软件层配置好的虚拟 RAID卷呈现给用户,使用户可以像使用一个普通磁盘一样使用RAID卷。


往期推荐



深入研究Docker联合文件系统

Linux交换分区要点汇总

Kubernetes 中网站无法访问,深入排查实战

DAS,NAS,SAN三种存储技术比较

开源分布式存储架构概览

这么详细的存储基础知识,你不看看?会后悔的!

分布式存储之GlusterFS

单机、集中式、分布式和云原生存储

深度长文:深入理解Ceph存储架构

收藏:服务器和存储技术知识

收藏:存储知识全面总结

收藏:存储和服务器技术知识

ceph分布式存储简介

关注「开源Linux」加星标,提升IT技能


点个在看少个 bug 👇

浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报