存储概述和相关名词、Ceph集群搭建

<十九>Ceph PG 相关名词解释 在接下来的章节中,我将对 PG(Placement Group,归置组)的各类状态展开详细的分析与解读。也欢迎大家和我一同学习、共同成长,在 Ceph 运维的路上一起积累经验~ 阅读详情

基础概念

集群存储:是将多台存储设备中的存储空间聚合成一个能够给应用服务器提供统一访问接口和管理界面的存储池,应用可以通过该访问接口透明地访问和利用所有存储设备上的磁盘,可以充分发挥存储设备的性能和磁盘利用率。数据将会按照一定的规则从多台存储设备上存储和读取,以获得更高的并发访问性能。

存储的类型

通过数据类型分类:

  • 块存储(常见设备如硬盘、光盘、U盘,常见技术如ISCSI)

    • 优点:

      • 可用通过 Raid、LVM 等简单技术实现高可用

      • 可独立使用

      • 简单方便

    • 缺点:

      • 不利于在多台网络设备之间进行共享

      • 不利于不同系统间的数据共享

  • 文件存储(常见设备如Samba、FTP、NFS,常见技术如Apache、Nginx)

    • 优点:

      • 构建成本资金较低

      • 可在不同主机之间共享存储

    • 缺点:

      • 读写效率低,传输效率慢

      • 文件存储数据会被分为两部分:超级块,数据块

  • 对象存储(常见设备如元数据——真实数据、真实数据,常见技术如分布式存储、云存储 CEPH、MooseFS、RHCS、ClusterFS)

    • 优点:

      • 读写效率高

      • 可在不同主机之间共享存储

      • 容器无限大:可以到 EB 级别

    • 缺点:

      • 造价昂贵

      • 技术实现难度较高

      • 对象存储则可以将数据的元数据信息单独存放到一台机器,然后将文件的真实数据内容存放到不同的机器。

通过网络拓扑分类:

  • DAS(Direct-Attached Storage 直接附加存储)

    • 等同于存储设备通过数据线、光缆、SATA 直连主机

    • 优点:

      • 技术简单;

      • 传输效率最高

    • 缺点:

      • 扩展容量有限(存储设备与主机相互绑定,不利于后期扩展与共享(服务器本身容易成为系统瓶颈));

      • 数据备份复杂

  • NAS(Network Attached Storage 网络附加存储)

    • 网络附加存储,通过网络在存储主机与使用主机之间传输数据

    • 例如:NFS、Samba等软件实现的文件共享

    • 优点

      • 技术相对简单(不需要格式化成文件系统,就可以直接使用)

      • 不要求存储设备直连本机(与 DAS 相比),只需在局域网下即可(FTP 是可以在公网中使用)

    • 缺点:

      • 存储速率较慢,容易受到网络上其他流量的影响,当网络上有其他大数据流量时会严重影响系统性能。因为搭建NAS是为了给多个人使用,这样就造成存储空间和网络宽带传输效率均会被平分。

      • 存储数据通过普通数据网络传输,容易产生数据泄密等安全问题。 存储只能以文件方式访问,而不能像普通文件系统一样直接访问物理数据块,因此会在某些情况下严重影响系统效率,比如大型数据库就不能使用NAS。

      • 不容易进行扩展。

  • SAN (Storage Area Network 存储区域网络)

    • 存储区域网络,将生产网络与存储网络进行隔离,有效增加各部效率,减轻网络设备压力,适合大并发业务。

    • 优点:

      • 存储安全性较高

      • 存储速率较高

    • 缺点:

      • 造价昂贵

DAS,NAS,SAN特性对比

DASNASSAN
传输类型SCSI、FCIPFC
数据类型块级文件级块级
典型应用任何文件服务器数据库应用
优点易于理解兼容性好易于安装成本低高扩展性高性能高可用性
缺点难以管理扩展性有限存储空间利用率不高性能较低对某些应用不适合比较昂贵配置复杂互操作性问题

如果网络拓扑和存储技术混合

——网络拓扑 + 存储技术(存储实现技术与网络存储之间的联系)

块存储 + DAS

结构描述: 块存储直连主机设备是最常见的存储方式,也是后边所有存储方式的基石。是标配,也是一般电脑和服务器使用最常见的方式。

结构拓扑

块存储 + NAS

结构描述: 将块设备通过局域网络共享至其它使用主机节点,提升空间利用率,便于后期扩展。

结构拓扑

传统方式:应用程序 → SCSI或者光纤驱动 → 主机控制器 → 光纤或者SCSI母线 → Storage存储设备。(传输的长度有限)

网络存储方式:应用程序 → SCSI驱动 → iSCSI驱动(互联网) → TCP协议 → 网卡驱动 → 网卡适配器 → IP网络 → Storage存储设备。

块存储 + SAN

结构描述: 将块设备通过局域网络共享至其它使用主机节点,提升空间利用率。并且将用户访问网络 与存储网络相隔离,利用提升存储效率以后后期维护扩展

结构拓扑

文件存储 + NAS

NFS:Network File System

结构描述: 利用共享服务将文件通过网络传输至使用设备,便于文件在多台机器之间的共享操作

结构拓扑

用的技术越简单,出现问题的几率就越小,出了问题的解决方法也比较简单。

对象存储 + SAN

MFS:MooseFS 驯鹿,RHCS:红帽集群套件,Ceph,GlusterFS。

结构描述: 利用分布式文件存储结构提升文件读写并发效率,并且将用户访问网络与存储网络相隔离, 利用提升存储效率以后后期维护扩展

结构拓扑

企业中是需要确定存储技术的选型和存储网络的选型,两者相结合。

传统存储方式核心问题总结

问题类型核心表现
存储处理能力不足硬盘 IO 性能有限(IDE 100 次 / 秒、SATA SSD 500 次 / 秒、NVMe SSD 2000-4000 次 / 秒),无法承载高峰期数十万级以上访问,且受主机网络 IO 限制
存储空间能力不足单块磁盘容量提升有限,无法满足用户访问所需的数据容量需求
单点问题(SPOF)单主机存储存在单点故障风险,一旦主机故障,数据无法访问

主流对象存储解决方案对比

对比维度CephGlusterFSTFS(Tencent File System)MinIO
技术架构分布式对象存储,采用 CRUSH 算法;含监视器、OSD、元数据服务器分布式文件系统,基于卷架构;含管理节点 + 多个独立存储节点分布式文件系统,采用多副本、数据条带化、智能分片算法轻量级对象存储,兼容 S3 协议
性能高性能性能相对较弱(节点间通信开销大)高性能适用于大容量非结构化数据存储
可用性高可用性,支持自动化数据恢复数据一致性和冗余机制简单,存在数据丢失 / 损坏风险高可用性稳定性较好,轻量易部署
可扩展性高扩展性扩展性一般高扩展性支持灵活扩展
核心特点支持对象、块、文件多接口;集中式管理易于部署和管理适配大规模云存储、大数据分析;提供丰富 API 和工具开源(Apache License V2.0);默认不计算 MD5;支持 Windows;含 Web 管理界面
适用场景对性能、可用性、扩展性有高要求的场景需简单分布式文件系统,对性能要求不高的场景大规模云存储、大数据分析场景存储图片 / 视频 / 日志等非结构化数据;需兼容 S3 协议的场景

Ceph集群搭建

  • cephadm:

    • Docker+Python3+LVM2+时间同步

  • 192.168.221.21 server-21

  • 192.168.221.22 server-22

  • 192.168.221.23 server-23

Ubuntu22.04LTS基于cephadm快速部署Ceph Reef(18.2.X)集群

 ### 基础配置
 Python 3
 Systemd
 Podman or Docker for running containers   使用Podman或Docker运行容器
 Time synchronization (such as Chrony or the legacy ntpd)  时间同步
(例如Chrony或传统的ntpd)
 LVM2 for provisioning storage devices  使用LVM2为存储设备进行资源分配
 

 # 每台虚拟机要扩容一块磁盘(可以是120G)
 # 提前安装好Python3和LVM2(Ubuntu自带,不用安装)
 apt install python3 lvm2 -y
 # 设置时区
 timedatectl set-timezone Asia/Shanghai
 ll /etc/localtime
 # 安装docker环境
 # 添加hosts文件解析(第一台)
 cat >> /etc/hosts <<EOF
 192.168.221.21 server-21
 192.168.221.22 server-22
 192.168.221.23 server-23
 EOF
 ​

 ### 启动Ceph新集群
 # 下载需要安装ceph版本的cephadm
 CEPH_RELEASE=18.2.4
 curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm
 # 将cephadm添加到PATH环境变量
 mv cephadm /usr/local/bin/
 chmod +x /usr/local/bin/cephadm
 ls -l /usr/local/bin/cephadm
 出现-rwxr-xr-x 1 root root 215316 Oct 22 09:48 /usr/local/bin/cephadm
 # 创建新集群
 cephadm bootstrap --mon-ip 192.168.221.21 --cluster-network 192.168.221.0/24 --allow-fqdn-hostname
 -----------------------------------------------------------------
 会出现Creating directory /etc/ceph for ceph.conf
 ......
 Pulling container image quay.io/ceph/ceph:v18...
 Ceph version: ceph version 18.2.7 (6b0e988052ec84cf2d4a54ff9bbbc5e720b621ad) reef (stable)
 ......
          URL: https://ceph21:8443/
         User: admin
     Password: 6sqyn7e98w
 ......
 -----------------------------------------------------------------
 温馨提示:
     - 1.此步骤会去官方下载镜像,我们可以将惊喜手动导入;
         https://docs.ceph.com/en/latest/install/containers/#containers
     - 2.注意观察输出信息,记录dashboard账号信息


 ###进入网页之后加入集群(在主节点操作)
 # 1.安装ceph命令
 apt install ceph-common
 # 2.查看现有的集群主机列表
 root@server-21:~#  ceph orch host ls
 HOST       ADDR            LABELS  STATUS  
 server-21  192.168.221.21  _admin          
 1 hosts in cluster
 # 3.把秘钥放到其他服务器上
 ssh-copy-id -f -i /etc/ceph/ceph.pub ceph22
 ssh-copy-id -f -i /etc/ceph/ceph.pub ceph23
 # 4.将秘钥节点加入到集群
 ceph orch host add server-22 192.168.221.22
 ceph orch host add server-23 192.168.221.23
 # 扩展:移除主机
 ceph orch host rm ceph23 Removed  host 'ceph23'
 # 5.再次查看集群的主机列表
 root@server-21:~# ceph orch host ls
 HOST       ADDR            LABELS  STATUS  
 server-21  192.168.221.21  _admin          
 server-22  192.168.221.22                  
 server-23  192.168.221.23                  
 3 hosts in cluster


 ### 添加OSD设备到ceph集群
 # 1.添加OSD之前环境查看
 # 1.1 查看集群可用的设备【每个设备想要加入到集群,则其大小不得小于5GB】
 root@server-21:~# ceph orch device ls
 HOST       PATH      TYPE  DEVICE ID                                             SIZE  AVAILABLE  REFRESHED  REJECT REASONS                      
 server-21  /dev/sr0  hdd   VMware_Virtual_SATA_CDRW_Drive_01000000000000000001  1023M  No         23m ago    Failed to determine if device is BlueStore, Insufficient space (<5GB)  
 server-22  /dev/sr0  hdd   VMware_Virtual_SATA_CDRW_Drive_01000000000000000001  1023M  No         23m ago    Failed to determine if device is BlueStore, Insufficient space (<5GB)  
 server-23  /dev/sr0  hdd   VMware_Virtual_SATA_CDRW_Drive_01000000000000000001  1023M  No         20m ago    Failed to determine if device is BlueStore, Insufficient space (<5GB)  
 # 1.2 查看各节点的空闲设备信息
 三台节点分别输入lsblk查看
 lsblk
 # 1.3 查看OSD列表
 root@server-21:~# ceph osd tree
 ID  CLASS  WEIGHT  TYPE NAME     STATUS  REWEIGHT  PRI-AFF
 -1              0  root default  
 # 2.添加OSD设备到集群
 # 2.1 添加server-21节点的设备到ceph集群(我没有sdc就不写这步了,具体要看lsblk里哪块磁盘是空的,根据实际写)
 root@server-21:~# ceph orch daemon add osd server-21:/dev/sdb
 Created osd(s) 0 on host 'server-21'
 root@server-21:~# ceph orch daemon add osd server-22:/dev/sdb
 Created osd(s) 1 on host 'server-22'
 root@server-21:~# ceph orch daemon add osd server-23:/dev/sda
 Created osd(s) 2 on host 'server-23'
 # 备注:此步骤会在"/var/lib/ceph/<Ceph_Cluster_ID>/osd.<OSD_ID>/fsid"文件中记录对应ceph的OSD编号对应本地的磁盘设备标识。
 # 2.2 查看集群的osd总容量大小
 ceph osd tree
 # 2.3 查看集群的大小
 ceph -s
   cluster:
     id:     64563ad0-aee9-11f0-a8e0-a9683990e32e
     health: HEALTH_WARN
             clock skew detected on mon.server-22, mon.server-23
 
   services:
     mon: 3 daemons, quorum server-21,server-22,server-23 (age 31m)
     mgr: server-21.uqqqlc(active, since 30m), standbys: server-22.dfvomb
     osd: 3 osds: 3 up (since 2m), 3 in (since 2m)
 
   data:
     pools:   1 pools, 1 pgs
     objects: 2 objects, 449 KiB
     usage:   81 MiB used, 60 GiB / 60 GiB avail(说明集群大小总共60G)
     pgs:     1 active+clean



 ### 测试集群的可用性(只在主节点操作)
 # 1.创建存储池
 ceph osd pool create MyPool
 ----------------------中间没懂,先不做---------------------------
 # 创建RGW用户(获取访问密钥)
 radosgw-admin user create --uid="myuser" --display-name="My User"
 {
     "user": "myuser",
     "access_key": "EQDWEBG5XM32IQVBPGD2",
     "secret_key": "FoCEAuwtTYMSjOZvH8kykUrihc8YfNEMnqALdVJn"
 }
 # 安装并配置s3cmd,用于操作对象存储
 apt install s3cmd -y
 # 在Ceph集群中执行命令部署RGW服务
 ceph orch apply rgw myrgw --placement="server-21,server-22,server-23"
 # 查看RGW服务的部署状态,待状态为running即表示部署成功
 ceph orch ps --service_name rgw.myrgw
 # 也可以简化为
 ceph orch ps
 # 待RGW服务启动后,创建一个RGW存储桶(关联你的存储池MyPool)
 radosgw-admin bucket create --bucket=MyPool --pool=MyPool
 s3cmd --configure
 ---------------------------------------------------------------
 # 2.往存储池上传文件
 rados -p MyPool put sys.txt /etc/os-release
 # 3.查看存储池上传的文件
 rados -p MyPool ls
 # 4.查看存储池文件的状态信息
 rados -p MyPool stat sys.txt
 p1/sys.txt mtime 2024-08-25T09:49:58.000000+0800, size 386
 # 5.查看PG的副本在哪些OSD上
 ceph osd map MyPool sys.txt  
 # 不难发现,pg到三个副本分别在0,2,1
 osdmap e43 pool 'MyPool' (3) object 'sys.txt' -> pg 3.486f5322 (3.2) -> up ([0,2,1], p0) acting ([0,2,1], p0)
 # 6.存储池文件下载到本地
 [root@ceph141 ~]# rados -p MyPool get sys.txt a.txt
 [root@ceph141 ~]# ls
 a.txt
 [root@ceph141 ~]# cat a.txt
 PRETTY_NAME="Ubuntu 22.04.4 LTS"
 NAME="Ubuntu"
 VERSION_ID="22.04"
 VERSION="22.04.4 LTS (Jammy Jellyfish)"
 VERSION_CODENAME=jammy
 ID=ubuntu
 ID_LIKE=debian
 HOME_URL="https://www.ubuntu.com/"
 SUPPORT_URL="https://help.ubuntu.com/"
 BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
 PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
 UBUNTU_CODENAME=jammy
 ----------------------后面是删除的,也不做------------------------
 # 7.删除文件
 [root@ceph141 ~]# rados -p MyPool rm sys.txt
 [root@ceph141 ~]# rados -p MyPool ls
 [root@ceph141 ~]# ceph osd map MyPool sys.txt  
 # 删除文件后不难发现映射信息还在,那如何删除这些映射信息呢?那就等待。
 osdmap e43 pool 'MyPool' (3) object 'sys.txt' -> pg 3.486f5322 (3.2) -> up ([0,2,1], p0) acting ([0,2,1], p0)
 
 ## 补充:删除池
 # 临时开启删除池的权限(默认禁止)
 ceph tell mon.* injectargs --mon-allow-pool-delete=true
 # 执行删除命令
 ceph osd pool delete MyPool MyPool --yes-i-really-really-mean-it
 # 恢复删除限制(可选,增强安全性)
 ceph tell mon.* injectargs --mon-allow-pool-delete=false
Ceph分布式存储 一、Ceph概述: 概述:Ceph是根据加州大学Santa Cruz分校的Sage Weil的博士论文所设计开发的新一代自由软件分布式文件系统,其设计目标是良好的可扩展性(PB级别以上)、高性能、高可靠性。Ceph其命名和UCSC(Ceph 的诞生地)的吉祥物有关,这个吉祥物是“Sammy”,一个香蕉色的蛞蝓,就是头足类中无壳的软体动物。这些有多触角的头足类动物,是对一个分布式文件系统高度并行的... 阅读详情

相关推荐

Ceph学习——Librbd块存储库与RBD读写流程源码分析

Librbd 包含了rbd的相关操作,并发送给ImageRequestWQ类处理(队列),而后该类将其中的的请求发送给ImageRequest处理,ImageRequest将Image进行**分片(将一个 块 分解成 对象 进行处理,Ceph的底层本质还是对象存储)** 等操作后,将各个对象调用ObjectRequest类进行处理 ,每个ObjectRequest请求分别处理。

SEU_PAN的博客 1万+

Ceph 存储集群 - 搭建存储集群

Ceph 存储集群 - 搭建存储集群

虫虫的博客 615

Ceph对象存储详解

而对象存储则将元数据独立出来了,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息)而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。之所以出现对象存储这种东西,是为了克服块存储与文件存储各自的缺点,发扬各自的优点。(2)对象存储的成本比起普通的文件存储还要较高,需要购买专门的对象存储软件以及大容量硬盘,如果对数据量要求不是海量,只是为了做文件共享的时候,直接用文件存储就好了,性价比高。

悦分享 361

6.搭建共享存储集群

DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,联机日志和归档日志都需要保存在共享存储上。达梦数据库的共享存储集群部署过程中相对复杂,大家最好先进行规划再进行部署。

aboy12580520的博客 1492

部署Ceph分布式存储集群

一、Ceph概述; 二、基本架构; 三、架构组件详解; 四、Ceph数据存储过程; 五、Ceph的优势; 六、案例:部署Ceph分布式存储集群;

5分钟搞定!用MCU GPIO实现零功耗一键开关机电路(附完整原理图)

本文详细介绍了如何利用MCU GPIO设计零功耗一键开关机电路,适用于便携式设备和电池供电项目。通过软硬件结合的方式,实现关机状态下的真正零功耗,同时提供智能开关机控制。文章包含完整原理图、元件选型指南和实际搭建技巧,帮助开发者在5分钟内完成高效电源管理方案。

weixin_28339967的博客 341

DM共享存储集群搭建

文章目录前言一、配置共享磁盘二、搭建集群1.安装前准备2.存储准备3.搭建DSC4.配置监视器5.启停服务总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、配置共享磁盘 创建新磁盘 选择刚刚添加的磁盘,然后点击高级选项,为磁盘添加虚拟设备节点 创建共享磁盘 选择刚刚添加的磁盘,然后点击高级选项,为磁盘添加虚

qq_44236935的博客 1078

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月12日-生产期间维护用的双重隔离

生产期间维护用的双重隔离。该程序用于准备将一个或多个双工位设置为维护状态,同时SABRE 3D/3DxT/3D Scimitar保持生产运行。其目的是在不中断生产的情况下将双工位与运行中的设备隔离。

weixin_46735260的博客 574

Hadoop海量数据存储与计算高可用集群部署(全网最详细,初学者照着也能搭建)

全网最详细教你一文学会搭建Hadoop高可用集群

喜欢水星记的博客 1919

THUCNews新闻文本分类-tfidf+sklearn

本文使用的是和鲸社区现有数据集,代码也在和鲸社区公开,fork之后可以直接运行。 本文中所用的数据集清华NLP组提供的THUCNews新闻文本分类数据集的一个子集(原始的数据集大约74万篇文档,训练起来需要花较长的时间)。 本次训练使用了其中的体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏, 娱乐10个分类,每个分类6500条,总共65000条新闻数据。项目在和鲸社区的平台上跑的,数据集直接引用了和鲸的数据集,每个分类6500条,总共65000条新闻数据。 数据集划分如下: cnews

wmq104的博客 4590

YOLOv11改进 - 卷积Conv | PConv(Pinwheel-shaped Conv): 风车状卷积用于红外小目标检测 | AAAI 2025

本文介绍了风车状卷积(PConv)和基于尺度的动态(SD)损失在YOLOv11中的结合应用。PConv采用不对称填充,通过特殊结构设计、卷积运算和分组卷积技术,能更好地适应红外小目标的像素高斯空间分布,在少量增加参数的情况下极大扩展感受野。SD损失可根据目标大小动态调整尺度和位置损失的影响。我们将PConv集成到YOLOv11的主干网络低层,并在相关配置文件中进行设置。实验证明,YOLOv11 - PConv在IRSTD - 1K和SIRST - UAVB数据集上取得显著性能提升,验证了方法的有效性和泛化能

魔改工程师的博客 1334

Ceph Ceph概述 块存储 存储池 rbd镜像管理 Ceph客户端

存储概念解析分布式存储概念是一种独特的系统架构由一组能够通过网络连接 为了完成共同任务而协调任务的计算机节点组成分布式是为了使用廉价的普通的计算机完成复杂的计算和存储任务目的就是利用更多的机器处理更多的数据或任务特性可扩展:分布式存储系统可以扩展到几百甚至几千台的集群规模而且随着集群规模的增长 系统整体性能表现为线性增长低...

jiaworld的博客 1353

LLC变压器,常见的4大问题解决方案

其中之一是当付边的绕组的匝数或层数较多的时候,层间或匝间寄生电容和付边的漏感发生一个寄生的振荡,轻载的时候,这个振铃的幅度会达到很高,导致输出电压比设计的要高许多。但当输入是低压的时候,开关频率比较低,LLC谐振回路的增益较大,因而比较容易发生变压器饱和的问题。由于LLC变压器工作在LC谐振状态,LC谐振回路有个特点就是Q值问题,在这里Q值是大于1的,因而就会有实际加在变压器上的电压要比输入电压高的问题,因而在设计变压器的时候就必须考虑到这一点,否则变压器就不是工作在你设计的磁感应强度上。

1260

Ceph概述及ceph部署.

root@ceph1 ~]# ./cephadm bootstrap --mon-ip 192.168.88.11 --initial-dashboard-password=123456 --dashboard-password-noupdate #指定初始化节点IP地址,指定dashboard面板密码,不更新dashboard面板密码。[root@pubserver ~]# date -s "年-月-日 时:分:秒" #如果日期时间不对则修改。

weixin_52384778的博客 737

OpenOCD入门到精通:第20章 Target 子系统源码分析

摘要:本章深入分析OpenOCD Target子系统的核心实现机制。重点包括:1) 通过target_type虚函数表实现多架构抽象,支持ARM、RISC-V等30+种目标;2) ARM ADIv5协议栈实现,包含DAP/AP核心数据结构和访问机制;3) 分层架构设计,从调试接口层到传输层的完整调用链路。系统采用面向对象思想,统一管理目标状态、寄存器缓存、断点/观察点等调试要素,为上层提供标准化的调试操作接口。

从事嵌入式linux android驱动开发,拥有全栈能力 177

图文:银行核心账务处理逻辑(白话篇)

银行账务系统分为对内账(记录银行自身资产负债)和对外账(处理客户交易),通过特定编码规则的账号体系进行管理。采用T型账户结构和凭证制度确保每笔交易可追溯,通过明细核算与综合核算双线并行、每日轧账核对(科目日结单、总账、日计表)实现账务精准平衡。从业务触发到最终账平的全流程体现了银行账务"分层记录、双向核对、闭环校验"的核心原则,保障资金流动的透明性与安全性。

银行信息系统应用架构详解 539

CEPH概述及实验(CEPH部署及群集搭建+节点扩容+数据恢复)

前言:CEPH是一个开源的项目,它是软件定义的、同一的存储解决方案。CEPH是一个可大规模扩展、高性能并且无单点故障的分布式存储系统。从一开始它就运行在通用的商用的硬件上,具有高度的可伸缩性,容量可扩展至EB界别,甚至更大 文章目录一、概述1.简述1)相关名词解释2. CEPH基础架构3. CEPH基础组件4. Ceph Clients5.CEPH存储过程二、实验1.环境介绍2.环境部署1)主机名...

weixin_45724795的博客 1013

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

3-分布式存储之Ceph

虽然使用了分布式的glusterfs存储, 但是对于爆炸式的数据增长仍然感觉力不从心。对于大数据与云计算等技术的成熟, 存储也需要跟上步伐. 所以这次我们选用。

qq_57747969的博客 891

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ceph块存储在线扩容

记录:339 场景:在CentOS 7.9操作系统上,部署ceph-13.2.10集群。应用ceph块设备(ceph block device);主要是创建ceph块存储和在线扩容相关操作。

zhangbeizhen18的博客 1418

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

分布式存储Ceph技术

分布式存储介绍;分布式存储的应用场景;分布式存储的原理,安装以及应用。分布式存储Ceph的特点,Ceph的核心组件,Ceph存储的原理和企业级应用项目。

qq_45793577的博客 404

Linux中lvm和ceph区别,Ceph概念介绍及组件介绍

一:Ceph基础介绍Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在...

weixin_33315608的博客 1268

【ceph分布式存储】集群搭建,原生数据存取演示

什么是Ceph?搭建Ceph集群有哪些步骤?搭建Ceph集群容易出现哪些问题?该如何解决?Ceph集群如何扩容与缩容?Ceph集群核心组件有哪些?osd down如何解决?

m0_71837291的博客 281

ceph架构

文章目录一、架构图二、相关名词解释三、三种存储类型块存储文件存储对象存储四、Ceph IO流程及数据分布正常IO流程图步骤:异常io流程图步骤:五、Ceph IO算法流程Ceph IO伪代码流程六、Ceph RBD IO流程Ceph RBD IO框架图七、Ceph Pool和PG分布情况八、Ceph心跳机制1 心跳介绍2 Ceph 心跳检测3 Ceph OSD之间相互心跳检测4 Ceph OSD与...

qq_23929673的博客 1340

CEPH集群安装、扩容、OSD故障恢复

CEPH是一个开源的项目,它是软件定义的、同一的存储解决方案。CEPH是一个可大规模扩展、高性能并且无单点故障的分布式存储系统。从一开始它就运行在通用的商用的硬件上,具有高度的可伸缩性,容量可扩展至EB界别,甚至更大 CEPH架构 1、相关名词解释 RADOS:Reliable Autonomic Distributed Object Store(可靠的,自主的,分布式的对象存储)。在 ceph 中这个名词经常出现,有时会以 R 表示 RADOS。实际上这个词仅仅是对 ceph 的一个修饰词,并不代表

sqlora的专栏 1819
上一篇: Docker Compose、私有镜像站和Swam集群
下一篇: Ceph常用的三种存储操作
chen_note
博客等级 码龄1年 251粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值