 Curve 分布式存储设计Curve 分布式存储设计 程义 — Curve Maintainer XAgenda 第二 第三 第四 第一 Curve的由来 Curve的设计目标 Curve块存储 和 Curve文件存储 Curve社区Curve的由来 1. 代码复杂/代码量大 2. 运维难度高 3. 无法满足高的性能需求Curve的设计目标 1. Curve云原生软件定义存储 2. Curve块存储 Curve块存储 3. Curve文件存储 4. 高性能,易运维,云原生Curve块存储 1. 高性能分布式共享数据库场景 2. Curve块存储提供底层分布式共享存储 3. Polardb for PostgreSQL提供上层高性能数 据库服务 4. 性能测试 1. benchmarkSQL 每分钟事务数提升39% 2. pgbench 延迟降低21% TPS提升26% 研究现状Curve块存储 研究现状Curve块存储 1. 分布式块存储服务 2. KVM块存储服务 3. iSCSI协议 4. 容器云块存储(CSI) 应用场景Curve块存储 1. 高可用性/高可靠性 (易运维) 2. RAFT一致性协议 3. CopySet分配算法 4. 拓扑结构 5. 高性能 6. chunkfilepool (降低写放大) 7. data stripe (增大并发) 8. zerocopy0 码力 | 20 页 | 4.13 MB | 6 月前3 Curve 分布式存储设计Curve 分布式存储设计 程义 — Curve Maintainer XAgenda 第二 第三 第四 第一 Curve的由来 Curve的设计目标 Curve块存储 和 Curve文件存储 Curve社区Curve的由来 1. 代码复杂/代码量大 2. 运维难度高 3. 无法满足高的性能需求Curve的设计目标 1. Curve云原生软件定义存储 2. Curve块存储 Curve块存储 3. Curve文件存储 4. 高性能,易运维,云原生Curve块存储 1. 高性能分布式共享数据库场景 2. Curve块存储提供底层分布式共享存储 3. Polardb for PostgreSQL提供上层高性能数 据库服务 4. 性能测试 1. benchmarkSQL 每分钟事务数提升39% 2. pgbench 延迟降低21% TPS提升26% 研究现状Curve块存储 研究现状Curve块存储 1. 分布式块存储服务 2. KVM块存储服务 3. iSCSI协议 4. 容器云块存储(CSI) 应用场景Curve块存储 1. 高可用性/高可靠性 (易运维) 2. RAFT一致性协议 3. CopySet分配算法 4. 拓扑结构 5. 高性能 6. chunkfilepool (降低写放大) 7. data stripe (增大并发) 8. zerocopy0 码力 | 20 页 | 4.13 MB | 6 月前3
 告警OnCall事件中心建设方法白皮书事件 ONCALL 中心建设方法 一站式处理值班 OnCall,智能降噪 北京快猫星云科技有限公司 前言 市面上有众多监控系统,刨去商业软件不说,开源的就有 Nagios、Zabbix、Open-Falcon、 Nightingale、Grafana、Prometheus、Elastalert 等等,还有云厂商提供的监控系统,比如华为云的云 监控、腾 Prometheus 可能有多套)或者 Nightingale, 日志的监控可能用的 Elastalert,如果上云了,可能还会有多套不同的云监控(尤其是多云场景下)。 监控系统的重心,通常是采集、存储、可视化、生成告警事件,但通常都不具有完备的事件后续处理能 力。这里说的后续处理主要包括:多渠道分级通知、告警静默、抑制、收敛聚合、降噪、排班、认领升 级、协同闭环处理等等。监控系统或多或少都有一些 警太多、打扰太多的原因是什么,然后针对原因提出对应的 方案。 告警太多的常见原因 最常见的原因,是告警规则设置得不合理。比如很多规则触发了告警之后,实际没有后续动作,只是起到 常态化通知的效果,不需要排查,也不需要止损,甚至连个长线的 TODO 都没有。这类告警多了人就疲 了,当重要的告警来临的时候,也容易忽略。这样的规则如果不经过治理,日积月累,就会产生很多无用 的告警。0 码力 | 23 页 | 1.75 MB | 1 年前3 告警OnCall事件中心建设方法白皮书事件 ONCALL 中心建设方法 一站式处理值班 OnCall,智能降噪 北京快猫星云科技有限公司 前言 市面上有众多监控系统,刨去商业软件不说,开源的就有 Nagios、Zabbix、Open-Falcon、 Nightingale、Grafana、Prometheus、Elastalert 等等,还有云厂商提供的监控系统,比如华为云的云 监控、腾 Prometheus 可能有多套)或者 Nightingale, 日志的监控可能用的 Elastalert,如果上云了,可能还会有多套不同的云监控(尤其是多云场景下)。 监控系统的重心,通常是采集、存储、可视化、生成告警事件,但通常都不具有完备的事件后续处理能 力。这里说的后续处理主要包括:多渠道分级通知、告警静默、抑制、收敛聚合、降噪、排班、认领升 级、协同闭环处理等等。监控系统或多或少都有一些 警太多、打扰太多的原因是什么,然后针对原因提出对应的 方案。 告警太多的常见原因 最常见的原因,是告警规则设置得不合理。比如很多规则触发了告警之后,实际没有后续动作,只是起到 常态化通知的效果,不需要排查,也不需要止损,甚至连个长线的 TODO 都没有。这类告警多了人就疲 了,当重要的告警来临的时候,也容易忽略。这样的规则如果不经过治理,日积月累,就会产生很多无用 的告警。0 码力 | 23 页 | 1.75 MB | 1 年前3
 Raft在Curve存储中的工程实践分布式存储系统,支持 块存储 和 文件存储 2018~2021 Curve块存储 2021~2022 Curve文件存储 • 基于Openstack构建云计算平台 • 底层存储使用Ceph块存储 • 稳定性挑战 • 算力平台kubernetes的迅速发展 • AI/大数据业务的快速增长 • 存储使用Ceph文件存储/HDFS • 成本/性能挑战 Curve块存储和文件存储均采用raft协议整体架构 对接OpenStack平台为云主机提供高性能块 存储服务 • 对接Kubernetes为其提供RWO、RWX等类 型的持久化存储卷 • 对接PolarFS作为云原生数据库的高性能存储 底座,完美支持云原生数据库的存算分离架 构 • Curve作为云存储中间件使用S3兼容的对象 存储作为数据存储引擎,为公有云用户提供 高性价比的共享文件存储 • 支持在物理机上挂载使用块设备或FUSE文件 致已经被提交,系统切换到新的配置(new)。RAFT协议简介 日志压缩 • 日志会不断增长,占用空间 • 采用快照的方式压缩日志 • 在某个时间点,整个系统的状态都以快照的形式写入 到稳定的持久化存储中 • 完成一次快照之后,删除时间点之前的所有日志和快 照。BRAFT简介 • raft协议提出之后,涌现出了非常多的实现,比如etcd,braft,tikv等。 • braft是raft的一0 码力 | 29 页 | 2.20 MB | 6 月前3 Raft在Curve存储中的工程实践分布式存储系统,支持 块存储 和 文件存储 2018~2021 Curve块存储 2021~2022 Curve文件存储 • 基于Openstack构建云计算平台 • 底层存储使用Ceph块存储 • 稳定性挑战 • 算力平台kubernetes的迅速发展 • AI/大数据业务的快速增长 • 存储使用Ceph文件存储/HDFS • 成本/性能挑战 Curve块存储和文件存储均采用raft协议整体架构 对接OpenStack平台为云主机提供高性能块 存储服务 • 对接Kubernetes为其提供RWO、RWX等类 型的持久化存储卷 • 对接PolarFS作为云原生数据库的高性能存储 底座,完美支持云原生数据库的存算分离架 构 • Curve作为云存储中间件使用S3兼容的对象 存储作为数据存储引擎,为公有云用户提供 高性价比的共享文件存储 • 支持在物理机上挂载使用块设备或FUSE文件 致已经被提交,系统切换到新的配置(new)。RAFT协议简介 日志压缩 • 日志会不断增长,占用空间 • 采用快照的方式压缩日志 • 在某个时间点,整个系统的状态都以快照的形式写入 到稳定的持久化存储中 • 完成一次快照之后,删除时间点之前的所有日志和快 照。BRAFT简介 • raft协议提出之后,涌现出了非常多的实现,比如etcd,braft,tikv等。 • braft是raft的一0 码力 | 29 页 | 2.20 MB | 6 月前3
 CurveFS ChunkID持久化chunkid 持久化© XXX Page 2 of 3 1. 2. 3. 1. 2. 3. 4. 5. 6. 1. 2. 3. 4. 1. 1. 1. 2. 1. 2. 3. 4. 3. 2. 背景 将原有的获取chunkid的方法从space迁入mds中,并持久化写入etcd中; 只考虑单 ChunkIDGenerator 类对象,方法 AllocateS3Chunk 调用 ChunkIDGenerator对象的GenChunkID方法; ChunkIDGenerator 类 构造函数 初始化 init 函数:用于初始化或者更改 ChunkIdAllocatorImpl 的一些配置。但是这些配置不会立即生效,而是等到当前 chunkId池枯竭时才会生效。 析构函数 GenChunkID 申请的chunkID池是否枯竭? 在etcd上的Value不可解码 返回一个新的chunkid 方案 class ChunkIDGenerator { client_; // etcd chunkIdStoreKey_; // chunkid 存储在etcd上的 key nextId_; // 下一个可分配的 chunkID lastId_; // 当前chunkID bundle 内最后一个可分配的chunkID bundleSize_;//0 码力 | 3 页 | 79.38 KB | 6 月前3 CurveFS ChunkID持久化chunkid 持久化© XXX Page 2 of 3 1. 2. 3. 1. 2. 3. 4. 5. 6. 1. 2. 3. 4. 1. 1. 1. 2. 1. 2. 3. 4. 3. 2. 背景 将原有的获取chunkid的方法从space迁入mds中,并持久化写入etcd中; 只考虑单 ChunkIDGenerator 类对象,方法 AllocateS3Chunk 调用 ChunkIDGenerator对象的GenChunkID方法; ChunkIDGenerator 类 构造函数 初始化 init 函数:用于初始化或者更改 ChunkIdAllocatorImpl 的一些配置。但是这些配置不会立即生效,而是等到当前 chunkId池枯竭时才会生效。 析构函数 GenChunkID 申请的chunkID池是否枯竭? 在etcd上的Value不可解码 返回一个新的chunkid 方案 class ChunkIDGenerator { client_; // etcd chunkIdStoreKey_; // chunkid 存储在etcd上的 key nextId_; // 下一个可分配的 chunkID lastId_; // 当前chunkID bundle 内最后一个可分配的chunkID bundleSize_;//0 码力 | 3 页 | 79.38 KB | 6 月前3
 新一代云原生分布式存储新一代云原生分布式存储—Curve 上 李小翠 网易数帆存储团队分布式存储介绍 01 存储的发展 | 分布式存储的分类 | 分布式存储的要素 02 03 04 Ceph 架构简介 | 场景介绍 | 使用中的问题 Curve 架构简介 | 数据对比 | 应用情况 FAQ 答疑存储的发展 互联网时代,数据大爆炸 大型主机 成本高 单点问题 扩容困难 各存储设备通过网络互联 各存储设备通过网络互联 大规模 弹性扩容 底层构建在分布式存储之上 云的概念 成本:共用基础设施 弹性:随意扩缩容 速度:更快的构建发布业务 底层构建在分布式存储之上 云原生的概念: 易用性:跨平台,超融合,弹性 小型主机 容量有限分布式存储的分类 按照各种应用场景所需的存储接口分类 对象 存储 文件 存储 块存储 接口为简单的 Get、PUT、DEL 和其他扩展 通常意义是支持 对指定地址空间进行随机读写 传统意义的块存储:磁盘分布式存储的要素 如何构建分布式文件系统? 以分布式块存储为例。 •提供大容量的块设备 •可以在指定地址空间内随机读写 write(offset, len) •服务质量要求:数据不能丢、服务随时可用、弹性扩缩容 要什么 •成百上千台存储节点 •磁盘故障、机器故障、网络故障概率性发生 有什么 分布式存储系统需要满足接口需求,并且有持续监控、错误检测、容错与自动恢复的能力0 码力 | 29 页 | 2.46 MB | 6 月前3 新一代云原生分布式存储新一代云原生分布式存储—Curve 上 李小翠 网易数帆存储团队分布式存储介绍 01 存储的发展 | 分布式存储的分类 | 分布式存储的要素 02 03 04 Ceph 架构简介 | 场景介绍 | 使用中的问题 Curve 架构简介 | 数据对比 | 应用情况 FAQ 答疑存储的发展 互联网时代,数据大爆炸 大型主机 成本高 单点问题 扩容困难 各存储设备通过网络互联 各存储设备通过网络互联 大规模 弹性扩容 底层构建在分布式存储之上 云的概念 成本:共用基础设施 弹性:随意扩缩容 速度:更快的构建发布业务 底层构建在分布式存储之上 云原生的概念: 易用性:跨平台,超融合,弹性 小型主机 容量有限分布式存储的分类 按照各种应用场景所需的存储接口分类 对象 存储 文件 存储 块存储 接口为简单的 Get、PUT、DEL 和其他扩展 通常意义是支持 对指定地址空间进行随机读写 传统意义的块存储:磁盘分布式存储的要素 如何构建分布式文件系统? 以分布式块存储为例。 •提供大容量的块设备 •可以在指定地址空间内随机读写 write(offset, len) •服务质量要求:数据不能丢、服务随时可用、弹性扩缩容 要什么 •成百上千台存储节点 •磁盘故障、机器故障、网络故障概率性发生 有什么 分布式存储系统需要满足接口需求,并且有持续监控、错误检测、容错与自动恢复的能力0 码力 | 29 页 | 2.46 MB | 6 月前3
 多云管下的自动化运维架构-刘宇多云管下的自动化运维架构 刘宇 Bespin 高级研发总监 自我介绍 自我介绍 • DevOps专家 • 曾任职于新浪、百度、金山 • 《Puppet实战作者》 《Puppet实战手册》 《Python进阶》 • QCon金牌讲师,QCon优秀出品人 目录 ① 行业趋势分析 ② 多云下运维的挑战 ③ 多云平台架构如何设计? ④ 困难以及挑战 资源统一管理 监控 —〉 账单难处理 。。。 多云下运维的挑战 Gartner:云管理平台需要具备多云管理、自服务、计量计费、资源弹性及服务编排, 能够自动化部署和配置相关资源,可以与企业现有IT管理系统集成的服务化能力 云管平台架构设计 私有云 公有云 虚拟化 接⼝口适配 多云统⼀一编排 ⾃自助服务 多云管理理 资源优化 云管平台架构设计 Performance Monitoring ITSM Redis MySQL Aliyun AWS Huawei Other • 通用的参数在拦截器获取实 现,并注入到log4j的MDC • 使用时没有侵入,自动将通 用参数写入日志 • 标准化:统一日志规范和记 录日志方式 资源统一管理:日志 Log interceptor Controller Cloud Service Inject basic info HttpRequest0 码力 | 32 页 | 6.05 MB | 1 年前3 多云管下的自动化运维架构-刘宇多云管下的自动化运维架构 刘宇 Bespin 高级研发总监 自我介绍 自我介绍 • DevOps专家 • 曾任职于新浪、百度、金山 • 《Puppet实战作者》 《Puppet实战手册》 《Python进阶》 • QCon金牌讲师,QCon优秀出品人 目录 ① 行业趋势分析 ② 多云下运维的挑战 ③ 多云平台架构如何设计? ④ 困难以及挑战 资源统一管理 监控 —〉 账单难处理 。。。 多云下运维的挑战 Gartner:云管理平台需要具备多云管理、自服务、计量计费、资源弹性及服务编排, 能够自动化部署和配置相关资源,可以与企业现有IT管理系统集成的服务化能力 云管平台架构设计 私有云 公有云 虚拟化 接⼝口适配 多云统⼀一编排 ⾃自助服务 多云管理理 资源优化 云管平台架构设计 Performance Monitoring ITSM Redis MySQL Aliyun AWS Huawei Other • 通用的参数在拦截器获取实 现,并注入到log4j的MDC • 使用时没有侵入,自动将通 用参数写入日志 • 标准化:统一日志规范和记 录日志方式 资源统一管理:日志 Log interceptor Controller Cloud Service Inject basic info HttpRequest0 码力 | 32 页 | 6.05 MB | 1 年前3
 Curve文件系统元数据持久化方案设计© XXX Page 1 of 12 元数据持久化© XXX Page 2 of 12 前言 Raft Log Raft Snapshot 持久化文件 key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 dump 到文件进行持久化© XXX Page 3 of 12 Raft Log +------+------------+-----+----- -----+----------------+---------+ 持久化文件 字段 字节数 说明 CURVEFS 7 magic number(常量字符 "CURVEFS"),用于标识该文件为 curvefs 元数据持久化文件 version 4 文件版本号(当文件格式变化时,可以 100% 向后兼容加载旧版持久化文件) size 8 键值对数量 key_value_pairs / 键值对(当0 码力 | 12 页 | 384.47 KB | 6 月前3 Curve文件系统元数据持久化方案设计© XXX Page 1 of 12 元数据持久化© XXX Page 2 of 12 前言 Raft Log Raft Snapshot 持久化文件 key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft redis 中哈希表实现的优点? 参考 前言 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 dump 到文件进行持久化© XXX Page 3 of 12 Raft Log +------+------------+-----+----- -----+----------------+---------+ 持久化文件 字段 字节数 说明 CURVEFS 7 magic number(常量字符 "CURVEFS"),用于标识该文件为 curvefs 元数据持久化文件 version 4 文件版本号(当文件格式变化时,可以 100% 向后兼容加载旧版持久化文件) size 8 键值对数量 key_value_pairs / 键值对(当0 码力 | 12 页 | 384.47 KB | 6 月前3
 Ubuntu 桌面培训 2010软件包管理器种类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 VI.VI 使用 Ubuntu 软件中心 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 VI.VII使用新立得软件包管理器 . . . . . . . . . . . . . . . . . . . . . . . 487 目录 9 Ubuntu 桌面培训 目录 XI.II.III Apt/Aptitude/软件中心/新立德把软件给我装哪了? . . . . . 487 XI.II.IV 如何使用 DVD 做源? . . . . . . . . . . . . . . . . . . . . . . . . 了,可是,我装的软件并不多,这是怎么回事? . . . . . . . . . . 488 XI.II.VIII我安装的是 Beta/RC 版,我可以升级到正式版吗? . . . . . . 489 XI.III 系统管理和个性化配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 XI.III.I Root0 码力 | 540 页 | 26.26 MB | 1 年前3 Ubuntu 桌面培训 2010软件包管理器种类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 VI.VI 使用 Ubuntu 软件中心 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 VI.VII使用新立得软件包管理器 . . . . . . . . . . . . . . . . . . . . . . . 487 目录 9 Ubuntu 桌面培训 目录 XI.II.III Apt/Aptitude/软件中心/新立德把软件给我装哪了? . . . . . 487 XI.II.IV 如何使用 DVD 做源? . . . . . . . . . . . . . . . . . . . . . . . . 了,可是,我装的软件并不多,这是怎么回事? . . . . . . . . . . 488 XI.II.VIII我安装的是 Beta/RC 版,我可以升级到正式版吗? . . . . . . 489 XI.III 系统管理和个性化配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 XI.III.I Root0 码力 | 540 页 | 26.26 MB | 1 年前3
 openEuler 22.03 LTS SP2 技术白皮书技术白皮书 openEuler 22.03 LTS SP2 目 录 CONTENTS 附录 45 特性增强 20 商标 44 云化基座 17 著作权说明 43 内核创新 12 概述 01 平台架构 04 运行环境 07 场景创新 09 01 openEuler 22.03 LTS SP2 技术白皮书 概述 概述 02 openEuler 22 日,全新 openEuler 21.09 创新版如期而至,这是 openEuler 全新发布后的第一个社区版本,实现了 全场景支持。增强服务器和云计算的特性,发布面向云原生的业务混部CPU调度算法、容器化操作系统KubeOS等关键技术; 同时发布边缘和嵌入式版本。 2022 年 3 月 30 日,基于统一的 5.10 内核,发布面向服务器、云计算、边缘计算、嵌入式的全场景 openEuler 22 长生命周 期版本采用 6.x 内核提前进行技术探索,方便开发者进行硬件适配、基础技术创新及上层应用创新。 2023 年 6 月 30 日,发布 openEuler 22.03 LTS SP2 版本,场景化竞争力特性增强,性能持续提升。 openEuler 版本管理 长生命周期版本 openEuler 20.03 LTS openEuler 22.03 LTS 创新版本 openEuler 220 码力 | 48 页 | 5.62 MB | 1 年前3 openEuler 22.03 LTS SP2 技术白皮书技术白皮书 openEuler 22.03 LTS SP2 目 录 CONTENTS 附录 45 特性增强 20 商标 44 云化基座 17 著作权说明 43 内核创新 12 概述 01 平台架构 04 运行环境 07 场景创新 09 01 openEuler 22.03 LTS SP2 技术白皮书 概述 概述 02 openEuler 22 日,全新 openEuler 21.09 创新版如期而至,这是 openEuler 全新发布后的第一个社区版本,实现了 全场景支持。增强服务器和云计算的特性,发布面向云原生的业务混部CPU调度算法、容器化操作系统KubeOS等关键技术; 同时发布边缘和嵌入式版本。 2022 年 3 月 30 日,基于统一的 5.10 内核,发布面向服务器、云计算、边缘计算、嵌入式的全场景 openEuler 22 长生命周 期版本采用 6.x 内核提前进行技术探索,方便开发者进行硬件适配、基础技术创新及上层应用创新。 2023 年 6 月 30 日,发布 openEuler 22.03 LTS SP2 版本,场景化竞争力特性增强,性能持续提升。 openEuler 版本管理 长生命周期版本 openEuler 20.03 LTS openEuler 22.03 LTS 创新版本 openEuler 220 码力 | 48 页 | 5.62 MB | 1 年前3
 Ubuntu 桌面培训 2010软件包管理器种类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 6.6 使用 Ubuntu 软件中心 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 6.7 使用新立得软件包管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.7 使用 Ubuntu 软件中心安装应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.8 Evolution 邮件客户端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.32 启动 Ubuntu 软件中心 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.33 启动新立得软件包管理器0 码力 | 524 页 | 57.54 MB | 1 年前3 Ubuntu 桌面培训 2010软件包管理器种类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 6.6 使用 Ubuntu 软件中心 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 6.7 使用新立得软件包管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.7 使用 Ubuntu 软件中心安装应用程序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.8 Evolution 邮件客户端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.32 启动 Ubuntu 软件中心 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.33 启动新立得软件包管理器0 码力 | 524 页 | 57.54 MB | 1 年前3
共 146 条
- 1
- 2
- 3
- 4
- 5
- 6
- 15














 
 