热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【存储】RAID2.0+、多路径技术、磁盘可靠性技术

RAID2.0RAID2.0技术RAID技术发展RAID2.0软件逻辑对象RAID2.0基本原理硬盘域StoragePool&TierDiskGroup(DG







RAID2.0+


  • RAID 2.0+技术
    • RAID技术发展
    • RAID 2.0+软件逻辑对象
    • RAID 2.0+基本原理
    • 硬盘域
    • Storage Pool & Tier
    • Disk Group(DG)
    • LD(逻辑磁盘)
    • Chunk(CK)
    • Chunk Group(CKG)
    • Extent
    • Grain
    • Volume & LUN

  • 多路径技术
    • 多路径技术原理
    • 多路径软件与OS集成方式
    • UltraPath功能
      • Failover
      • Failback


  • 磁盘可靠性技术
    • 硬盘可靠性
    • 硬盘失效分类
    • 硬盘智能扫描和坏道修复
    • 硬盘智能在线诊断系统
    • 硬盘预拷贝
    • 慢IO快速响应
    • RAID重构技术简介
    • RAID重构技术原理



RAID 2.0+技术

RAID技术发展

在这里插入图片描述
在最初的RAID技术中,是将几块小容量廉价的磁盘组合成一个大的逻辑磁盘给大型机使用。后来硬盘的容量不断增大,组建RAID的初衷不再是构建一个大容量的磁盘,而是利用RAID技术实现数据的可靠性和安全性,以及提升存储性能,由于单个容量硬盘都已经较大了,数据硬盘组建的RAID容量更大,然后再把RAID划分成一个一个的LUN映射给服务器使用。随着硬盘技术的发展,单块硬盘的容量已经达到数T,传统RAID技术在硬盘重构的过程中需要的时间越来越长,也增加了在重构过程中其它硬盘再坏掉对数据丢失造成的风险,为了解决这一问题,块虚拟化技术应运而生。RAID 2.0+ 是华为的块虚拟化技术,该技术将物理空间和数据空间分散分布成分散的块,可以充分发挥系统的读写能力,方便扩展,也方便了空间的按需分配,数据的热度排布,迁移,它是华为所有Smart软件特性的实现基础。同时,由于热备空间也是分散在多个盘上的,因此硬盘数据的重构写几乎可以同时进行,避免了写单个热备盘造成的性能瓶颈,大大减少了重构时间。

RAID 2.0+软件逻辑对象

在这里插入图片描述

  • 华为RAID2.0+采用底层硬盘管理和上层资源管理两层虚拟化管理模式,在系统内部,每个硬盘空间被划分成一个个小粒度的数据块,基于数据块来构建RAID组,使得数据均匀地分布到存储池的所有硬盘上,同时,以数据块为单元来进行资源管理,大大提高了资源管理的效率。
    • OceanStor存储系统支持不同类型(SSD、SAS、NL-SAS)的硬盘(SATA盘理论可用,只是其性能较低,企业级存储中已很少使用),这些硬盘组成一个个的硬盘域(Disk Domain)。在一个硬盘域中,同种类型的硬盘构成一个存储层,每个存储层内部再按一定的规则划分为Disk Group;
    • 各存储层的硬盘被划分为固定大小的Chunk(CK),其中,SSD层和SAS层的CK的大小为64MB,NL-SAS层的CK大小为256M。
    • OceanStor 存储系统通过随机算法,将每一个存储层的Chunk(CK)按照用户设置的“RAID策略”来组成Chunk Group(CKG),用户可以为存储池(StoragePool)中的每一个存储层分别设置“RAID策略”。
    • OceanStor存储系统会将Chunk Group(CKG)切分为更小的Extent。Extent作为数据迁移的最小粒度和构成Thick LUN的基本单位,在创建存储池(Storage Pool)时可以在“高级”选项中进行设置,默认4MB。对于Thin LUN或文件系统,会在Extent上再进行更细粒度的划分(Grain),并以Grain为单位映射到Thin LUN、文件系统。(Thin LUN的概念将在后面的章节中描述)
  • 若干Extent组成了卷(Volume),卷(Volume)对外体现为主机访问的LUN(这里的LUN为Thick LUN)。在处理用户的读写请求以及进行数据迁移时,LUN向存储系统申请空间、释放空间、迁移数据都是以Extent为单位进行的。例如:用户在创建LUN时,可以指定容量从某一个存储层中获得,此时LUN由指定的某一个存储层上的Extent组成。在用户的业务开始运行后,存储系统会根据用户设定的迁移策略,对访问频繁的数据以及较少被访问的数据在存储层之间进行迁移(此功能需要购买SmartTier License)。此时,LUN上的数据就会以Extent为单位分布到存储池的各个存储层上。
  • 在用户创建Thin LUN或文件系统时,OceanStor存储系统还会在Extent的基础上再进行更细粒度的划分(Grain),并以Grain为单位映射到Thin LUN或文件系统,从而实现对存储容量的精细化管理。

RAID 2.0+基本原理

在这里插入图片描述

硬盘域

在这里插入图片描述

  • 在传统RAID中,要将硬盘空间提供给业务主机的第一步操作是 创建RAID组。但是对创建RAID组这一操作有一些限制和要求:RAID组中的硬盘的类型是相同的,硬盘的大小和转速需要保持一致,而且一个RAID组中的硬盘个数不建议超过12个。
  • 华为RAID2.0+技术中采用了另一种实现方法。在该方法中,第一步操作不是 创建RAID组,而是创建硬盘域。一个硬盘域就是一组硬盘。一个硬盘只能属于一个硬盘域。OceanStor存储系统可以创建一个或多个硬盘域。看起来,硬盘域的概念似乎跟RAID组的概念类似,都是一组硬盘,但实际上还是有很大的区别。在创建的RAID组中,这组硬盘已经按照设定某个RAID组级别进行了绑定,且这组硬盘的类型,大小,转速都必须是一样的。但是在一个硬盘域中,硬盘的个数可以大很多,比如上百个,而且可以最多包含3种类型的硬盘,每种类型的硬盘对应分配到一个存储层级,SSD盘对应分配到高性能层,SAS盘分配到性能层,NL-SAS盘分配到容量层。如果硬盘域中没有相应的硬盘类型,则该硬盘域就没有相应的存储层。更为关键的区别是,硬盘域的主要作用是将这一组盘和哪一组盘分开,目的是实现故障、性能和存储资源等的完全隔离。在创建硬盘域时,RAID级别尚未指定,即数据的冗余保护方式还未指定。事实上,RAID2.0+ 对数据冗余保护方式的设置更加灵活,更加精细化。硬盘域中硬盘组成的存储空间,将被划分成更小粒度的存储池,以及为各个存储层级内共享的热备空间。热备空间大小是系统根据管理员为该硬盘域设置的热备策略(高、低、无)以及该硬盘域各存储层的硬盘个数自动设置的,而不再是传统RAID组中那样,由管理员指定某个特定的盘做热备盘。

Storage Pool & Tier

在这里插入图片描述

  • 一个存储池基于指定的一个硬盘域创建,可以从该硬盘域上动态的分配Chunk(CK)资源,并按照每个存储层级(Tier)的“RAID策略”组成Chunk Group(CKG)向应用提供具有RAID保护的存储资源。
  • 存储池根据硬盘类型可划分为多个Tier,OceanStor存储系统支持的存储层级和硬盘类型上图左表所示。
  • 创建存储池可以指定该存储池从硬盘域上划分的存储层级(Tier)类型以及该类型的“RAID策略”和“容量”。
  • OceanStor存储系统支持RAID1、RAID10、RAID3、RAID5、RAID50和RAID6,支持的RAID策略和配置上图右表所示。
  • 容量层由大容量的SATA、NL-SAS盘组成,RAID策略建议使用双重校验方式的RAID6。(SATA盘较少使用,部分产品规格上已经不支持)

Disk Group(DG)

在这里插入图片描述

  • OceanStor存储系统会在每个硬盘域内根据每种类型的硬盘数量自动划分为一个或多个Disk Group(DG)。
  • 一个Disk Group(DG)只包含一种硬盘类型
  • 任意一个CKG的多个CK来自于同一个Disk Group(DG)的不同硬盘
  • Disk Group(DG)属于系统内部对象,主要作用为故障隔离,由OceanStor存储系统自动完成配置,对外不体现。

LD(逻辑磁盘)

在这里插入图片描述

Chunk(CK)

在这里插入图片描述

  • 块大小是系统在切分物理空间的时候固定的大小,不能进行更改。

Chunk Group(CKG)

在这里插入图片描述

  • 一个CKG中的CK均来自于同一个DG中的硬盘,CKG具有RAID属性(RAID属性实际配置在Tier上),CK和CKG均属于系统内部对象,由存储系统自动完成配置,对外不体现。

Extent

在这里插入图片描述

  • 一个Extent归属于一个Volume或一个LUN,Extent大小在创建存储池时可以进行设置,创建之后不可更改,不同存储池的Extent大小可以不同,但同一存储池中的Extent大小是统一的。

Grain

在这里插入图片描述

  • Thin LUN以Grain为单位映射到LUN,对于Thick LUN,没有该对象。

Volume & LUN

在这里插入图片描述

  • 一个Volume对象用于组织同一个LUN的所有Extent、Grain逻辑存储单元,可动态申请释放Extent来增加或者减少Volume实际占用的空间。

多路径技术

在这里插入图片描述

  • 用户数据从主机侧到磁盘阵列,经历的典型路径为:主机 -> SAN网络 -> 存储系统机头-> 存储系统磁盘。
  • 所谓多路径技术,即在一台主机和存储阵列端使用多条路径连接,使主机到阵列的可见路径大于一条,其间可以跨过多个交换机,避免在交换机处形成单点故障。如上右图中,主机到存储阵列的可见路径有2条,即 (1,3)(2,4 ),该路径上有两台独立的交换机。在这种模式下,当路径1断开时,数据流会在主机多路径软件的导引下选择路径(2,4 )到达存储阵列侧,同样在左侧交换机失效时,也会自动导引到右侧交换机到达存储阵列。在路径1恢复的情况下,IO流会自动切回原有路径下发。整个切换和恢复过程对主机应用透明,完全避免了由于主机和阵列间的路径故障导致IO中断。
  • 存储系统冗余保护方案涉及了这个路径上的所有领域,在主机侧和SAN网络领域,通过结合UltraPath多路径软件及其它多路径软件,保证了前端路径没有单点故障;在存储机头侧,使用了全冗余硬件及热插拔技术实现了双控双活的冗余保护;在磁盘侧,利用磁盘双端口技术及磁盘多路径技术,实现了磁盘侧冗余保护。

多路径技术原理

在这里插入图片描述

  • 多路径软件的作用:
    • 避免了同一LUN有多条路径可达导致的操作系统逻辑错误。
    • 增强了链路的可靠性,避免了因为单个链路故障而导致的系统故障。

多路径软件与OS集成方式

在这里插入图片描述

  • 一般来说,多路径软件工作在磁盘驱动之下,以提供虚拟磁盘给上层应用访问,但也可以工作在磁盘驱动之上而在LVM之下(如Linux平台的各主流多路径软件)。
  • 多路径软件在与OS集成方面主要有以下两种差异:
    • 屏蔽原生磁盘,并创建虚拟SCSI磁盘优点:
      • 安全,用户无法使用原生的冗余磁盘,避免了误操作情况下数据破坏。
      • 对上层应用透明,部署多路径软件前后磁盘无任何变化,因此不需要更改上层应用配置。
      • 兼容性更好:某些应用固定只识别标准SCSI磁盘。
    • 屏蔽原生磁盘,并创建虚拟SCSI磁盘缺点:
      • 非OS原生多路径软件需要OS驱动栈支持事件拦截机制才能实现原生磁盘屏蔽;否则就需要使用hook方式替换系统函数,存在与第三方驱动共存风险。
  • 不拦截原生磁盘,额外创建虚拟磁盘优点:
    • 与第三方驱动共存兼容性较好。
  • 不拦截原生磁盘,额外创建虚拟磁盘缺点:
    • 用户可以使用原生的冗余磁盘,误操作情况下可能导致数据破坏
    • 需要上层应用更新配置。
    • 存在兼容性问题。

UltraPath功能


Failover

在这里插入图片描述

  • 当同一存储控制器有多条路径连接到主机,当LUN归属于该控制器时,当主路径故障时,会优先选择同控制器的其他端口的路径。
  • UltraPath在路径故障时可以自动将IO转移到其他可用路径,流程如下图所示:
    1. 应用向UltraPath生成的虚拟磁盘下发IO。
    2. UltraPath将IO转发给一个path 1(即SCSI设备)。
    3. 路径故障导致该path 1上IO失败。
    4. UltraPath将IO重新下发给另一个path 2。
    5. path 2返回IO成功。
    6. UltraPath向上层应用返回IO成功。

Failback


  • U1traPath在检测到路径故障恢复后会自动重新把I0下发到该路径。
  • 路径恢复有两种方式:
    • 对于支持热拔插的系统(如Windows) ,主机与存储之间的链路断开会导致SCSI设备被删除,相应的在链路恢复后会触发重新创建SCSI设备,对于这种场景U1traPath可以立即感知到路径恢复;
    • 对于不支持热拔插的系统(如AIX、低版本的Linux),U1 traPath通过周期例测感知路径恢复。

磁盘可靠性技术

硬盘可靠性

在这里插入图片描述

  • 电气部分和软件的作用是驱动机械部分完成数据的存取。

硬盘失效分类

在这里插入图片描述

  • UNC:Uncorrectable。
  • 硬盘坏道产生原因:
    • 逻辑坏道,如:磁头附着有污渍,硬盘内部有颗粒粉尘,外界干扰导致磁头飞行不稳定,写操作意外中断(例如断电),振动等。
    • 物理坏道,如:盘片本身有暇疵,硬盘内部金属颗粒,外界冲击导致头碟接触(HDI)等。
    • 磁头退化,如:磁头遭受静电击穿或过电流ESD/EOS,磁头来料质量问题,硬盘工作环境恶劣加速老化(温度高,电压不稳等)等

硬盘智能扫描和坏道修复

在这里插入图片描述

  • 硬盘坏道很多是由于写的时候造成,或者是擦伤,这些坏道是无法实时发现的,只能在数据读取时才发现。
  • 因此,硬盘坏道的后台扫描就十分重要了,否则等数据读取时,有可能RAID条带上的两个数据都是坏的,就无法恢复了。
  • 硬盘的容量越来越大,如果简单的逐个扇区扫描,一次扫描的周期会超过1个月甚至几个月,实际上就失去了及时发现坏道的效果。
  • 华为存储,研究坏道产生的原理规律:1、如果一个扇区损坏,其周围的扇区也可能有损坏;2、如果某个时间发现坏块,这段时间内其他扇区发生损坏的概率也高。
  • 根据该规律,设计了跳跃式扫描算法:间隔跳跃式检查硬盘部分扇区,但发现坏道时,检查附近的扇区,并提升检查速度,当坏道发现减少时,降低检查速度。
  • 现在后台扫描的准确度和及时率已经提升了数倍。

硬盘智能在线诊断系统

在这里插入图片描述

  • 优势:解决NPF问题(由于硬盘Firmware异常,短暂外部振动等偶发原因导致的硬盘软失效),减小RAID失效几率,最大程度保证业务连续性和数据可靠性。
  • 据统计,SATA硬盘年故障率约为2.5%,其中70%为可修复坏道。以30天为周期对硬盘进行周期性扫描,就意味着硬盘坏道每30天被全部发现并修复一次。由此,可以计算出实现硬盘介质扫描技术之后,硬盘年故障率可降低到λ=2.5%×0.3+2.5%×0.7×30/365= 0.89%,Raid组失效率可以降低约1个数量级。
    可以通过两种途径来检测硬盘坏道。
  • 读写失败自动分析。硬盘读写失败可能有多种原因,如硬盘磁头损坏、硬盘接口损坏、连接线缆损坏、硬盘被拔出等。当硬盘读写失败发生时,存储系统会根据系统当前状态、硬盘当前状态、IO失败信息等进行综合分析,判断该次读写失败原因是否为硬盘坏道。
  • 硬盘介质主动扫描。存储系统还支持硬盘介质后台扫描技术,利用硬盘空闲周期检查硬盘介质,及时发现硬盘坏道,避免累积错误。存储系统的硬盘介质扫描,摈弃了顺序读取硬盘所有扇区的传统方式,直接使用硬盘的内建介质扫描功能,避免了硬盘扫描对后端带宽的占用,将对系统性能的影响降到最低。当对正在进行介质扫描的硬盘进行读写时,扫描动作自动停止,转而处理读写操作,在读写停止之后,硬盘可以从之前的断点继续扫描。

硬盘预拷贝

在这里插入图片描述

  • 硬盘有自身的故障预测机制,但该机制,用硬盘厂商自身的话说,很不准确。
  • 因为华为存储,在硬盘自身机制基础上,设计了自己的预测机制,把预测准确度提升了数倍。
  • 技术原理:
    • 系统硬盘进行健康监控,当发现硬盘错误统计超过设定阈值后,立即报硬盘即将失效
    • RAID组通过拷贝的方式,将数据从疑似故障盘中迁移到热备空间,同时向管理人员告警,提醒更换疑似故障盘。
  • 技术优势:大大降低RAID组重构事件发生的概率,提高系统的可靠性。

慢IO快速响应

在这里插入图片描述

  • 硬盘是机械部件,偶尔一些IO比较慢是正常的,普通的应用也感觉不到。但对于客户的核心应用来讲,一般都对访问时延很敏感,这时慢的IO可能会影响应用甚至业务中断。
  • 华为存储,充分利用RAID技术,当某些硬盘IO比较慢时,及时放弃该硬盘IO,而改用读取其他硬盘的数据来校验生成该盘数据,从而尽快返回核心应用需要的数据。这样就有效保证了核心应用的业务连续性。
  • 技术原理:
    • 硬盘由于处理物理坏道、磁头问题、振动等异常,内部进行多次retry,IO响应时间过长(秒级),导致业务卡顿或者中断
    • 系统对下发给硬盘的IO进行时间监控,如果超过设定阈值,则通过RAID组降级读快速响应主机
  • 技术优势:快速响应业务,真正支撑对时延敏感的企业核心关键业务

RAID重构技术简介

在这里插入图片描述
OceanStor存储系统针对硬盘采用了多重故障容错设计,具有硬盘在线诊断、DHA(Disk Health Analyzer,硬盘故障诊断与预警)、坏道后台扫描、坏道修复等多种可靠性保障,RAID2.0+技术会根据热备策略自动在硬盘域中预留一定数量的热备空间,用户无需进行设置,当系统自动检测到硬盘上某个区域不可修复的介质错误或整个硬盘发生故障时,系统会自动进行重构,将受影响的数据块数据快速重构到其他硬盘的热备空间中,实现系统的快速自愈合。

RAID重构技术原理

在这里插入图片描述

  • 容量的增长使得传统RAID不得不面临一个严重的问题:10年前重构一块硬盘可能只需要几十分钟,而如今重构一块硬盘需要十几甚至几十个小时。越来越长的重构时间使得企业的存储系统在出现硬盘故障时长时间处于非容错的降级状态,存在极大的数据丢失风险,存储系统在重构过程中由于业务和重构的双重压力导致数据丢失的案例也屡见不鲜。
  • 基于底层块级虚拟化的RAID2.0+技术由于克服了传统RAID重构的目标盘(热备盘)性能瓶颈,使得重构数据流的写带宽不再成为重构速度的瓶颈,从而大大提升了重构速度,降低了双盘失效的概率,提升了存储系统的可靠性。
  • 图中显示了传统RAID和RAID2.0+两种技术重构原理的对比:
    • 左图传统RAID中,HDD0~HDD4五块硬盘创建RAID5,HDD5为热备盘,当HDD1故障后,HDD0、HDD2、HDD3、HDD4通过异或算法将重构的数据写入HDD5中;
    • 在右图的RAID2.0+示意图中,当HDD1故障后,故障盘HDD1中的数据按照CK的粒度进行重构,只重构已分配使用的CK(图中HDD1的CK12 和 CK13),存储池中所有的硬盘都参与重构过程,重构的数据分布在多块硬盘中(图中的HDD4和HDD9)。






推荐阅读
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
  • 网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 【重识云原生】第四章云网络4.8.3.2节——Open vSwitch工作原理详解
    2OpenvSwitch架构2.1OVS整体架构ovs-vswitchd:守护程序,实现交换功能,和Linux内核兼容模块一起,实现基于流的交换flow-basedswitchin ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • ps:写的第一个,不足之处,欢迎拍砖---只是想用自己的方法一步步去实现一些框架看似高大上的小功能(比如说模型中的toArraytoJsonsetAtt ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • IamsettingupApacheserverwithTortoiseSVNforalocalsourcecoderepository.Ihaveobservedt ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有