ZFS管理手册:第三章ZIL

混合存储池的存储架构 现在服务器CPU技术的发展是越来越快,无论是主频的提高,还是多核多线程技术的进步,CPU的处理能力是越来越高。磁盘(HDD)的存取速度增长越来越跟不上处理器的速度增长。虽然增加内存缓存一些数据来提高数据存取性能,但是存储容量的增长速度远高于内存容量的增长,成本也高了很多。SSD突破了传统机械硬盘的性能瓶颈,拥有极高的存储性能,也得到大家的认可。现在市面上有很多厂家提供SSD的磁盘,Sun、EM 阅读详情

ZFS管理手册:第三章ZIL

术语

在开始之前,我们需要了解一些在论坛、博客帖子、邮件列表和一般性讨论中似乎令人困惑的术语。它把我搞糊涂了,直到我写这篇文章的时候,我才真正的明白。所以,让我们开始吧:

  • ZFS Intent Log 或 ZIL: 一种日志记录机制,其中记录着所有要写入的数据,然后以事务的方式写入到存储中,保证了一致性。在功能上类似于日志文件系统的日志,如ext3或ext4。通常它都是存储硬盘上。ZIL由指向记录列表得ZIL头部、zil块和zil尾部组成。ZIL对于不同的写入具有不同的行为。对于小于64KB的写入(默认情况下),ZIL会存储写入的数据。对于较大的写入,写入的数据不存储在ZIL中,而是ZIL在日志记录中维护指向存储中同步数据的指针。
  • Separate Intent Log 或 SLOG: 一种单独的日志记录设备,用于在将ZIL的同步部分刷新到较慢的磁盘之前对其进行缓存。在将 ZIL 的同步部分刷新到较慢的磁盘之前缓存它们。这应该用一个电池供电的DRAM驱动器或一个SSD。SLOG只缓存同步数据,不缓存异步数据。异步数据将直接刷新到磁盘。此外,块被作为一个整体一次性写入,而不是作为同步事务写入SLOG。如果slog存在,ZIL将被移到其中,而不是保存在普通的硬盘上。SLOG中的所有内容都将始终保存在系统内存中。

SLOG 设备

哪款设备最适合 SLOG?从最快到最慢的顺序,我的意见如下:

  • NVRAM-有备用电源的DRAM驱动器,如STEC的ZeusRAM固态硬盘。这份名单中最快、最可靠的。也是最贵的。
  • 固态硬盘-基于NAND闪存的芯片,具有损耗均衡算法。类似于PCI-Express OCZ固态硬盘或英特尔。最好是SLC,尽管SLC和MLC固态硬盘之间的差距正在变小。
  • 10K以上SAS驱动器-企业级旋转盘式磁盘。SAS和光纤通道驱动器将IOPS推向吞吐量,速度通常是消费级SATA的两倍。在这份名单中最慢、最不可靠的。也是最便宜的。

重要的是要确定上面列出的所有三种设备都可以在停电期间保持数据持久性。SLOG和ZIL对于将您的数据传输到最终的存储至关重要。如果发生停电,并且您有一个不稳定的工作负载,最糟糕的情况是新数据没有刷新,而您只剩下旧数据。然而,重要的是要注意,在停电的情况下,您不会有损坏的数据,只是丢失了数据。您的数据在磁盘上仍将保持一致。

SLOG 性能

因为Slog是性能很好的存储,所以我可以期望我的应用程序或系统具有什么样的性能呢?那么,您将看到磁盘延迟、磁盘利用率和系统负载的提升。您不会看到的是吞吐量的提高。请记住,SLOG设备仍在每隔5秒将数据刷新到盘片。因此,在添加slog设备之后对磁盘进行基准测试没有多大意义,除非基准测试的目标是测试同步磁盘的写入延迟。所以,我没有那些数字让你去胡思乱想。然而,我手头上只有几张图表。

我有一个写入密集型的虚拟机。它是ZFS dataset 上的GlusterFS复制文件系统上的磁盘映像。我的管理程序中有足够的RAM,一个速度很快的CPU,但SATA磁盘速度很慢。由于该虚拟机上的应用程序希望频繁地将许多图片写入磁盘,随着图片数量的增长,我看到了大约5-10秒的磁盘延迟。磁盘上的吞吐量非常大。因此,在VM中执行任何写入操作都是痛苦的。系统升级,修改配置文件,甚至登录,这一切都变得非常非常缓慢。

因此,我对我的SSD进行了分区,并添加了slog。我的磁盘延迟立即下降到200毫秒左右。磁盘利用率从50%左右下降到5%左右。系统负载从1-2下降到几乎不存在。与磁盘有关的一切都处于更加健康的状态,并且VM也能够正常使用了。作为证据,请看这里从http://zen.ae7.st/munin/ 保存的以下图表

第一个图像从管理程序的角度显示了我的磁盘的使用情况。请注意,每个设备的吞吐量约为800 KBps。添加SSD Slog后,吞吐量降至400 KBps。这意味着池中的底层磁盘执行的工作较少,因此将持续更长时间。
磁盘吞吐量
上图显示了管理程序上zpool中的所有4个磁盘的吞吐量。
下一张图从虚拟机的角度显示了我的磁盘。请注意,如上所述,磁盘延迟和利用率是如何下降的,包括系统负载。
machine-load
上图显示了虚拟机系统负载和利用率的变化。
就在几天前,我在博客 http://pthree.org/2012/12/03/how-a-zil-improves-disk-latencies/ 上写了一篇关于文章专门解析这个现象。

添加SLOG

警告:某些主板在重新启动后会以不同方式向Linux内核注册磁盘。因此,在一次引导时标识为/dev/sda的磁盘在下一次引导时可能是/dev/sdb。对于存储数据的主池,这不是问题,因为ZFS可以根据元数据拓扑信息重建VDEV。然而,对于您的L2ARC和SLOG设备,不存在这样的元数据。所以与其通过它们的/dev/sdX将它们添加到池中,更应该使用/dev/disk/by-id/里的设备(实际上这是一个符号连接,指向/dev/sdX) ,把它添加到对应的Zpool中。如果您不注意此警告,您的slog设备可能根本没有添加到您的混合池中,您只能在后续把设备重新加入到池中。是否存在性能很好的SLOG,将很大程度的影响到应用程序的性能。

将slog添加到已有zpool并不困难。但是,mirror slog被认为是最佳做法。因此,在本例中,我将遵循最佳实践。假设我的池中有4个硬盘,以及一个向系统提供两个60 GB驱动器的OCZ RevoDrive SSD。我将对SSD上的驱动器进行5 GB的分区,然后将分区以mirror的方式组成SLOG设备。这就是如何将slog添加到池中。在这里,我首先使用GNU parted创建在SSD上分区,然后把SSD的分区添加到池中。/dev/disk/by-id/中的设备实际上是指向/dev/sda和/dev/sdb。

# parted /dev/sda mklabel gpt mkpart primary zfs 0 5G
# parted /dev/sdb mklabel gpt mkpart primary zfs 0 5G
# zpool add tank log mirror \
/dev/disk/by-id/ata-OCZ-REVODRIVE_OCZ-69ZO5475MT43KNTU-part1 \
/dev/disk/by-id/ata-OCZ-REVODRIVE_OCZ-9724MG8BII8G3255-part1
# zpool status
  pool: tank
 state: ONLINE
 scan: scrub repaired 0 in 1h8m with 0 errors on Sun Dec  2 01:08:26 2012
config:

        NAME                                              STATE     READ WRITE CKSUM
        pool                                              ONLINE       0     0     0
          raidz1-0                                        ONLINE       0     0     0
            sdd                                           ONLINE       0     0     0
            sde                                           ONLINE       0     0     0
            sdf                                           ONLINE       0     0     0
            sdg                                           ONLINE       0     0     0
        logs
          mirror-1                                        ONLINE       0     0     0
            ata-OCZ-REVODRIVE_OCZ-69ZO5475MT43KNTU-part1  ONLINE       0     0     0
            ata-OCZ-REVODRIVE_OCZ-9724MG8BII8G3255-part1  ONLINE       0     0     0

SLOG预期寿命

由于您可能会在GNU/Linux服务器中使用消费级SSD作为你的SLOG,因此我们需要考虑SSD在写入密集型场景中的损耗。当然,这在很大程度上会根据制造商的不同而有所不同,但我们可以考虑一下常见的情况。

首先也是最重要的是,ZFS拥有先进的损耗均衡算法,可以均匀地固态硬盘上的每个芯片。它实际上是支持对所有对象进行垃圾收集,因此它不需要支持Trim。由于文件系统的写入时复制特性,ZFS的损耗平衡是内部已实现的。

其次,不同的驱动器将采用不同的纳米工艺。纳米工艺越小,固态硬盘的寿命就越短。例如,Intel 320是一款25纳米的MLC 300 GB固态硬盘,额定值约为5000个P/E周期。这意味着如果使用磨损均衡算法,您可以向整个SSD写入5000次。这将产生1500000 GB的总写入数据,即1,500 TB。我的ZIL每秒维护大约3MB的数据。因此,我每年可以维护大约95 TB的写入数据。这让我的英特尔固态硬盘的寿命大约为15年。

然而,Intel 335是一款20纳米的MLC 240 GB固态硬盘,其额定值约为3000个P/E周期。使用磨损均衡,这意味着您可以对整个SSD进行3000次写入,从而产生720 TB的总写入数据。对于我的3 Mbps zil来说,这只有7年的时间,不到Intel 320预期寿命的一半。重点是,当你计划你的池时,你需要注意这些东西。

现在,如果您使用的是有备用电源的DRAM驱动器,则损耗均衡不是问题,并且DIMM可以持续工作到服务器关机前的最后一刻。10k+的SAS或FC驱动器可能也是如此。

容量

简单地说,你可能不需要很大的ZIL。我只用4 GB的可用空间作为我的SLOG,而实际上只用到了其中了1-2 MB。我把我的所有虚拟机放在同一个管理程序上,运行操作系统升级,同时他们也在做大量的工作,并且只看到ZIL大约只有100MB的缓存数据。我无法想象您的ZIL需要什么样的工作负荷才能使用超过1 GB的缓存空间,更不用说我分区出的4 GB空间了。您可以运行下面的命令来检查ZIL的大小:

# zpool iostat -v tank
                                                     capacity     operations    bandwidth
tank                                              alloc   free   read  write   read  write
------------------------------------------------  -----  -----  -----  -----  -----  -----
tank                                               839G  2.81T     76      0  1.86M      0
  raidz1                                           839G  2.81T     73      0  1.81M      0
    sdd                                               -      -     52      0   623K      0
    sde                                               -      -     47      0   620K      0
    sdf                                               -      -     50      0   623K      0
    sdg                                               -      -     47      0   620K      0
logs                                                  -      -      -      -      -      -
  mirror                                          1.46M  3.72G     20      0   285K      0
    ata-OCZ-REVODRIVE_OCZ-69ZO5475MT43KNTU-part1      -      -     20      0   285K      0
    ata-OCZ-REVODRIVE_OCZ-9724MG8BII8G3255-part1      -      -     20      0   285K      0
------------------------------------------------  -----  -----  -----  -----  -----  -----

总结

快速SLOG可以为需要较低同步事务延迟的应用程序性能有惊人的提升。这对于对时间更敏感的数据库服务器或其他应用程序非常有效。但是,将Slog添加到您的池中会增加成本。电池供电的DRAM芯片非常非常昂贵。通常每8 GB DDR3 DIMM的价格约为2,500美元,其中40 GB MLC固态硬盘的价格仅为100美元,而600 GB 15k SAS驱动器的价格为200美元。尽管如此,容量确实不是问题,而性能才是问题。我会选择更快的IOPS,更小容量的的SSD作为SLOG。这里有一个好的提议,你可以对它进行分区,并在同一个驱动器上共享L2ARC。我将在下一篇文章中讨论。

ZFS性能调优实战:用SSD构建ZIL与L2ARC缓存的完整指南 本文详细介绍了如何通过SSD构建ZIL与L2ARC缓存来优化ZFS性能。从硬件选型到实战配置,包括ZIL写缓存和L2ARC读缓存的设置技巧,以及高级调优与排错方法。通过合理配置,可显著提升ZFS存储系统的随机读写性能,适用于企业级存储环境。 阅读详情

相关推荐

5、ZFS 管理与使用指南

本文详细介绍了ZFS文件系统的管理与使用,涵盖RAID-Z级别、zpool和zfs核心命令的操作方法。内容包括存储池的创建与维护、文件系统的管理、快照与克隆、数据完整性保护机制(如擦洗和重新同步),以及压缩、去重、缓存和日志等高级特性。适用于在Raspberry Pi OS等环境中部署ZFS的用户,帮助实现高效、安全的数据存储管理。

n7o8p的博客 144

ZFS缓存设备选型与配置全攻略:单盘、RAID1还是特殊设备?从数据安全角度聊聊ZIL和L2ARC

本文深入探讨ZFS缓存设备选型与配置策略,重点分析ZIL和L2ARC在数据安全与性能平衡中的关键作用。从企业级SSD选型到RAID1必要性评估,再到L2ARC配置的黄金法则,提供全面的实战指南。特别强调ZFS缓存架构的多层特性,帮助用户避免常见误区,优化存储性能。

weixin_30654583的博客 623

5、ZFS管理与使用指南

本文详细介绍了ZFS文件系统的管理与使用,涵盖RAID-Z的优势与要求、zpool和zfs命令的各类操作,包括存储池创建与维护、文件系统管理、快照、克隆、压缩、去重等高级功能。同时讲解了ZFS的数据完整性保护机制和运维注意事项,帮助用户高效安全地管理ZFS存储系统。

julia4scientist的博客 85

ZFS文件系统(8) -- SLOG

添加一个SLOG       有些磁盘不存在以磁盘一致的方式重新启动Linux内核,因此,有时候引导磁盘可能是/dev/sda,而下一次可能就是/dev/sdb了,对于主存储池,这倒不是什么问题,因为ZFS可以基于元数据重建VDEVS,但是对于L2ARC和SLOG这些没有元数据存在的设备,难道还是要通过/dev/sdx的方式来添加?或许下一次启动,你就不能确定那一次才是需要配置为SLOG的设备,

腾飞吧,海绵宝宝 5889

ZFS中文手册(完整书签)

Oracle® Solaris 管理:ZFS 文件系统 中文版 同样适用OpenZFS ZFS (old:Zettabyte file system) combines a file system with a volume manager. It began as part of the Sun Microsystems Solaris operating system in 2001. Large parts of Solaris – including ZFS – were published under an open source license as OpenSolaris

【实战学习(五)】开源项目学习之uWSGI的部署以及配合nginx

文章目录1)uWSGI是什么?1.1 WSGI1.1.1 Application端1.1.2 Server端1.1.3 WSGI中间件1.2 uwgi1.3 uWSGI、WSGI、uwsgi之间的关系*为什么有了uWSGI为什么还需要nginx?2)连接uwsgi和Django*避坑之Windows10安装uWSGI非常极其艰难,最好勿浪费时间,直接转战Linux吧:2.1 uWGI部署2.1.1 在虚拟环境下安装uwsgi:2.1.2 测试uWSGI的运行2.1.3 使用uWSGI运行Django项目2.

黑黑白白君的博客 1507

ZFS中ZIL和L2ARC 性能实测

随着ZFS 不断的普及,网上对于ZIL 和L2ARC 是否使用,以及使用效果如何一直没有直观的表现,今天就拿实际测试来看下ZIL 和L2ARC 是否能给ZFS 带来性能提升

nikolay的专栏 3950

评价模型——层次分析法(AHP)与熵权法(EWM)

层次分析法是定性与定量结合的多准则决策、评价方法。将决策的有关元素分解成目标层、准则层和方案层,并通过人们的判断对决策方案的优劣进行排序,在此基础上进行定性和定量分析。它把人的思维过程层次化、数量化,并用数学为分析、决策、评价、预报和控制提供定量的依据。

好好学习 天天向上 2万+

ZFS管理手册:第一章VDEVs

ZFS管理手册:VDEVs

路人丙的奋斗史 3909

STM32—时钟树(结合系统时钟函数理解)

时钟树的概念: 我们可以把MCU的运行比作人体的运行一样,人最重要的是什么?是心跳! 心脏的周期性收缩将血液泵向身体各处。心脏对于人体好比时钟对于MCU,微控制器(MCU)的运行要靠周期性的时钟脉冲来驱动,而这个脉冲的始源往往是由外部晶体振荡器提供时钟输入,最终转换为多个外部设备的周期性运作。这种时钟“能量”的传递路径犹如大树的养分由主干流向个分支,因此称为时钟树。 STM32时钟: 在STM32...

肥宅快乐博客 1万+

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1099

ZFS管理手册:第四章ARC

ZFS管理手册:第四章ARC

路人丙的奋斗史 2346

C# 【WebService编写调用】

😹 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!!

只有登上山顶,才能看到那边的风光 1173

为ZFS zpool添加固态硬盘缓存 ZIL写缓存|ARC写缓存

此处使用img文件加载为loop的方式添加至存储池,存在不稳定性,img加载到loop后本质上是一个块设备文件,建议使用单独的SSD或M.2或加速盘作为缓存设备。注意:zpool池添加缓存设备以后重启系统如果loop设备未挂载,则储存池导入失败,需先挂载loop再导入zpool池。而cache和内存的效果一样,只是作为L2ARC加速读取,内存还是一级ARC,作为最热的文件缓存,L2作为沉淀层。修改After字段,在loop.service服务之后启动,因为要先挂载loop设备才能启动zpool,如下图。

qq_44677528的博客 4271

强化学习从基础到进阶-案例与实践[4]:深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

强化学习从基础到进阶-案例与实践[4]:深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

丨汀、的博客 2066

Unity 热更 之 【YooAsset 热更】几分钟快速了解 YooAsset [功能面板]、以及 [基础代码] 说明

Unity 的资源管理系统不断发展,以适应不同项目的需求和解决特定的问题。AssetBundle 和 Addressable Asset System 是 Unity 官方提供的资源管理解决方案,而 YooAsset 是第三方提供的资源管理系统。简化的API和易用性YooAsset 可能提供了更简单直观的 API,使得资源加载和管理更加容易。对于不熟悉 Addressable 或 AssetBundle 复杂配置的开发者来说,YooAsset 可能是一个更易于上手的选择。性能优化。

仙魁XAN 2955

ZFS学习和使用

作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 github openzfs 初学者指南:ZFS 是什么,为什么要使用 ZFS? | Linux 中国 wiki openzfs 安装 META文件记录的支持的内核版本号,3.10~5.9, Meta: 1 Name: zfs Branch: 1.0 Version:

黑客三遍猪 3788

020、Sensor 供电设计:AVDD、DVDD、IOVDD 的上电时序与纹波要求

本文总结了图像传感器(Sensor)供电设计中的关键要点与常见问题:1. 三路供电特性差异:AVDD(模拟供电)对纹波最敏感(通常<30mVpp),DVDD需应对大电流瞬态变化,IOVDD需满足MIPI接口电压稳定要求。2. 上电时序至关重要,应遵循"模拟→数字→IO"的启动顺序,时序偏差可能导致初始化失败。3. 纹波控制需合理选择电容组合(如10μF+0.1μF),注意布局走线及电容ESR/ESL特性。4. 调试建议使用示波器多通道测量时序和纹波,重点关注传感器启动瞬间的电源特性。5. 经验教训包括预留设

sundong_81的博客 526

详细介绍ZFS的缓存系统

在没有专用 SLOG 设备的情况下,ZIL 会存储在池中的常规 VDEV 上,这可能会影响性能,因为同步写操作需要立即完成。● 性能优化:通过将 ZIL 日志存储在专用的高速设备上(如 SSD),SLOG 可以显著减少写入延迟,提高同步写操作的性能。● 缓存选择:L2ARC 不会缓存所有数据,而是根据一定的算法(如最近最少使用、频率等)选择热数据或最近被逐出的数据。● 设备选择:选择高耐久性的 SSD 作为 SLOG 设备,因为 ZIL 的写入操作频繁,对设备的耐用性要求较高。

远方雪的专栏 2431

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【转载】zfs源代码概览

本文转自:http://developer.sun.com.cn/home/sdnchina/BigAdmin/features/articles/zfs-source.htmlZFS 源代码概览 [ odg ] 此页面旨在让用户了解与 ZFS 文件系统相关的源代码的简要概述。它并不是

yangp01的专栏 3324

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Linux学习之文件系统zfs文件系统

ZFS(Zettabyte File System)一个打破过去思维的文件系统,是 Sun Microsystems这家公司所开发出来的全新型态文件系统,因为License的问题所以目前只有在Solaris、Mac、BSD上看得到,ZFS是128bit的文件系统,而它到底有多强呢?别再等待了马上用了你就知道,只能说ZFS真是一个上帝赐给IT人员的好礼物。 ...

马哥私房菜 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ZFS文件系统的特点以及调优

Record SizeRecord Size 也就是通常所说的文件系统的block size。ZFS采用的是动态的Record Size,也就是说ZFS会根据文件大小选择*适合*的512字节的整数倍作为存储的块大小,最大的RecordSize为128KB。通常没有必要手工设置Record Size。如果手工把Record Size调小,将不会得到空间的节省,并且常常会影响性能。ZFS的Block是...

渴死的火烈鸟 3034

ZFS源码详解

zfs源代码解析

zb0610的博客 1648

ubuntu安装和使用zfs文件系统

ZFS(Zettabyte File System)文件系统也叫动态文件系统(Dynamic File System),是第一个128位文件系统。ZFS 强健、可伸缩,且易于管理。ZFS 使用存储池的概念来管理物理存储。ZFS 将设备聚集到存储池中,而不是强制要求创建虚拟卷。存储池描述了存储的物理特征(设备布局、数据冗余等),并充当可以从其创建文件系统的任意数据存储库。文件系统不再受限于单个设备,允许它们与池中的所有文件系统共享磁盘空间。

野生钢铁侠 6773

ZFS文件系统(7) -- ZIL

术语       在我们开始之前,我们需要获取一些知识的方式大概是一些让人混乱的论坛,博客,邮件列表或者一般常规性的讨论。尽管我知道我自己要做什么,他们还是会是我感到很混乱,让我们一起来看看吧。       ZIL 所有需要存储的数据,都需要被记录下来,然后再通过事务组刷人到磁盘,日记日志文件系统,看起来和EXT3、EXT4很类似,通常存储在磁盘的盘片上,由一个ZIL头牵引这一个ZIL列表记录

腾飞吧,海绵宝宝 3234

solaris oracle zfs 调优,使用闪存存储时调优 ZFS

使用闪存存储时调优 ZFS以下信息适用于闪存 SSD、F20 PCIe 加速卡、F40 PCIe 加速卡和 F5100 闪存存储阵列。将 ZFS 用于闪存存储时请查看以下一般注释:针对 ZIL(ZFS intent log,ZFS 意图日志),请考虑使用由具有持久性内存的控制器管理的 LUN 或低延迟磁盘(如果可用)。相比于使用闪存进行低延迟提交,此选项可能具有更显著的成本效益。日志设备的大小必须...

weixin_32352213的博客 689
上一篇: ZFS管理手册:第二章RAIDZ
下一篇: ZFS管理手册:第四章ARC
Kyle__Shaw
博客等级 码龄18年 43粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值