随同 admin() 或 task() 函数,使用 storagepool add 参数来添加条目到存储池( GBase 8s 可用于自动地添加空间到现有存储空间的裸设备、熟文件或目录的集合)。
元素 | 描述 | 关键考虑 |
---|---|---|
path_name | 当需要附加的存储空间时,服务器可使用的文件、目录或设备的路径。 | 您无需添加结尾斜杠(“/”)到目录名。
当运行 oninit 命令时,如果在您的环境中有环境变量,则您可使用该路径中的环境变量。 |
begin_offset | 设备内 GBase 8s 可开始分配空间处的偏移量,以 KB 为单位。 | 如果您指定了到目录的路径,则必须指定 0 为偏移量。 |
total_size | 在这个条目中 GBase 8s 可用的合计空间。服务器可从这个空间量分配多个 chunk。 | 请确保为目录的合计大小指定 0。如果您为目录指定非零的值,则 SQL 管理 API 命令返回错误提示。
如果您为文件或设备指定 0,则服务器会从该条目分配一个可扩展的 chunk。 |
chunk_size | 从该设备、文件或目录可分配的 chunk 大小的最小值。 | 您可创建的最小 chunk 为 1000 K。因此,您可指定的最小 chunk 大小为 1000 K。 |
priority | 当服务器通过存储池查找空间时,该目录、文件或设备的优先级。
|
在服务器从较低优先级条目分配空间之前,会试图从高优先级条目分配空间。 |
如果有必要添加新的 chunk 到存储空间,则服务器使用存储池中的条目。
当您添加条目到存储池时,可能先要对如何使用那个条目施加控制。例如,减少实例中的 chunk 数,您可能仅想从特定裸设备分配大型空间 chunk,且可能不想这些 chunk 是可扩展的。 在这种情况下,请配置那个存储池的 chunk 大小为大型的。
您可以添加下列类型的条目到存储池:
目录存储池条目通常归类为可扩展的,因为它没有合计大小。如果在该目录中自动地创建新的 chunk,则服务器标记那些 chunk 为可扩展的。当您添加目录存储池条目时,您可能想要小的 chunk 大小,因为服务器可扩展该目录中的任何 chunk,且较少的 chunk 大小可减少实例中浪费的空间量。
如果存储池条目在“高可用性数据复制”(HDR)主服务器上,则在该 HDR 集群中的所有辅助服务器上,该条目中相同的路径必须是可用的。
大小和偏移量的缺省单位为 KB。然而,在您可以下列示例中显示的任何方式指定信息:
下列命令添加名为 /region2/dbspaces 的目录,起始偏移量为 0,合计大小为 0,初始 chunk 大小为 20 MB,且为高优先级:
DATABASE sysadmin; EXECUTE FUNCTION task("storagepool add", "/region2/dbspaces", "0", "0", "20000", "1");
下列命令将路径名为 /dev/raw/device1 且合计 500 MB 空间的定长裸设备添加到存储池。该命令指定起始偏移量为 50 MB,合计大小为 10 GB,最小分配到 chunk 100 MB,且为低优先级.
EXECUTE FUNCTION task("storagepool add", "/dev/rawdevice1", "50 MB", "10 GB", "100 MB", "3");
下列命令添加定长熟文件和 1 GB 空间到存储池。该命令指定起始偏移量为 0, 合计大小为 1000000 KB,最小分配到 chunk 50000 KB,且为中优先级:
EXECUTE FUNCTION task("storagepool add", "/ifmx_filesystem/storage/cooked7", "0", "1000000", "50000", "2");
当添加这个条目时,服务器试图将 cooked7 文件的大小增加到 1 GB。如果由于文件系统已满,服务器不能增加大小,则服务器返回错误消息且不添加条目到存储池。
GBase 8s 最初使用熟文件的一部分,但随着空间填满,如有必要可使用更多设备。
下列命令添加路径名为 /ifmx/CHUNKFILES/cooked2 的熟文件。如果服务器使用这个条目,则服务器创建一个初始大小为 1 GB 的 chunk,且服务器自动地标记该 chunk 为可扩展的。
EXECUTE FUNCTION task("storagepool add", "/ifmx/CHUNKFILES/cooked2", "0", "0", "1 GB", "2");
下列示例包括路径中的环境变量。当运行 oninit 命令时,该变量出现在服务器环境中。
EXECUTE FUNCTION task("storagepool add", "$DBSDIR/chunk1", "0", "100000", "20000", "2");