파일 공간 관리
파일 공간이 시스템의 조작에 중요하므로 별도의 호출 세트는 파일 공간 ID의 등록, 업데이트, 삭제에 사용됩니다. 시스템에서 파일 공간과 연관된 오브젝트를 저장하려면 먼저 IBM® Storage Protect에 파일 공간을 등록해야 합니다.
dsmRegisterFS 호출을 사용하여 이 태스크를 수행하십시오. 오브젝트 이름 및 ID에 대한 자세한 정보는 오브젝트 이름 및 ID를 참조하십시오.
파일 공간 ID는 세 부분의 이름 계층 구조로 된 최상위 레벨 규정자입니다. 관련 데이터를 하나의 파일 공간 내에 그룹화하면 훨씬 편리하게 데이터를 관리할 수 있습니다. 예를 들어, 애플리케이션 클라이언트 또는 IBM Storage Protect 서버 관리자가 파일 공간 및 해당 파일 공간 내의 모든 오브젝트를 삭제할 수 있습니다.
| 유형 | 정의 |
|---|---|
| fstype | 파일 공간 유형입니다. 이 필드는 애플리케이션 클라이언트가 설정하는 문자열입니다. |
| fsAttr[platform].fsInfo | 클라이언트별 데이터에 사용되는 클라이언트 정보 필드입니다. |
| capacity | 파일 공간에 있는 총 공간 크기입니다. |
| occupancy | 현재 파일 공간을 차지하는 공간의 크기입니다. |
| backStartDate | 최종 백업이 시작된 시간소인입니다(dsmUpdateFS 호출을 전송하여 설정됨). |
| backCompleteDate | 최종 백업이 완료된 시간소인입니다(dsmUpdateFS 호출을 전송하여 설정됨). |
용량 및 점유율은 애플리케이션 클라이언트에 따라 다르게 사용됩니다. 일부 애플리케이션은 파일 공간의 크기에 대한 정보가 필요하지 않을 수 있습니다. 이 경우 이러한 필드의 기본값은 0입니다. 파일 공간 조회에 대한 자세한 정보는 IBM Storage Protect 시스템 조회를 참조하십시오.
파일 공간이 시스템에 등록되면 언제든지 오브젝트를 백업 또는 아카이브할 수 있습니다. 백업 또는 아카이브 조작 후에 파일 공간의 점유 및 용량 필드를 업데이트하려면 dsmUpdateFS를 호출하십시오. 이 호출을 사용하면 파일 시스템의 점유 및 용량에 대한 값이 현재 값을 반영합니다. fsinfo, backupstart및 backupcomplete 필드를 업데이트할 수도 있습니다.
마지막 백업 날짜를 모니터하려면 백업을 시작하기 전에 dsmUpdateFS 호출을 입력하십시오. 업데이트 조치를 DSM_FSUPD_BACKSTARTDATE로 설정하십시오. 이를 수행하면 서버가 파일 공간의 backStartDate 필드를 강제로 현재 시간으로 설정합니다. 해당 파일 공간에 대한 백업이 완료되면 DSM_FSUPD_BACKCOMPLETEDATE로 설정된 업데이트 조치를 사용하여 dsmUpdateFS 호출을 입력하십시오. 이 호출은 백업 종료 시 시간소인을 작성합니다.
파일 공간이 더 이상 필요하지 않은 경우 dsmDeleteFS 명령을 사용하여 이를 삭제할 수 있습니다. UNIX 또는 Linux® 운영 체제에서는 루트 사용자 또는 권한이 있는 사용자만 파일 공간을 삭제할 수 있습니다.
/* Register the file space if it has not already been done. */
dsInt16 rc;
regFSData fsData;
char fsName[DSM_MAX_FSNAME_LENGTH];
char smpAPI[] = "Sample-API";
strcpy(fsName,"/home/tallan/text");
memset(&fsData,0x00,sizeof(fsData));
fsData.stVersion = regFSDataVersion;
fsData.fsName = fsName;
fsData.fsType = smpAPI;
strcpy(fsData.fsAttr.unixFSAttr.fsInfo,"Sample API FS Info");
fsData.fsAttr.unixFSAttr.fsInfoLength =
strlen(fsData.fsAttr.unixFSAttr.fsInfo) + 1;
fsData.occupancy.hi=0;
fsData.occupancy.lo=100;
fsData.capacity.hi=0;
fsData.capacity.lo=300;
rc = dsmRegisterFS(dsmHandle,fsData);
if (rc == DSM_RC_FS_ALREADY_REGED) rc = DSM_RC_OK; /* already done */
if (rc)
{
printf("Filespace registration failed: ");
rcApiOut(dsmHandle, rc);
free(bkup_buff);
return (RC_SESSION_FAILED);
}
/* Update the file space. */
dsmFSUpd updFilespace; /* for update FS */
updFilespace.stVersion = dsmFSUpdVersion;
updFilespace.fsType = 0; /* no change */
updFilespace.occupancy.hi = 0;
updFilespace.occupancy.lo = 50;
updFilespace.capacity.hi = 0;
updFilespace.capacity.lo = 200;
strcpy(updFilespace.fsAttr.unixFSAttr.fsInfo,
"My update for filespace") ;
updFilespace.fsAttr.unixFSAttr.fsInfoLength =
strlen(updFilespace.fsAttr.unixFSAttr.fsInfo);
updAction = DSM_FSUPD_FSINFO |
DSM_FSUPD_OCCUPANCY |
DSM_FSUPD_CAPACITY;
rc = dsmUpdateFS (handle,fsName,&updFilespace,updAction);
printf("dsmUpdateFS rc=%d\n", rc);
/* Delete the file space. */
printf("\nDeleting file space
rc = dsmDeleteFS (dsmHandle,fsName,DSM_REPOS_ALL);
if (rc)
{
printf(" FAILED!!! ");
rcApiOut(dsmHandle, rc);
}
else printf(" OK!\n");