IBM Support

Database creation is failing with "Disk full" error during DMS tablespace creation on a storage subsystem with a sector size other than 512 bytes.

Troubleshooting


Problem

During database creation with DMS tablespaces (the default in V95 and above) or during the creation of a DMS tablespace on a storage array that is defined with a Sector Size that is not 512 bytes, it will fail with a "Disk full" error.

Symptom

Example db2diag.log messages:


2010-07-14-13.37.37.647768-240 E24975E1244 LEVEL: Error (OS)
PID : 28148 TID : 47704277248320PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000
APPHDL : 0-7 APPID: *LOCAL.db2inst1.100714173735
AUTHID : db2inst1
EDUID : 16 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, oper system services, sqloseekwrite64, probe:20
MESSAGE : ZRC=0x850F000C=-2062614516=SQLO_DISK "Disk full."
DIA8312C Disk was full.
CALLED : OS, -, pwrite OSERR: EINVAL (22)
DATA #1 : File handle, PD_TYPE_SQO_FILE_HDL, 8 bytes
File Handle = 21
File System Block Size = 0 bytes
File System Type = UNKNOWN
File Handle Flags :
Require Sector Align = No
DIO/CIO Mode = Yes
Raw Block Device = No
Reserved Handle = No
Flush On Close = Yes
Thread-Level Lock = No
Write-through Mode = No
File Not Tracked = No
DATA #2 : unsigned integer, 8 bytes
512
DATA #3 : signed integer, 8 bytes
512
DATA #4 : signed integer, 8 bytes
-1
DATA #5 : String, 105 bytes
Search for ossError*Analysis probe point after this log entry for further
self-diagnosis of this problem.

2010-07-14-13.37.37.655809-240 I26220E2001 LEVEL: Error (OS)
PID : 28148 TID : 47704277248320PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000
APPHDL : 0-7 APPID: *LOCAL.db2inst1.100714173735
AUTHID : db2inst1
EDUID : 16 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 Common, OSSe, ossErrorIOAnalysis, probe:100
CALLED : OS, -, pwrite OSERR: EINVAL (22)
DATA #1 : String, 116 bytes
A total of 3 analysis will be performed :
- User info
- Target file info
- I/O attempt

Target file handle = 21
DATA #2 : String, 184 bytes
Real user ID of current process = 500
Effective user ID of current process = 500
Real group ID of current process = 500
Effective group ID of current process = 500
DATA #3 : String, 254 bytes
Target File Information :
Size = 0
Link = No
Reference path = N/A
Type = 0x8000
Permissions = rw-------
UID = 500
GID = 500
Last modified time = 1279129057
DATA #4 : String, 33 bytes
I/O attempt not implemented yet.
CALLSTCK:
[0] 0x00002B62EB97AE94 pdOSSeLoggingCallback + 0x20C
[1] 0x00002B62EFFB7064 /home/db2inst1/sqllib/lib64/libdb2osse.so.1 + 0x1C1064
[2] 0x00002B62EFFB6F5B ossLogSysRC + 0xBF
[3] 0x00002B62EFFAC15E /home/db2inst1/sqllib/lib64/libdb2osse.so.1 + 0x1B615E
[4] 0x00002B62EFFA94DD ossErrorAnalysis + 0x2D
[5] 0x00002B62ED316571 sqloSystemErrorHandler + 0x6D7
[6] 0x00002B62EBE8FAFA sqloseekwrite64 + 0x66E
[7] 0x00002B62EC59F48F _Z26sqlbDMSAddContainerRequestP12SQLB_POOL_CBP16SQLB_PO
OLCONT_CBP12SQLB_GLOBALSP14SQLB_pfParIoCbbm + 0x151F
[8] 0x00002B62EC5B1BDD _Z29sqlbDoDMSAddContainerRequestsP12SQLB_POOL_CBP16SQLB
_POOLCONT_CBjP26SQLB_AS_CONT_AND_PATH_INFOP12SQLB_GLOBALS + 0x2D5
[9] 0x00002B62EC52CE19 _Z24sqlbASSetPoolContsForDMSP12SQLB_GLOBALSP12SQLB_POOL
_CBmP19SQLB_CONTAINER_SPECbmP26SQLB_AS_CONT_AND_PATH_INFO + 0x6A5

2010-07-14-13.37.37.720188-240 I28222E634 LEVEL: Error
PID : 28148 TID : 47704277248320PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000
APPHDL : 0-7 APPID: *LOCAL.db2inst1.100714173735
AUTHID : db2inst1
EDUID : 16 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbDMSAddContainerRequest, probe:865
MESSAGE : ZRC=0x850F000C=-2062614516=SQLO_DISK "Disk full."
DIA8312C Disk was full.
DATA #1 : <preformatted>
Error acquiring container 0 (/tsm2_db1a/db2inst1/NODE0000/SAMPLE/T0000000/C0000000.CAT) for tbsp 0. Rc = 850F000C

Cause

This is due to a combination of the default of NO FILESYSTEM CACHE for DMS tablespace creation and the current expectation in the code that the Sector Size for Direct I/O devices is defined as 512.

Diagnosing The Problem

As root, use the blockdev command to determine the SSZ value.
blockdev --report <device>

Example:
blockdev --report /dev/sdb2

you should get something like this:

RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 8482320 1118638080 /dev/sdb2

A value other than 512 under the SSZ column for a device that you are using for DB2 tablespaces indicates exposure,

root# /sbin/blockdev --report /dev/mapper/db_vg-db2_lv1
RO RA SSZ BSZ StartSec Size Device
rw 256 4096 4096 0

Resolving The Problem

Reconfigure the volume or device to use a Sector Size of 512.

[{"Product":{"code":"SSEPGG","label":"DB2 for Linux- UNIX and Windows"},"Business Unit":{"code":"BU001","label":"Analytics Private Cloud"},"Component":"Operating System \/ Hardware - Filesystems & I\/O","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"9.7;9.5","Edition":"Enterprise Server;Express;Personal;Personal Developer's;Workgroup Server"}]

Document Information

Modified date:
16 June 2018

UID

swg21449214