管理和监控磁盘空间

  通过本文的学习,您将能够︰

  • 创建和删除 dbspaces、blobspaces 和 sbspaces

  • 改变镜像 dbspace 的状态

  • 监控 dbspaces、blobspaces 和 sbspaces

1. 监控磁盘空间:onstat -d

[sinodbms@feig-wzq-db ~]$ onstat -d

Sinoregal SinoDB Dynamic Server Version 16.8.FC8U0X3 -- On-Line -- Up 62 days 21:36:35 -- 1355616 Kbytes

Dbspaces
address          number   flags      fchunk   nchunks  pgsize   flags    owner    name
46269028         1        0x30001    1        1        2048     N  BA    sinodbms rootdbs
463a8770         2        0x30001    2        1        2048     N  BA    sinodbms plogdbs
463a89b0         3        0x20001    3        1        2048     N  BA    sinodbms llogdbs
463a8bf0         4        0x2001     4        1        16384    N TBA    sinodbms tempdbs1
47369028         5        0x2001     5        1        16384    N TBA    sinodbms tempdbs2
47369268         6        0x2001     6        1        16384    N TBA    sinodbms tempdbs3
473694a8         7        0x2001     7        1        16384    N TBA    sinodbms tempdbs4
473696e8         8        0x28001    8        1        2048     N SBA    sinodbms sbdbs1
47369928         9        0x20001    9        1        4096     N  BA    sinodbms datadbs1
47c98528         10       0x20001    10       1        2048     N  BA    sinodbms datadbs2
 10 active, 2047 maximum

Chunks
address          chunk/dbs     offset     size       free       bpages     flags pathname
46269268         1      1      0          1024000    1006385               PO-B-D /home/sinodbms/dbs/rootdbs
4736a028         2      2      0          1024000    2                     PO-B-D /home/sinodbms/dbs/plogdbs
4736b028         3      3      0          1024000    47                    PO-B-D /home/sinodbms/dbs/llogdbs
4736c028         4      4      0          32000      31947                 PO-B-- /home/sinodbms/dbs/tempdbs1
4736d028         5      5      0          32000      31947                 PO-B-- /home/sinodbms/dbs/tempdbs2
4736e028         6      6      0          32000      31947                 PO-B-- /home/sinodbms/dbs/tempdbs3
4736f028         7      7      0          32000      31947                 PO-B-- /home/sinodbms/dbs/tempdbs4
47370028         8      8      0          512000     477465     477465     POSB-D /home/sinodbms/dbs/sbdbs1
                                 Metadata 34482      25659      34482   
47371028         9      9      0          512000     507015                PO-B-D /home/sinodbms/dbs/datadbs1-1
47371d50         9      9      0          512000     0                          MO-B-D /home/sinodbms/dbs/mdatadbs1-1
47dc9028         10     10     0          512000     510075                PO-B-D /home/sinodbms/dbs/datadbs2-1
 10 active, 32766 maximum

NOTE: The values in the "size" and "free" columns for DBspace chunks are
      displayed in terms of "pgsize" of the DBspace to which they belong.


Expanded chunk capacity mode: always

[sinodbms@feig-wzq-db ~]$ 

  onstat -d 命令显示 dbspace 和块的摘要信息。

  onstat -d 报告的第一部分显示 dbspace、blobspace 和 sbspace。它包括一个flags列,用于显示空间的状态、空间类型以及它是否为临时空间。

  报告的第二部分显示区块的摘要。块报告显示块所属的 dbspace、dbspace 的大小和可用空间量,以及用于该块的熟文件或设备的完整路径名。flags 列指示它是主数据块还是镜像数据块,以及该数据块是脱机还是联机。关于 sbspace 块,还显示一些其他元数据。

2. 用 onspaces 创建Dbspace

  • 创建一个名为dbspace1 的、大小为1百万KB的镜像dbspace,主chunk的偏移量为200,000KB,镜像chunk偏移量为450,000KB:
onspaces -c -d dbspace1 -p /dev/rdsk/device1 -o 200000 -s 1000000 -m /dev/rdsk/device2 450000
  • 创建名为tempdbs1的500,000KB的临时dbspace偏移量为100,000KB:
onspaces -c -t -d tempdbs -p /dev/rdsk/device9 -o 100000 -s 500000

  在服务器中使用系统命令行的onspaces 实用程序可以创建dbspace, blobspace, sbspace 或临时 dbspace。使用onspaces 实用程序创建 dbspace 或 blobspace 的命令行参数为:

参数 说明
-c 创建一个 blobspace 或 dbspace
-d spacename 要创建的 dbspace 的名字
-k pagesize 新 dbspace 的非缺省页面大小(必须位于 2K 和 16K 之间,必须为缺省页面大小的倍数)
-m pathname offset 镜像路径名和偏移量
-o offset 初始chunk的设备偏移量,以KB为单位
-p pathname 初始chunk的磁盘分区或设备名
-s size 初始chunk的大小,以KB为单位
-t 标记创建的 dbspace 是临时 dbspace

以上是创建镜像和临时 dbspace 的示例。

3. 用 onspaces 创建Blobspace

  要创建名为blobsp1、大小为1百万KB且blobpage为100KB的镜像blobspace,其中主chunk和镜像chunk的偏移量均为200,000KB。(系统页大小为2K):

onspaces -c -b blobsp1 -g 50 -p /dev/rdsk/device8 -o 200000 -s 1000000 -m /dev/rdsk/device9 200000

使用 onspaces 实用程序创建 blobspace 的命令行参数为:

参数 说明
-c 创建一个 blobspace 或 dbspace
-b spacename 创建的 blobspace 的名字
-g blobpagesize Blobpage 大小的磁盘页数目
-m pathname offset 镜像路径名和偏移量
-o offset 初始chunk的偏移量,以KB为单位
-p pathname 初始chunk的设备或文件名
-s size 初始chunk的大小,以KB为单位

  上述示例展示了创建 blobspace 的命令。

  -g 显示的 blobpage 大小决定了每次读写操作的页数。如果存储在 blobspace 中的大多数对象的大小都相同,就把该大小作为 blobspace 的大小(舍入到最接近的整页大小)。这样就减少了访问简单大对象所需的读写次数。

  如果大多数简单 blob 的大小并不相同,请输入一个blobpage 大小使得 blobs 能够占用的 blobpages 数达到最小数目。blobpages 的数目越小,访问 blob 所需的锁的数目越小。

示例:

  如果存储在 blobspace 的 blobs 是8KB,则将 blobpage 的大小设置为8KB。在一个 页大小为2K的系统,输入为4的值 (8K / 2K 页大小)。在一个页大小为 4K的系统,则输入为2的值 (8K /4K)。

  如果blobs的80%是12-16KB,15%小于12KB,5%大于16KB,如果需要考虑磁盘空间量的话,您可以将blobpage大小设置为8KB。如果您的主要考虑是速度,空间不是首要考虑的话,请将 blobpage 的大小设置为16KB。如果存储在数据库的 blobs 大小不同,您应该创建几个 blobspaces,每一个 blobpage 的大小与不同大小的 blobs 适应。

  在 blobs 写入新的 blobspace 之前,数据库服务器必须使用onmode -l 命令强制切换到下一个逻辑日志文件。

4. 用 onspaces 创建Sbspaces

  要创建名为sbspace1、大小为1百万KB、主chunk和镜像chunk偏移量均为200,000KB的镜像sbspace,且元数据大小为7500KB,偏移量为10,000KB,以及平均智能blobsize为32KB:

onspaces -c -S sbspace1 -p /dev/rdsk/device5 -o 200000 -s 1000000 -m /dev/rdsk/device6 200000
-Ms 7500 -Mo 10000 -Df "AVG_LO_SIZE=32"

使用 onspaces 实用程序创建 sbspace 的命令行参数为:

参数 说明
-c 创建一个 sbspace
-S spacename 创建的 sbspace 的名字
-m pathname offset 镜像路径名和偏移量
-o offset 初始chunk的偏移量,以KB为单位
-t 创建的 sbspace 是临时 sbspace (IDS 9.3 及更高)
-p pathname 初始chunk的设备或文件名
-s size 初始chunk的大小,以KB为单位
-Ms metasize sbspace 元数据区域的大小,以KB为单位
-Mo metaoffset sbspace 元数据区域的偏移量,以KB为单位
-Df options 指定存储在 sbspace 的智能大对象的多种缺省存储特性和其他属性

上述示例展示了创建 sbspace 的命令。

5. 用 onspaces 删除空间

  • 在删除 dbspace 之前,必须先删除在 dbspace 中创建的所有数据库和表。

  • 在删除 blobspace 前,必须删除含有指向 blobspace 的 TEXT 或 BYTE 列的所有表。

  • 示例
    — 删除 dbspace dbspace1
    onspaces -d dbspace1
    — 使用 -f 选项删除包含数据的 sbspace:
    onspaces -d sbspace1 -f

  可以使用onspaces 实用程序从系统命令行删除 dbspace,temporary dbspace,blobspace,或 sbspace。要删除 dbspace, blobspace, 或 sbspace,空间必须是没有被使用中的。因此必须先删除 dbspace 中的所有表或包含了存储在 blobspace 或 sbspace 中的 blobs 的数据行,否则会返回错误消息。

6.为 Dbspace 或 Blobspace 添加 chunk

为一个名为dbspace2、主chunk偏移量为100,000KB、镜像chunk偏移量为150,000KB的dbspace增加一个500,000KB的镜像chunk:

onspaces -a dbspace2 -p /dev/rdsk/device4 -o 100000 -s 500000 -m /dev/rdsk/device5 150000

使用onspaces 实用程序为 dbspace 或 blobspace 添加chunk。使用onspaces 实用程序为 dbspace 或 blobspace 添加chunk的命令行参数为:

参数 说明
-a spacename 为指定的 dbspace 或 blobspace 添加chunk
-m pathname offset 镜像路径名和偏移量
-o offset chunk偏移量,以KB为单位
-p pathname chunk设备或文件名
-s size chunk偏移量,以KB为单位

以上是为 dbspace 添加chunk的命令示例。

7. 添加chunk到Sbspace

  添加一个大小为 100,000KB 的镜像chunk到名为sbspace1 的 sbspace,主chunk和镜像chunk偏移量均为 20,000KB、元数据大小为750KB、偏移量为1000KB:

onspaces -a sbspace1 -p /dev/rdsk/chunk7 -o 20000 -s 100000
  -m /dev/rdsk/chunk6 20000 -Ms 750 -Mo 1000

  若是chunk只允许为用户数据所使用,指定 -U 选项(删除 -Ms-Mo 选项)

  添加chunk到带有 onspaces 实用程序的 sbspace 命令为:

参数 说明
-a 空间名 添加chunk到指定 sbspace
-m 路径名偏移 镜像路径名和偏移
-o 偏移 新chunk的偏移量,以KB为单位
-p 路径名 新chunk的设备或文件名
-s 大小 以 KB 为单位的新chunk大小
-Ms 元大小 新chunk中Sbspace 元数据区域的大小,以 KB 为单位
-Mo 元偏移 新chunk中元数据区偏移量,以 KB 为单位
-U 表示新chunk只包含用户数据

8. 用 onspaces删除chunk

  可以使用onspaces 删除任何 dbspace、sbspace 或 blobspace 的非初始chunk。例如,从偏移 50,000 KB 的dbspace2 删除chunk:

onspaces -d dbspace2 -p /dev/rdsk/chunk3 -o 50000

  注意:不可以以这种方式删除 dbspace、 sbspace 或 blobspace的初始chunk。必须删除储存空间本身。o

  onspaces 程序可以被用来删除 dbspace、 sbspace 或 blobspace 中的chunk。用onspaces 程序在储存空间中删除chunk的命令行参数为:

参数 说明
-d 空间名 删除指定 dbspace、blobspace 或 sbspace中的chunk
-o 偏移 以 KB 为单位的chunk偏移量
-p 路径名 chunk设备或文件的路径名

其他 onspaces 选项

  也可以使用onspaces 程序来启动镜像、停止镜像或改变chunk状态。

9. 重命名Dbspaces

  • 服务器必须在静默模式

  • 不能重命名关键的 dbspace

  • 重命名后建议进行 0 级系统备份

  • 语法:

    onspaces -ren old_dbspacename -new new_dbspacename

  SinoDB数据库赋予sinodbms 管理员权利来重命名非关键 dbspace 的任何 dbspace。包含以下任意一种对象的dbspace即为关键 dbspace:

  • rootchunk
  • 任何逻辑日志
  • 物理日志

  为了重命名 dbspace,数据库服务器必须在静默模式。