文章
· 16 hr 前 阅读大约需 5 分钟

多卷数据库的秘方

 

ISC 开发者们,我向你们致敬 👑

多卷数据库

下面的解释是从文档搬过来的,但就当我问了 LLM,免得侵权。

在默认配置中,数据库使用单个 IRIS.DAT 文件。 数据库可以配置为在达到指定大小阈值时自动扩展到额外卷(IRIS–0001.VOL、IRIS–0002.VOL 等等)。 你也可以有意将数据库扩展到额外卷。 额外卷可能位于与 IRIS.DAT 相同的目录中和/或一组额外目录中。

我想做的是设置一个小阈值,并检查备用 pvc(目录)上的多卷扩展操作。毫无疑问,这对镜像、性能 (woot) 和管理的影响是巨大的,下面是一种简单的理解方式。前向求解会考虑是否存在我们可以注入的“回调”,并在溢出扩展之前动态配置新的云卷。

环境
我在 2024.1 (Build 263U) 上​​有一个正在运行的部署,我的 $ISC_DATA_DIRECTORY 有一个 50Gi OpenEBS PVC,大概一个月前发布的。

我向命名空间添加了一个额外的 OpenEBS PVC:
 

#kind: PersistentVolumeClaim
#apiVersion: v1
#metadata:
#  name: jiva-iris-volume-claim
#spec:
#  storageClassName: openebs-jiva-csi-default
#  accessModes:
#    - ReadWriteOnce
#  resources:
#    requests:
#      storage: 50Gi
#--
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jiva-iris-volume-claim-mv
spec:
  storageClassName: openebs-jiva-csi-default
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi

应用好了

sween@run1:~$ kubectl apply -f deezwatts-volume.yaml -n rivian
persistentvolumeclaim/jiva-iris-volume-claim-mv created

附加,然后通过 init 容器修补部署。

<snips>
volumes:
   - name: task-pv-storage
        persistentVolumeClaim:
            claimName: jiva-iris-volume-claim
        - name: task-pv-storage-mvd
          persistentVolumeClaim:
            claimName: jiva-iris-volume-claim-mv
<snips>
volumeMounts:
    - name: task-pv-storage
   mountPath: /data
    - name: task-pv-storage-mvd
   mountPath: /data-mvd

现在,我们用另一个卷来设置 `/data-mvd` 的多卷扩展



设置

以下是我偶然发现的快速方法,使用 System Management Clown Suit(警告:没有启用深色模式🕶)

在实例的主卷上创建数据库,检查操作的新属性。

在主卷上创建数据库“mvd”,新内容如下:

New Volume Threshold 是最初为扩展触发器做规划的地方,还有其他后期配置的地方,来为目标位置创建溢出 .DAT。当然,注意配置参数下方的占位符提示,这一课非常重要。否则,你又会看到有关 💯💯 卷限制的警告。

输入零以禁用新卷的自动创建。 如果不为零,当 IRIS.DAT 扩展到超过此阈值时,将创建名为 IRIS-0001.VOL 的新卷文件。 当扩展使文件超过阈值时,将创建 IRIS-0002.VOL,依此类推。 对于非零值,建议至少为 1 TB,以避免文件数量过多。 每个数据库被限制为 200 个卷。

现在,挂载新的数据库,在挂载之前无法对其进行后期配置。

可以在数据库列表中看到 Volumes 列

我们在这里为要扩展多个卷的数据库设置备用位置。



扩展

由于数据库阈值相当小,顺序有点乱,但还是值得展示。  

为了在 IRIS.DAT 中生成空间耗尽,我在数据库顶部添加了一个命名空间:

有了命名空间之后,我调了调 ZPM,从 openexchange 安装了点东西。 

 

irisowner@iris-deezwatts-deployment-7b9bfcff8f-dssln:~$ irissession IRIS

Node: iris-deezwatts-deployment-7b9bfcff8f-dssln, Instance: IRIS

USER>zn "MVD"
MVD>zn "%SYS" d ##class(Security.SSLConfigs).Create("z") s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="z" d r.Get("/packages/zpm/latest/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c")

Load started on 06/04/2024 13:43:08
Loading file /data/IRIS/mgr/Temp/z9mu1CvnPnaGbA.xml as xml
Imported class: %ZPM.Installer
Compiling class %ZPM.Installer
Compiling routine %ZPM.Installer.1
Load finished successfully.

%SYS>zpm

=============================================================================
|| Welcome to the Package Manager Shell (ZPM). version 0.7.1               ||
|| Enter q/quit to exit the shell. Enter ?/help to view available commands ||
|| Current registry https://pm.community.intersystems.com                  ||
=============================================================================
zpm:%SYS>install "zpm-registry"

在数据库 UI 中查看“赞料”:

pod 中文件夹结构下的赞料:

irisowner@iris-deezwatts-deployment-7b9bfcff8f-dssln:/data-mvd$ ls -ltr /data-mv*
total 5140
drwxrwxrwx 2 irisowner irisowner   16384 Jun  4 11:56 lost+found
-rw-rw---- 1 irisowner irisowner      20 Jun  4 12:11 iris.dbdir
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:25 IRIS-0022.VOL
irisowner@iris-deezwatts-deployment-7b9bfcff8f-dssln:/data-mvd$ ls -ltr /data/IRIS/mgr/mvd
total 164
drwxrwxrwx 2 irisowner irisowner    4096 Jun  4 11:15 stream
-rw-rw---- 1 irisowner irisowner      63 Jun  4 12:01 iris.lck
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0001.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0002.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0003.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0004.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0005.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0006.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0007.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0008.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0009.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0010.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0012.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0015.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0018.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0016.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0019.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0020.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0017.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0014.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0013.VOL
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 12:11 IRIS-0011.VOL
-rwxrwxrwx 1 irisowner irisowner 5242880 Jun  4 13:08 IRIS.DAT
-rw-rw---- 1 irisowner irisowner 5242880 Jun  4 13:08 IRIS-0021.VOL

看来我有新玩具了!

结论
这篇帖子很短,可能发到讨论区更合适。不过得回去工作了,我好像从 @jtrog 那看到一只松鼠。期待未来社区在采用这项功能时的分享和体验。

我们峰会上见!

讨论 (0)1
登录或注册以继续