[Ceph 14.2.22] 使用Ceph原生命令部署单机集群

1. 前言

上表中是 Ceph 官方文档给出的 Ceph 14 系列的系统和内核推荐,其中在centos 7、ubuntu 14.04、ubuntu 16.04、ubuntu 18.04上都做了完整的测试。本文将介绍如何在ubuntu 18.04中使用 ceph 原生命令部署一个完整的 ceph 集群,ceph 版本为14.2.22

2. 准备

2.1. 集群规划

component name component type node ip node name ---------------------------------------------------------------------- [mon.a, mon.b, mon.c] mon 192.168.3.10 node0 [mgr.a, mgr.b, mgr.c] mgr 192.168.3.10 node0 [mds.a, mds.b, mds.c] mds 192.168.3.10 node0 [rgw.a, rgw.b, rgw.c] rgw 192.168.3.10 node0 [osd.0, osd.1, osd.2] osd 192.168.3.10 node0

2.2. 设置 ceph apt 源

为了加快下载速度,此处使用阿里云开源镜像站:

echo"deb https://mirrors.aliyun.com/ceph/debian-nautilus/ bionic main">/etc/apt/sources.list.d/ceph.list

2.3. 添加 release key

wget-q -O-'https://mirrors.aliyun.com/ceph/keys/release.asc'|apt-keyadd-

2.4. 更新

aptupdate

2.5. 安装 ceph

aptinstallceph ceph-mon ceph-mgr ceph-osd ceph-mds radosgw

3. 集群部署

3.1. 创建 client.admin key

在 Ceph 的 cephx 认证体系中,client.admin 是一个预定义的特殊用户,拥有对整个集群的完全访问权限,它可以执行几乎所有管理操作。没有 client.admin,你就没有一个默认的“root”账户来管理集群。换句话说,client.admin 是部署和运维的操作入口。

几乎所有 Ceph 命令行工具(如 ceph, rados, rbd, cephfs 等)在未指定用户时,默认尝试加载 client.admin 的密钥。ceph 14.2.22 中不会自动创建 client.admin key,必须手动创建。测试发现 client.admin key 必须在初始化 mon 之前就创建好,否则后续不好导入到 mon 的 auth 库中,导致 ceph 所有命令都无法使用。

ceph-authtool /etc/ceph/keyring --create-keyring --gen-key -n client.admin\--cap mon'allow *'\--cap osd'allow *'\--cap mds'allow *'\--cap mgr'allow *'

除了 client.admin key 外,ceph 14.2.22 中会自动创建以下 bootstrap 系列的 key:

client.bootstrap-mds key: AQD7BW9p5/zTBRAApwYsv603jzAqC2HVZRulgw==caps:[mon]allow profile bootstrap-mds client.bootstrap-mgr key: AQD7BW9pyyPUBRAAD+InmsW8kdJD7RaO9P64Fg==caps:[mon]allow profile bootstrap-mgr client.bootstrap-osd key:AQD7BW9prkfUBRAAOQDCSLcQJv7KyuE7Shzscw==caps:[mon]allow profile bootstrap-osd client.bootstrap-rbd key: AQD7BW9pHm/UBRAACRWOnAmiy2l64lIWDGIwgA==caps:[mon]allow profile bootstrap-rbd client.bootstrap-rbd-mirror key:AQD7BW9po5LUBRAAQSyL0ES1DRxW9X0QdknyDQ==caps:[mon]allow profile bootstrap-rbd-mirror client.bootstrap-rgw key: AQD7BW9pE7XUBRAAmG9hElRA2jb1ChRZ/gVkNQ==caps:[mon]allow profile bootstrap-rgw

3.2. 创建 mon

在部署集群时,必须先部署 mon,mon 是 Ceph 集群的大脑,责维护集群的全局状态信息,负责分发其他组件的通信密钥。所有其他组件在启动和加入集群时,必须与 mon 建立通信。只有 mon 就绪并形成 quorum 后,其他组件服务才能正确加入并协同工作。因此,在部署时必须优先创建 mon。

3.2.1. 创建 mon data

mkdir-p /var/lib/ceph/mon/mon.amkdir-p /var/lib/ceph/mon/mon.bmkdir-p /var/lib/ceph/mon/mon.c

3.2.2. 创建 mon key

Ceph 通信机制中使用基于密钥的身份验证机制,mon 之间的通信也是如此。mon key 是整个集群信任体系的起点。如果没有预先生成 mon key,mon 将无法完成认证,也就无法形成初始 quorum,导致集群无法启动。虽然 Ceph 其他组件的密钥通常是由 mon 动态分发,但是 mon 自己的密钥不能从自己获取,必须在启动前静态生成。

ceph-authtool /etc/ceph/keyring --gen-key -n mon. --cap mon'allow *'

因为我将所有的 key 全部写入到同一个文件中:/etc/ceph/keyring,所以只在第一次创建 client.admin key 的时候,才使用--create-keyring参数,这个参数会新建一个 keyring 文件,不管这个文件之前有没有。所以在创建 mon key 的时候,就不再使用--create-keyring参数。后续创建其他组件 key 的过程也同样不在使用--create-keyring参数。

测试发现,在创建 mon key 的时候,mon name 必须是mon.,不能是具体的mon.a这种形式,也不能单独为每个 mon 创建 key。

3.2.3. 创建 monmap

monmaptool --create --clobber --fsid`uuidgen`/etc/ceph/monmap monmaptool --add a192.168.3.10:50000 /etc/ceph/monmap monmaptool --add b192.168.3.10:50001 /etc/ceph/monmap monmaptool --add c192.168.3.10:50002 /etc/ceph/monmap

monmap 创建好之后,可以使用monmaptool --print /etc/ceph/monmap命令来输出 monmap 内容。内容如下:

monmaptool: monmapfile/etc/ceph/monmap epoch0fsid 334c5c34-8214-477f-95ba-00991d868126 last_changed2026-01-17 06:57:21.606165 created2026-01-17 06:57:21.606165 min_mon_release0(unknown)0: v2:192.168.3.10:50000/0 mon.a1: v2:192.168.3.10:50001/0 mon.b2: v2:192.168.3.10:50002/0 mon.c

3.2.4. 配置 ceph.conf

新建/etc/ceph/ceph.conf,并追加一下内容:

[global] fsid = 334c5c34-8214-477f-95ba-00991d868126 mon host = [v2:192.168.3.10:50000] [v2:192.168.3.10:50001] [v2:192.168.3.10:50002] auth cluster required = cephx auth service required = cephx auth client required = cephx auth allow insecure global id reclaim = false [mon.a] mon data = /var/lib/ceph/mon/mon.a [mon.b] mon data = /var/lib/ceph/mon/mon.b [mon.c] mon data = /var/lib/ceph/mon/mon.c
  • 上述global配置中mon host的值必须和monmaptool --add中匹配。
  • 上述mon data是 mon data 目录,这个参数必须要添加,因为在后面初始化 mon data 的时候,如果不指定 mon data 路径,默认会使用/var/lib/ceph/mon/<cluster>-<id>

3.2.5. 初始化 mon data

ceph-mon --mkfs -i a --monmap=/etc/ceph/monmap --keyring=/etc/ceph/keyring ceph-mon --mkfs -i b --monmap=/etc/ceph/monmap --keyring=/etc/ceph/keyring ceph-mon --mkfs -i c --monmap=/etc/ceph/monmap --keyring=/etc/ceph/keyring

3.2.6. 修改 mon data 归属

chown-R ceph:ceph /var/lib/ceph/mon

3.2.7. 启动 mon

systemctl start ceph-mon@a.service systemctlenableceph-mon@a.service systemctl start ceph-mon@b.service systemctlenableceph-mon@b.service systemctl start ceph-mon@c.service systemctlenableceph-mon@c.service

至此,如果 mon 正常启动,ceph -s命令可以正常执行并有结果输出。

ceph -s --------- cluster: id: 334c5c34-8214-477f-95ba-00991d868126 health: HEALTH_OK services: mon:3daemons, quorum a,b,c(age 2s)mgr: no daemons active osd:0osds:0up,0indata: pools:0pools,0pgs objects:0objects,0B usage:0B used,0B /0B avail pgs:

如果ceph -s命令没有输出结果或者卡住了,一定是部署失败了。可以在 ceph.conf 文件中global配置项添加debug ms = 1打开客户端调试功能查看问题。

3.3. 创建 mgr

3.3.1. 创建 mgr data

mkdir-p /var/lib/ceph/mgr/mgr.amkdir-p /var/lib/ceph/mgr/mgr.bmkdir-p /var/lib/ceph/mgr/mgr.c

3.3.2. 配置 ceph.conf

[mgr.a] mgr data =/var/lib/ceph/mgr/mgr.a [mgr.b] mgr data = /var/lib/ceph/mgr/mgr.b [mgr.c] mgr data = /var/lib/ceph/mgr/mgr.c

3.3.3. 创建 mgr key

ceph-authtool /etc/ceph/keyring --gen-key -n mgr.a\--cap mon'allow profile mgr'\--cap mds'allow *'\--cap osd'allow *'ceph-authtool /etc/ceph/keyring --gen-key -n mgr.b\--cap mon'allow profile mgr'\--cap mds'allow *'\--cap osd'allow *'ceph-authtool /etc/ceph/keyring --gen-key -n mgr.c\--cap mon'allow profile mgr'\--cap mds'allow *'\--cap osd'allow *'

3.3.4. 导入 mgr key 到 auth 库中

ceph authaddmgr.a -i /etc/ceph/keyring ceph authaddmgr.b -i /etc/ceph/keyring ceph authaddmgr.c -i /etc/ceph/keyring

导入 key 到 auth 库中的目的是为了执行ceph auth ls命令能够直接查看到。测试发现,在使用ceph-authtool工具创建 key 的时候,只有 mon 和 client 这两种类型的 key 能够自动添加到 ceph rados 对象中,其他类型的 key 需要手动导入。

3.3.5. 添加 mgr key 到 mgr data

ceph authexportmgr.a>/var/lib/ceph/mgr/mgr.a/keyring ceph authexportmgr.b>/var/lib/ceph/mgr/mgr.b/keyring ceph authexportmgr.c>/var/lib/ceph/mgr/mgr.c/keyring

3.3.6. 修改 mgr data 目录的归属

chown-R ceph:ceph /var/lib/ceph/mgr

3.3.7. 启动 mgr

systemctl start ceph-mgr@a.service systemctlenableceph-mgr@a.service systemctl start ceph-mgr@b.service systemctlenableceph-mgr@b.service systemctl start ceph-mgr@c.service systemctlenableceph-mgr@c.service

3.4. 创建 osd

Ceph 支持 2 种存储引擎:filestorebluestore。filestore 是一个过时的技术,在后续版本中逐渐被 Ceph 弃用,filestore 已经没有任何研究价值,因此本文默认以bluestore为准。

3.4.1. 创建 osd data

mkdir-p /var/lib/ceph/osd/osd.0mkdir-p /var/lib/ceph/osd/osd.1mkdir-p /var/lib/ceph/osd/osd.2

3.4.2. 挂载 osd data 为 tmpfs

mount-t tmpfs tmpfs /var/lib/ceph/osd/osd.0mount-t tmpfs tmpfs /var/lib/ceph/osd/osd.1mount-t tmpfs tmpfs /var/lib/ceph/osd/osd.2

3.4.3. 修改 osd block dev 归属

chown-R ceph:ceph /dev/sdbchown-R ceph:ceph /dev/sdcchown-R ceph:ceph /dev/sdd

3.4.4. 创建 osd block

ln-snf /dev/sdb /var/lib/ceph/osd/osd.0/blockln-snf /dev/sdc /var/lib/ceph/osd/osd.1/blockln-snf /dev/sdd /var/lib/ceph/osd/osd.2/block

3.4.5. 配置 osd

[osd.0] osd objectstore = bluestore osd data = /var/lib/ceph/osd/osd.0 crush_location = root=default host=virtual-node0 [osd.1] osd objectstore = bluestore osd data = /var/lib/ceph/osd/osd.1 crush_location = root=default host=virtual-node1 [osd.2] osd objectstore = bluestore osd data = /var/lib/ceph/osd/osd.2 crush_location = root=default host=virtual-node2

crush_location是更改 osd 的 crush 位置,ceph 默认最小容灾域级别是host,因为当前是在一台物理机上部署的,为了后续成功创建副本 pool,此时有必要更改。当然也可以在创建 pool 之前新建一个 crush rule 来自定义 crush 规则。

3.4.6. 创建 osd key

ceph-authtool /etc/ceph/keyring --gen-key -n osd.0\--cap mon'allow profile osd'\--cap mgr'allow profile osd'\--cap osd'allow *'ceph-authtool /etc/ceph/keyring --gen-key -n osd.1\--cap mon'allow profile osd'\--cap mgr'allow profile osd'\--cap osd'allow *'ceph-authtool /etc/ceph/keyring --gen-key -n osd.2\--cap mon'allow profile osd'\--cap mgr'allow profile osd'\--cap osd'allow *'

3.4.7. 导入 osd key 到 auth 库中

ceph authaddosd.0 -i /etc/ceph/keyring ceph authaddosd.1 -i /etc/ceph/keyring ceph authaddosd.2 -i /etc/ceph/keyring

3.4.8. 添加 osd key 到 osd data

ceph authexportosd.0>/var/lib/ceph/osd/osd.0/keyring ceph authexportosd.1>/var/lib/ceph/osd/osd.1/keyring ceph authexportosd.2>/var/lib/ceph/osd/osd.2/keyring

3.4.9. 添加 osd key json 到 osd data

echo"{\"cephx_secret\":\"`ceph auth get-key osd.0`\"}">/var/lib/ceph/osd/osd.0/keyring.jsonecho"{\"cephx_secret\":\"`ceph auth get-key osd.1`\"}">/var/lib/ceph/osd/osd.1/keyring.jsonecho"{\"cephx_secret\":\"`ceph auth get-key osd.2`\"}">/var/lib/ceph/osd/osd.2/keyring.json

3.4.10. 创建 osd 并初始化 osd data

uuid=`uuidgen`ceph osd new$uuid0-i /var/lib/ceph/osd/osd.0/keyring.json ceph-osd -i0--mkfs --osd-uuid$uuid--keyring /var/lib/ceph/osd/osd.0/keyringuuid=`uuidgen`ceph osd new$uuid1-i /var/lib/ceph/osd/osd.1/keyring.json ceph-osd -i1--mkfs --osd-uuid$uuid--keyring /var/lib/ceph/osd/osd.1/keyringuuid=`uuidgen`ceph osd new$uuid2-i /var/lib/ceph/osd/osd.2/keyring.json ceph-osd -i2--mkfs --osd-uuid$uuid--keyring /var/lib/ceph/osd/osd.2/keyring

3.4.11. 修改 osd data 归属

chown-R ceph:ceph /var/lib/ceph/osd

3.4.12. 启动服务

systemctl start ceph-osd@0.service systemctlenableceph-osd@0.service systemctl start ceph-osd@1.service systemctlenableceph-osd@1.service systemctl start ceph-osd@2.service systemctlenableceph-osd@2.service

上述使用systemctl start ceph-osd@0.service方式启动 osd 服务时会失败,原因是/usr/lib/systemd/system/ceph-osd@.service文件会先执行/usr/lib/ceph/ceph-osd-prestart.sh脚本,在这个脚本中需要将data="/var/lib/ceph/osd/${cluster:-ceph}-$id"修改成实际 osd 目录data="/var/lib/ceph/osd/osd.$id"

以上创建 OSD 的所有过程都可以使用ceph-volume create这条命令一步完成,这条命令实际上也是一步步执行上面过程,之所以不使用 ceph-volume 工具,主要原因是 osd data 目录没法自定义。ceph-volume 已经将 osd data 目录写死成/var/lib/ceph/osd/${cluster:-ceph}-$id

到此,一个简单的 Ceph 集群已经部署完成,使用ceph -s查看集群状态如下:

ceph -s --------- cluster: id: 334c5c34-8214-477f-95ba-00991d868126 health: HEALTH_OK services: mon:3daemons, quorum a,b,c(age 30m)mgr: a(active, since 24m), standbys: b, c osd:3osds:3up(since 9m),3in(since 9m)data: pools:0pools,0pgs objects:0objects,0B usage:3.0GiB used,12GiB /15GiB avail pgs:

4. 文件存储部署

4.1. 创建 mds

4.1.1. 创建 mds data

mkdir-p /var/lib/ceph/mds/mds.amkdir-p /var/lib/ceph/mds/mds.bmkdir-p /var/lib/ceph/mds/mds.c

4.1.2. 配置 ceph.conf

[mds.a] mds data =/var/lib/ceph/mds/mds.a [mds.b] mds data =/var/lib/ceph/mds/mds.b [mds.c] mds data =/var/lib/ceph/mds/mds.c

4.1.3. 创建 mds key

ceph-authtool /etc/ceph/keyring --gen-key -n mds.a\--cap mon'allow profile mds'\--cap osd'allow *'\--cap mds'allow'\--cap mgr'allow profile mds'ceph-authtool /etc/ceph/keyring --gen-key -n mds.b\--cap mon'allow profile mds'\--cap osd'allow *'\--cap mds'allow'\--cap mgr'allow profile mds'ceph-authtool /etc/ceph/keyring --gen-key -n mds.c\--cap mon'allow profile mds'\--cap osd'allow *'\--cap mds'allow'\--cap mgr'allow profile mds'

4.1.4. 导入 mds key 到 auth 库中

ceph authaddmds.a -i /etc/ceph/keyring ceph authaddmds.b -i /etc/ceph/keyring ceph authaddmds.c -i /etc/ceph/keyring

4.1.5. 添加 mds key 到 mds data

ceph authexportmds.a>/var/lib/ceph/mds/mds.a/keyring ceph authexportmds.b>/var/lib/ceph/mds/mds.b/keyring ceph authexportmds.c>/var/lib/ceph/mds/mds.c/keyring

4.1.6. 修改 mds data 归属

chown-R ceph:ceph /var/lib/ceph/mds

4.1.7. 启动 mds

systemctl start ceph-mds@a.service systemctlenableceph-mds@a.service systemctl start ceph-mds@b.service systemctlenableceph-mds@b.service systemctl start ceph-mds@c.service systemctlenableceph-mds@c.service

4.2. 创建数据池

ceph osd pool create cephfs_data11

其中cephfs_data是数据池的名字,1 1分别表示 pg 和 pgp 的数量,因为是测试,所以都设置为 1。

4.3. 创建元数据池

ceph osd pool create cephfs_metadata11

其中cephfs_metadata是元数据池的名字,1 1分别表示 pg 和 pgp 的数量,因为是测试,所以都设置为 1。

4.4. 创建文件系统

ceph fs new cephfs cephfs_metadata cephfs_data

其中cephfs为文件系统的名字,该命令将会创建一个名为 cephfs 的文件系统,文件系统的元数据将存在 cephfs_metadata 元数据池中,文件系统的数据将存在 cephfs_data 数据池中。

再次查看集群状态:

ceph -s --------- cluster: id: 334c5c34-8214-477f-95ba-00991d868126 health: HEALTH_OK services: mon:3daemons, quorum a,b,c(age 105m)mgr: a(active, since 99m), standbys: b, c mds: cephfs:1{0=a=up:active}2up:standby osd:3osds:3up(since 44m),3in(since 84m)data: pools:2pools,2pgs objects:22objects,2.2KiB usage:3.0GiB used,12GiB /15GiB avail pgs:2active+clean

5. 对象存储部署

5.1. 创建 rgw

5.1.1. 创建 rgw data

mkdir-p /var/lib/ceph/rgw/rgw.amkdir-p /var/lib/ceph/rgw/rgw.bmkdir-p /var/lib/ceph/rgw/rgw.c

5.1.2. 配置 rgw

[client.rgw.a] rgw frontends = "civetweb port=192.168.3.10:50003" rgw data =/var/lib/ceph/rgw/rgw.a [client.rgw.b] rgw frontends = "civetweb port=192.168.3.10:50004" rgw data =/var/lib/ceph/rgw/rgw.b [client.rgw.c] rgw frontends = "civetweb port=192.168.3.10:50005" rgw data =/var/lib/ceph/rgw/rgw.c

上述port=192.168.3.10:50003表示只启动 tcp4 端口监听。如果设置成port=50003,表示同时启动 tcp4 和 tcp6 端口监听。

5.1.3. 创建 rgw key

ceph-authtool /etc/ceph/keyring --gen-key -n client.rgw.a\--cap mon'allow rw'\--cap osd'allow rwx'\--cap mgr'allow rw'ceph-authtool /etc/ceph/keyring --gen-key -n client.rgw.b\--cap mon'allow rw'\--cap osd'allow rwx'\--cap mgr'allow rw'ceph-authtool /etc/ceph/keyring --gen-key -n client.rgw.c\--cap mon'allow rw'\--cap osd'allow rwx'\--cap mgr'allow rw'

测试发现,rgw 的 name 必须是以client.为前缀。因为 ceph 中没有rgw这个类别,类别只有auth, mon, osd, mds, mgr, client这几种。

5.1.4. 导入 rgw key 到 auth 库中

ceph authaddclient.rgw.a -i /etc/ceph/keyring ceph authaddclient.rgw.b -i /etc/ceph/keyring ceph authaddclient.rgw.c -i /etc/ceph/keyring

5.1.5. 添加 rgw key 到 rgw data

ceph authexportclient.rgw.a>/var/lib/ceph/rgw/rgw.a/keyring ceph authexportclient.rgw.b>/var/lib/ceph/rgw/rgw.b/keyring ceph authexportclient.rgw.c>/var/lib/ceph/rgw/rgw.c/keyring

5.1.6. 修改 rgw data 归属

chown-R ceph:ceph /var/lib/ceph/rgw

5.1.7. 启动 rgw

systemctl start ceph-radosgw@rgw.a.service systemctlenableceph-radosgw@rgw.a.service systemctl start ceph-radosgw@rgw.b.service systemctlenableceph-radosgw@rgw.b.service systemctl start ceph-radosgw@rgw.c.service systemctlenableceph-radosgw@rgw.c.service

默认情况下,启动 rgw 服务后,会自动创建与 rgw 服务相关的 pool。再次查看集群状态:

ceph -s --------- cluster: id: 334c5c34-8214-477f-95ba-00991d868126 health: HEALTH_OK services: mon:3daemons, quorum a,b,c(age 106m)mgr: a(active, since 101m), standbys: b, c mds: cephfs:1{0=a=up:active}2up:standby osd:3osds:3up(since 46m),3in(since 85m)rgw:3daemons active(a, b, c)task status: data: pools:6pools,130pgs objects:135objects,3.4KiB usage:3.0GiB used,12GiB /15GiB avail pgs:130active+clean io: client:21KiB/s rd,0B/s wr,27op/s rd,17op/s wr

6. 块存储部署

6.1. 创建数据池

ceph osd pool create rbd_pool11

其中rbd_pool是数据池的名字,1 1分别是 pg 和 pgp 的数量,因为是测试集群,所以都设置为 1。

6.2. 创建 rbd image

rbd create --pool rbd_pool --image image1 --size1024--image-format2--image-feature layering

其中rbd_pool是数据池的名字,image1是镜像的名字,1024是镜像的大小,其他参数不变即可。上述命令将创建一个名为image1的 rbd 镜像。后续通过镜像映射操作就可以像操作磁盘一样来读写 rbd 块设备。

7. 参考资料

  • https://docs.ceph.com/en/nautilus/install/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1189848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Lumerical】 FDTD 仿真目录

【Lumerical】 FDTD 仿真目录 目录 Author: JiJi \textrm{Author: JiJi} Author: JiJi Created Time: 2026.01.20 \textrm{Created Time: 2026.01.20} Created Time: 2026.01.20

突破控件边界:WPF 手写图表解决鸟情监测场景痛点 - 源之缘

本文围绕鸟类生态监测可视化需求,分享了基于 WPF 自研鸟情图表的实践思路。面对高度分层时序图、方向雷达图、多日对比分析等专业需求,作者凭借多年 WPF 开发经验,放弃了灵活度不足的第三方控件,选择从零构建专属图…

RAG技术深度剖析:让大模型拥有‘实时知识‘的检索增强生成指南

RAG&#xff08;检索增强生成&#xff09;结合信息检索与文本生成&#xff0c;解决大模型知识局限、信息过时、幻觉问题及可解释性差等挑战。通过构建知识库、检索相关信息和模型生成三个步骤&#xff0c;将外部知识动态注入LLM&#xff0c;提高回答准确性和可靠性。文章详细介…

大模型和机器学习

一、引言&#xff1a;大模型的火爆与认知的混乱2022年&#xff0c;ChatGPT的横空出世让大模型技术从学术圈走向了大众视野。短短三年时间&#xff0c;大模型已经渗透到内容创作、代码编写、智能客服、企业知识库等多个领域。据《2025年全球大模型产业报告》显示&#xff0c;全球…

推荐几家海外展会营销推广平台,上海、苏州地区优质海外展会推广公司深度推荐 - 品牌2025

随着全球供应链重塑与跨境往来的持续便利,中国企业“走出去”参展办展的意愿愈发强烈,不少企业将半数预算投入海外展会,以此巩固传统市场、开拓新兴领域。中国贸促会数据显示,2023年中国贸促会审批执行的出国参展项…

【实战项目】 基于LabVIEW的大气数据处理实验管理系统设计

运行效果:https://lunwen.yeel.cn/view.php?id=5898 基于LabVIEW的大气数据处理实验管理系统设计摘要:本文针对大气数据处理领域,探讨了利用LabVIEW软件进行大气数据采集、处理和分析的实验管理系统设计。通过对La…

双非二本科生的福音:大模型RAG+Agent技术学习指南,不看学历看实力

大模型应用开发领域处于快速发展阶段&#xff0c;RAG和Agent技术需求旺盛。尽管双非二本科生在学历上不占优势&#xff0c;但行业更看重实际技术能力。企业招聘侧重Python编程、数据库、提示词优化等实操技能。该领域薪资前景诱人&#xff0c;平均月薪可达4.2万元&#xff0c;年…

查看linux服务器中某文件夹占用空间大小

du -sh /data1/zjc/RIFT_code/datasets/ 比如我想要查看&#xff1a;“/data1/zjc/RIFT_code/datasets/”这个的文件夹大小&#xff1a; 结果为5G&#xff1a;

34. C++ 11新特性(1)

1. 对象初始化方法2. auto & decltype & 返回类型后置 & 模板别名

采购降本的秘密武器!天下工厂带你跳过中间商,直接和厂长谈价

采购成本降低的秘密武器!天下工厂带领你跳过中间商&#xff0c;直接和厂长谈价格。做采购工作的朋友们&#xff0c;是不是都曾经有过这样让人崩溃的时刻?在1688上翻来覆去地比较价格&#xff0c;聊了很长时间之后才发现对接的是经销商&#xff0c;报价里面加了好几层的利润&am…

【实战项目】 基于P2P的分布式存储及其相关技术研究

运行效果:https://lunwen.yeel.cn/view.php?id=5899 基于P2P的分布式存储及其相关技术研究摘要:本文针对当前P2P网络在分布式存储领域的应用进行了深入研究。首先,介绍了P2P网络的基本原理和分布式存储的背景知识,…

北航与AgiBot突破:机器人实现动作空间内智能思考

这项由北京航空航天大学与AgiBot联合开展的研究发表于2025年1月的arXiv预印本平台&#xff0c;论文编号为arXiv:2601.11404v1。有兴趣深入了解的读者可以通过该编号查询完整论文。把机器人比作一个学做菜的新手厨师&#xff0c;过去的机器人学习方式就像是先读菜谱、看食材照片…

CTF 压缩包密码爆破全解析:超详细教程,零基础从入门到精通,吃透这一篇就够

CTF — 压缩包密码爆破 ​ 在CTF比赛中&#xff0c;密码爆破压缩包&#xff08;如ZIP或RAR文件&#xff09;是一个常见的任务。针对ZIP压缩包的密码爆破主要是使用工具ARCHPR完成的。这个工具的功能非常强大&#xff0c;假设你已经在Win系统里安装完这个软件了&#xff0c;打开…

杭州婚纱摄影测评:杭州金夫人于浪漫之都,雕琢属于你的光影艺术 - 提酒换清欢

杭州金夫人婚纱摄影测评:于浪漫之都,雕琢属于你的光影艺术在杭州婚纱摄影领域中,杭州金夫人婚纱摄影凭借36年品牌积淀与区域深耕实力,已然成为众多新人珍藏爱情瞬间、定格婚礼仪式感的理想之选。尤其在婚纱摄影、外…

2026年袋装计数器厂家推荐:粮食计数器/面粉计数器/化肥计数器/饲料计数器/家禽装车计数器源头厂家精选

在工业自动化领域,计数器作为生产流程中的关键设备,直接影响着产品计数、包装效率与数据准确性。据行业统计,我国每年因计数误差导致的经济损失超百亿元,而高效、精准的计数解决方案已成为企业降本增效的核心需求。…

人大AI团队发现个性化大模型会“胡说八道“并提出解决方案

这项由中国人民大学高瓴人工智能学院牵头、联合联想研究院AI实验室和对外经贸大学人工智能与数据科学学院共同完成的突破性研究&#xff0c;发表于2026年1月的arXiv预印本平台&#xff08;论文编号&#xff1a;arXiv:2601.11000v1&#xff09;。这项研究首次系统性地发现了个性…

35 岁程序员拒绝被裁员!吃透这项技能,轻松完成职场逆袭

一、35 岁老周的逆袭&#xff1a;从 “被优化” 到 “被争抢” “35 岁生日刚过&#xff0c;我就收到了优化通知”—— 这是老周去年的遭遇。做了 12 年 Java 开发的他&#xff0c;每天重复着 CRUD 工作&#xff0c;薪资卡在 25K 多年没涨&#xff0c;最终成了部门 “优化名单…

2026年煤棚网架厂家推荐:体育馆网架/加油站网架/收费站网架/风雨操场网架/储煤棚网架源头厂家精选

在钢结构工程领域,徐州力霆网架工程有限公司凭借其专业的技术实力与丰富的项目经验,成为行业内的标杆企业。公司专注于钢结构、网架、管桁架等工程的设计、生产与安装,形成了一套完整的产业链服务体系。其核心产品包…

以色列理工学院发现:AI智能体具备市场规则操控能力

这项由以色列理工学院在2026年1月发表的开创性研究揭示了一个令人深思的现象&#xff1a;当AI智能体参与经济市场时&#xff0c;它们可能不会选择最优秀的技术&#xff0c;而是故意释放一些自己都不会使用的"毒苹果"技术&#xff0c;目的就是为了操控监管者改变游戏规…

全球铁路基础设施维护市场:规模、格局与未来走向深度解析

全球铁路基础设施维护市场发展现状&#xff1a;规模扩张与区域差异 根据QYResearch报告出版商的权威调研统计&#xff0c;全球铁路基础设施维护市场正呈现出稳健的发展态势。2025年&#xff0c;该市场销售额成功达到5142亿元&#xff0c;这一数据直观地反映了铁路基础设施维护…