IBM Tivoli Storage Manager – Entendendo o processo de ‘deduplication’ no TSM 6.X
Como entender o processo de ‘dedup’ do TSM e usá-lo corretamente.
A tecnologia de ‘deduplication’ permite uma economia no espaço de armazenamento nas operações de backup. Ao contrário das técnicas tradicionais de compressão de dados, nas quais são aplicados algoritmos capazes de, num escopo limitado, identificar cadeias de dados repetidos, o processo de deduplicação consegue identificar extensamente padrões binários já armazenados em grandes cadeias de dados, eliminando assim a redundância presente entre objetos e arquivos de um ou mais sistemas e atingindo taxas de economia muito maiores. Aqui descrevemos como é implementado o algoritmo de ‘deduplication’ no TSM, quais são as melhores práticas e cuidados que devem ser tomados e os resultados esperados.
Descrição
Antes de detalhar o processo de ‘deduplicação’ adotado no Tivoli Storage Manager 6.X, é importante entender como são classificados as principais tecnologias de ‘deduplicacão’ existentes no mercado e quais são suas caraterísticas que as diferenciam.
Quanto ao local onde é iniciado o processo de ‘deduplicação’:
Origem (Source): o processo de identificação e eliminação das redundâncias de blocos repetidos é feito na máquina cliente onde estão armazenados os dados primários. Nesse caso há economia no uso de recursos da rede porque os dados já trafegam ‘deduplicados’ até o servidor de backup, em contrapartida esse processo consome tempo de CPU na máquina cliente e pode afetar o desempenho de sistemas de produção.
Destino (Destination): o processo de identificação e eliminação é feito num servidor ou ‘appliance’ especializado. Nesse caso, os dados trafegam integralmente pela rede; o processo de identificação e eliminação é feito no destino, onde os dados serão armazenados.
Quando será executado o processo de ‘deduplicação’:
Post-processing ou out-of- band: O processo de identificação e eliminação de redundâncias é feito a posteriori, ou seja, é feito por outro processo que não participa da operação de backup. Nesse caso essa operação é feita logo após as escritas de um operação de backup ou pode ser agendada para períodos de inatividade para que não impacte significativamente o sistema de backup, contudo a operação de backup exigirá um espaço maior, ainda que temporário, para armazenar os dados enquanto não for realizado o processo de deduplicação.
Real Time ou in-band: O processo de indentificação e eliminação de redundâncias é iniciado e executado no momento que ocorre a operação de backup. Nesse caso os dados são ‘deduplicados’ à medida que processo de backup está ocorrendo, o que pode tornar o processo de backup mais lento devido ao processamento adicional exigido pela ‘deduplicação’, porém com a vantagem de exigir menos espaço para armazenar os dados, já que estes serão armazenados já no estado ‘deduplicado’.
Além das classificações acima, existem vários tipos de implementações de algoritmos de ‘deduplicação’. A maioria dos algoritmos está baseado no cálculo de ‘hashes’, funções matemáticas que produzem um identificador dos dados de forma que eles sejam representados unicamente. Idealmente, a probabilidade de repetição de ‘hash’ para dados diferentes deve ser desprezível mesmo para um conjunto de dados grande. O Tivoli Storage Manager utiliza essa técnica quando é utilizado ‘deduplicação’ em um storage pool configurado com essa função no TSM server. A operação pode ser agendada para que o
processo seja feito em lote durante períodos de inatividade. Em resumo, pode-se dizer que o processo de deduplicação do Tivoli Storage Manager 6.X pode ser classificado como um processo feito no destino, em modo ‘out-of-band’ e baseado em ‘hash’. Versões futuras do Tivoli Storage Manager poderão adicionar outros métodos como, por exemplo, iniciar o processo de identificação de redundâncias na origem. O TSM usa, em cada bloco de tamanho variável, denominado ‘chunk’, o algoritmo SHA-1 (de 160 bits) para calcular o ‘hash’ que o identifica unicamente. Considerando uma distribuição uniforme do conteúdo dos blocos, existe uma chance de 50% de ter um bloco diferentes com o mesmo ‘hash’ quando o número total de blocos armazenados é de 2^80. Como o TSM está limitado a armazenar 2^64 blocos na versão atual, as chances de uma instalação ter um problema com blocos diferentes com o mesmo ‘hash’ (geralmente chamada de ‘colisão’) será menor . Além disso, como os blocos são de tamanhos variáveis, essa probabilidade deve ser levada em conta para cada tamanho de bloco (no TSM, de 2 KiB a 4 MiB), portanto a probabibilidade de uma colisão se torna ainda menor. Apenas para fins de comparação, a probabilidade da ocorrência de erro de leitura irrecuperável causado pela falha em algoritmo de ECC de um
disco rígido Fibre Channel é de aproximadamente 1 setor a cada 2^53 (http://www.seagate.com/docs/pdf/datasheet/disc/ds_cheetah_15k_6.pdf (este link reside fora de ibm.com)). Além disso, há um proteção adicional para detecção de colisões no objeto, já que um segundo ‘hash’ MD5 é calculado em relação a todo o objeto armazenado
Planejando ativar ‘dedup’ no Tivoli Storage Manager
Algumas considerações devem ser feitas antes de ativar esse recurso no TSM:
Considere ativar ‘deduplicação’ se:
Os dados serão armazenados em disco por longos períodos de tempo sem que haja migração para fita;
Dados com alta taxa de redundância estão sendo protegidos como, por exemplo, arquivos de sistemas operacionais ou servidores de arquivos;
Recursos de CPU e I/O estão disponíveis no TSM Server para absorver o aumento de processamento durante o processo de identificação de redundâncias no storage pool que tem ‘deduplicação’ ativada. Tipicamente, o número de processos de ‘deduplicação’ que podem ser executados simultaneamente deve ser igual ao número de processadores ou núcleos disponíveis no TSM Server. Além disso, o uso de discos lentos pode afetar o tempo de recuperação, portanto recomenda-se que sejam usados subsistemas de disco capazes de distribuir a carga em diversos discos físicos para aumentar a vazão total no subsistema de discos.
Evite ativar ‘deduplicação’ se:
Os dados são de missão crítica, ou seja, dados cujo tempo de recuperação não pode ser afetado por blocos não-contíguos quando se usa o ‘dedup’;
Não houve um dimensionamento correto do TSM Server para suportar a carga adicional do processamento relacionado ao processo de ‘dedup’
Dados criptografados ou que não possuem redundância entre si.
Arquivos menores que 2 KiB não são elegíveis para deduplicação. Além disso, arquivos menores que 100KiB geralmente apresentam uma demora maior durante um ‘restore’ quando deduplicadas, portanto cuidado deve ser tomado quando estas são enviadas para um storage pool com ‘deduplicação’ ativado.
Como estimar o espaço necessário para armazenar os dados ‘deduplicados’:
* A maneira mais indicada é testar a massa de dados num sistema de testes e depois desativá-lo após determinar quais serão os requerimentos de espaço.
* Uma maneira alternativa ao descrito acima é fazer um backup do seu ‘storage pool’ para um ‘copy storage pool’ que tem ativado o data deduplication para estimar a economia de espaço. Note que essa técnica pode aumentar o tamanho do DB do TSM.
Os passos são os seguintes:
Crie um ‘copy storage pool’ usando um devclass do tipo FILE.
Faça um backup do ‘storage pool’ para o ‘copy storage
Execute o IDENTIFY DUPLICATES nos volumes do copy storagepool.
Quando o processo IDENTIFY DUPLICATES atingir o estado ‘idle’, ajuste o ‘reclamation threshold’para 1%.
Depois do término do ‘reclamation’, use o commando ‘q stgpool’ para o ‘copy stgpool’ para checar o tamanho do copy stgpool e veja quanto foi o ganho de espaço sobre o outro stgpool.
Se os resultados foram satisfatórios, atualize o storage pool primário (se este for do tipo FILE) ou mova os dados para um novo stgpool se ele for do tipo (DISK).
Como estimar o espaço necessário em logs de transação do TSM:
* Durante o processo ‘IDENTIFY DUPLICATES’, monitore o número de logs arquivados para determinar os requerimentos sobre o tamanho dos logs.
Como fazer o dimensionamento do DB do TSM para ‘deduplicação’:
* Para cada ‘chunk’ ou bloco de dados do TSM são adicionados 500 bytes de overhead para armazenar metadados sobre a deduplicação. Como o tamanho médio de um chunk é de 256 KiB, pode-se dividir o tamanho de um stgpool e calcular o quanto de espaço adicional será necessário no DB do TSM facilmente.
Exemplo:
1. Tamanho do storage pool = 1 TiB
2. Tamanho médio do chunk = 256 KiB
3. Ovehead de metadados no DB = (1000000000/256)*500 = 20 GiB
Ativando ‘dedup’ no Tivoli Storage Manager 6.X
A ativação dessa característica pode ser feita apenas em storage pools do tipo ‘FILE’. Pode-se criar um storage pool sem que essa característica esteja ativada e depois ativá-la com o comando ‘UPDATE STGPOOL’.
Abaixo estão os passos recomendados para controlar essa operação no TSM:
Para criar/atualizar um stgpool ‘FILE’ com essa característica, as seguintes opções foram adicionadas nos comandos
‘DEFINE/UPDATE STGPOOL’:
DEDUPlicate = [ Yes | No ]
Habilita o ‘dedup’, o default é ‘No’
&
IDENTIFYPRocess = nn
Número total de processos que serão usados para identificar as redundâncias nesse storage pool, o valor default é ‘1’
Caso o IDENTIFYProcess for maior que zero, o processo de identificação será executado continuamente até que o processo seja cancelado com o comando ‘CANCEL’. Também é possível alterar novamente o parâmetro para zero ou executar comando ‘IDENTIFY DUPLICATES’ ajustando os processos para zero para parar a execução após o término das operações correntes. É recomendado executar esse processo manualmente para que seja feito apenas em períodos de inatividade, portante ajuste esse parâmetro como ‘0’ e use o comando ‘IDENTIFY DUPLICATES’ descrito abaixo em um schedule administrativo do TSM.
2. Execute uma vez por dia o processo de identificação de redundâncias em períodos de baixa atividade do servidor. Note que esse processo não irá liberar o espaço nos volumes até que você execute a operação de ‘RECLAIM’.
Exemplo:
IDENTIFY DUPLICATES FILEPOOL NUMPR=2
Para verificar o progresso pode-se usar o comando ‘Q PROC’
283 Identify Duplicates Storage Pool FILEPOOL, Volume /tsmpool2/00006664.
BFS, Files Processed: 2000, Duplicate
Extents Found: 344, Duplicate Bytes Found:
3,238,123 Current Physical File (bytes):
2,626,676,296.
Status: Processing
284 Identify Duplicates Storage Pool FILEPOOL, Volume None, Files
Processed: 4543, Duplicate Extents Found: 364,
Duplicate Bytes Found: 7,238,123,
Current Physical File (bytes): None.
Status: Idle
ATENÇÃO: O processo de ‘RECLAIM’ só poderá ser executado após um operação de backup do storage pool (‘BACKUP STGPOOL’ para um outro stgpool que não esteja com o parâmetro ‘dedup’ = yes. Essa é uma boa prática que visa evitar perda de dados em casos onde hajam ‘falsos positivos’ durante o processo de indentificação de redundâncias. Se você quiser desabilitar esse comportamento para que o ‘RECLAIM’ aconteça mesmo sem o backup do storagepool é possível utilizar-se da opção ‘SETOPT DEDUPREQUIRESBACKUP NO’
3. Após a janela estipulada para o processamento de identificação de redundâncias terminar, ajuste o parâmetro de processos do comando IDENTIFY DUPLICATES para zero.
Exemplo:
IDENTIFY DUPLICATES FILEPOOL NUMPR=0
4. Uma vez idenficadas as redundâncias, execute um operação de ‘RECLAIM’ no storage pool para que seja feita a consolidação do espaço liberado no passo anterior, com isso os volumes vazios serão liberados para a reutilização. O comando ‘RECLAIM STGPOOL’.
Exemplo:
RECLAIM STGPOOL DDPOOL
Verificando os ganhos com ‘dedup’ no Tivoli Storage Manager 6.X
Para verificar os ganhos obtidos, use o comando query stgpool antes e depois do processo de ‘reclaim’ (passo 4 da seçãoanterior)
Antes:
TSM> Q STGPOOL
Storage Device Estimated Pct Pct High Low Next Stora-
Pool Name Class Name Capacity Util Migr Mig Mig ge Pool
- TSM version 5 and 6 (the below output is from version 5)
tsm: SERVER1> SELECT * FROM db
AVAIL_SPACE_MB: 85000
CAPACITY_MB: 80000
MAX_EXTENSION_MB: 5000
MAX_REDUCTION_MB: 11808
PAGE_SIZE: 4096
USABLE_PAGES: 20480000
USED_PAGES: 16856530
PCT_UTILIZED: 82.3
MAX_PCT_UTILIZED: 85.2
PHYSICAL_VOLUMES: 17
BUFF_POOL_PAGES: 65536
TOTAL_BUFFER_REQ: 5555310
CACHE_HIT_PCT: 98.6
CACHE_WAIT_PCT: 0.0
BACKUP_RUNNING: NO
BACKUP_TYPE:
NUM_BACKUP_INCR: 0
BACKUP_CHG_MB:
BACKUP_CHG_PCT: 14.5
LAST_BACKUP_DATE: 2007-07-22 16:11:23.000000
DB_REORG_EST:
DB_REORG_EST_TIME:
TSM database utilization (%)
- TSM version 6
tsm: SERVER1> SELECT CAST(SUM(100-(free_space_mb*100) / tot_file_system_mb) AS DECIMAL(3,1)) AS PCT_UTILIZED FROM db
- TSM version 5
tsm: SERVER1> SELECT pct_utilized FROM db
PCT_UTILIZED
------------
82.3
TSM log recovery utilization (%)
- TSM version 6 (active log)
tsm: SERVER1> SELECT CAST(SUM(used_space_mb *100 / total_space_MB) AS DECIMAL(3,1)) AS MAX_PCT_UTILIZED FROM log
- TSM version 5
tsm: SERVER1> SELECT pct_utilized FROM log
PCT_UTILIZED
------------
0.0
Selecting specific columns from db table
- TSM version 6
tsm: SERVER1> SELECT tot_file_system_mb, used_db_space_mb, free_space_mb, -
(SELECT CAST(SUM(100-(free_space_mb*100) / tot_file_system_mb) AS DECIMAL(3,1)) AS PCT_UTILIZED FROM db), -
last_backup_date FROM db
TOT_FILE_SYSTEM_MB USED_DB_SPACE_MB FREE_SPACE_MB PCT_UTILIZED LAST_BACKUP_DATE
------------------- ----------------- -------------- ------------- ---------------------------
215040 169634 43035 80.0 2012-09-02 08:00:13.000000
- TSM version 5
tsm: SERVER1> SELECT avail_space_mb,capacity_mb, pct_utilized, max_pct_utilized,last_backup_date FROM db
AVAIL_SPACE_MB CAPACITY_MB PCT_UTILIZED MAX_PCT_UTILIZED LAST_BACKUP_DATE
-------------- ----------- ------------ ---------------- ------------------
85000 80000 82.3 85.2 2007-07-22
16:11:23.000000
Number of database volumes not synchronized
- TSM version 5 only
tsm: SERVER1> SELECT COUNT(*) FROM dbvolumes WHERE ( NOT copy1_status='Synchronized' OR NOT -
copy2_status='Synchronized' OR NOT copy3_status='Synchronized' )
Unnamed[1]
-----------
0
Number of log volumes not synchronized
- TSM version 5 only
tsm: SERVER1> SELECT COUNT(*) FROM logvolumes WHERE ( NOT copy1_status='Synchronized' OR NOT -
copy2_status='Synchronized' OR NOT copy3_status='Synchronized' )
Unnamed[1]
-----------
0
Nodes
Number of nodes
- TSM version 5 and 6
tsm: SERVER1> SELECT SUM(num_nodes) FROM domains
Unnamed[1]
-----------
165
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM nodes
Unnamed[1]
-----------
165
Number of nodes per domain
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name,num_nodes FROM domains
DOMAIN_NAME NUM_NODES
------------------ -----------
AIX 47
EXCHANGE 4
NT 69
VMWARE 10
Number of nodes per platform
- TSM version 5 and 6
tsm: SERVER1> SELECT platform_name,COUNT(*) FROM nodes GROUP BY platform_name
PLATFORM_NAME Unnamed[2]
---------------- -----------
AIX 20
Linux86 36
TDP Domino 2
TDP MSSQL Win32 1
WinNT 100
Nodes locked
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name FROM nodes WHERE locked='YES'
NODE_NAME
------------------
NODE_TEMP
NODE99
Number of nodes locked
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM nodes WHERE locked='YES'
Unnamed[1]
-----------
2
Number of nodes sessions
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM sessions WHERE session_type='Node'
Unnamed[1]
-----------
3
TSM clients version
- TSM version 6
tsm: SERVER1> SELECT node_name, platform_name, domain_name, TRIM(CHAR(client_version))||'.'||TRIM(CHAR(client_release))||'.'||-
TRIM(CHAR(client_level))||'-'||TRIM(CHAR(client_sublevel)) as "TSM Client Version", DATE(lastacc_time) AS LASTACC_TIME FROM nodes
- TSM version 5
tsm: SERVER1> SELECT node_name, platform_name, domain_name, VARCHAR(client_version)||'.'||VARCHAR(client_release)||'.'||-
VARCHAR(client_level)||'-'||VARCHAR(client_sublevel) as "TSM Client Version", DATE(lastacc_time) AS LASTACC_TIME FROM nodes
NODE_NAME PLATFORM_NAME DOMAIN_NAME TSM Client Version LASTACC_TIME
-------------- ---------------- --------------- ------------------ --------------
NODE_01 WinNT STANDARD 6.2.3-1 2012-03-29
NODE_02 AIX STANDARD 6.2.3-1 2012-03-29
NODE_03 TDP Domino AIX STANDARD 5.4.1-2 2012-03-28
NODE_04 TDP Dom LINUXZ64 STANDARD 6.1.4-0 2012-03-29
NODE_05 Linux390 STANDARD 6.1.0-2 2012-02-20
NODE_06 TDP Domino AIX STANDARD 5.4.1-2 2012-03-29
NODE_07 AIX STANDARD 5.4.1-2 2011-09-03
NODE_08 AIX STANDARD 5.4.1-2 2011-07-17
...
List of nodes that have not accessed the tsm server in the last 90 days
- TSM version 6
tsm: SERVER1> SELECT node_name, domain_name, platform_name, TO_CHAR(lastacc_time,'YYYY-MM-DD HH24:MI') as "lastacc_time" FROM -
nodes WHERE DAYS(current_date)-DAYS(lastacc_time)>90 ORDER BY "lastacc_time"
- TSM version 5
tsm: SERVER1> SELECT node_name, domain_name, platform_name, SUBSTR(CHAR(lastacc_time),1,16) as "lastacc_time" FROM nodes WHERE -
lastacc_time<timestamp(current_date)-(90)days ORDER BY "lastacc_time"
NODE_NAME DOMAIN_NAME PLATFORM_NAME lastacc_time
--------------- --------------- ---------------- ------------------
NODE_123 PROD AIX 2011-02-16 11:41
NODE_234 PROD WinNT 2011-02-16 13:29
NODE_345 PROD DB2/AIX64 2011-02-16 14:06
...
Filespaces
List filespaces that have not been backed up in the last 365 days
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name,filespace_name, filespace_type,DATE(backup_end) as DATE FROM filespaces WHERE -
DAYS(current_date)-DAYS(backup_end)>365
- TSM version 5
tsm: SERVER1> SELECT node_name,filespace_name, filespace_type,DATE(backup_end) as DATE FROM filespaces WHERE -
backup_end<=timestamp(current_date - 365 DAYS)
NODE_NAME FILESPACE_NAME FILESPACE_TYPE DATE
------------------ ------------------ ------------------ ----------
NODE_132 /db2backup EXT3 2011-04-02
NODE_132 /db2data EXT3 2011-04-02
NODE_132 /dbwork EXT3 2011-04-02
NODE_132 /home EXT3 2011-04-02
...
Occupancy
Number of files per client
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name, SUM(num_files) FROM occupancy GROUP BY node_name
NODE_NAME Unnamed[2]
------------------ -----------
NODE01 20
NODE02 18300
NODE03 1418470
NODE04 509837
...
Space and number of files stored per client
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name,CAST(FLOAT(SUM(physical_mb)) / 1024 AS DEC(8,2))as "Space in GB", -
SUM(num_files)as"Number of files" FROM occupancy GROUP BY node_name
NODE_NAME Space in GB Number of files
------------------ ----------- ---------------
SERVER-01 1540.50 1260371
SERVER-02 9.60 130357
SERVER-03 3279.86 1318259
SERVER-04 5191.91 310516
...
Data stored per client (GB)
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name,CAST(FLOAT(SUM(logical_mb)) / 1024 AS DEC(8,2)) FROM -
occupancy GROUP BY node_name
NODE_NAME Unnamed[2]
------------------ ----------
SERVER-01 364.01
SERVER-02 227.52
SERVER 03 8338.89
SERVER-04 3341.81
...
Storage space used per filespace for a specific node
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name, filespace_name, SUM(logical_mb) AS "Total MB" FROM occupancy WHERE node_name='NODEABC' -
GROUP BY node_name, filespace_name ORDER BY "Total MB" DESC
NODE_NAME FILESPACE_NAME Total MB
------------ ------------------ ----------------
NODEABC /db2archivelogs 219588.48
NODEABC /db2offlinebackup 76585.49
NODEABC /opt/sysadm 40167.95
NODEABC /mksysbimg 6836.47
NODEABC /download 5419.22
NODEABC /opt/IBM/db2 1441.47
NODEABC /opt/IBM/ITM 440.48
NODEABC /db2onlinelogs 319.02
NODEABC /opt/IBM/ldap 211.43
NODEABC /opt 192.14
NODEABC /home/idsccmdb 175.37
NODEABC /usr 149.52
NODEABC /opt/Tivoli 96.63
NODEABC /opt/VSA 84.23
NODEABC /home 69.54
NODEABC /opt/IBM/SCM 66.49
...
Storage space used per filespace and per storage pool for a specific node
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name, filespace_name, stgpool_name, SUM(logical_mb) AS "Total MB" FROM occupancy WHERE node_name='NODE_XYZ' -
GROUP BY node_name, filespace_name, stgpool_name ORDER BY filespace_name
NODE_NAME FILESPACE_NAME STGPOOL_NAME Total MB
----------- ------------------ --------------- --------------------
NODE_XYZ /DRMS S3584ARCH 1173.44
NODE_XYZ /LDAPDB2B S3584ARCH 8015.72
NODE_XYZ /LDAPDB2B ARCHIVEPOOL 198.85
NODE_XYZ /db/db2ldap/db2ba- S3584 1024.86
NODE_XYZ /db/dbawork S3584 0.66
NODE_XYZ /home S3584 75.36
NODE_XYZ /home BACKUPPOOL 6.36
NODE_XYZ /home/db2ldap S3584 3.97
NODE_XYZ /mksysbimg S3584 10045.50
NODE_XYZ /notes/data S3584 1099.20
NODE_XYZ /opt/lotus S3584 2.74
NODE_XYZ /tmp S3584 0.30
NODE_XYZ /usr S3584 0.98
Storage space used per filespace and per backup/archive type for a specific node
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name, filespace_name, type, SUM(logical_mb) AS "Total MB" FROM occupancy WHERE node_name='NODE_XYZ' -
GROUP BY node_name, filespace_name, type ORDER BY filespace_name
NODE_NAME FILESPACE_NAME TYPE Total MB
---------- ------------------ ---------- ----------------
NODE_XYZ /DRMS Arch 1173.44
NODE_XYZ /LDAPDB2B Arch 198.85
NODE_XYZ /LDAPDB2B Bkup 8015.72
NODE_XYZ /db/db2ldap/db2ba- Bkup 1024.86
NODE_XYZ /db/dbawork Bkup 0.66
NODE_XYZ /home Bkup 75.36
NODE_XYZ /home/db2ldap Bkup 3.97
NODE_XYZ /mksysbimg Bkup 10045.50
NODE_XYZ /notes/b01acidb00- Bkup 1099.20
NODE_XYZ /opt/lotus Bkup 2.74
NODE_XYZ /tmp Bkup 0.30
NODE_XYZ /usr Bkup 0.98
Schedules
Nodes without associated schedules
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name FROM nodes WHERE node_name NOT IN (SELECT node_name FROM associations)
NODE_NAME
------------------
NODE_TEMP
SERVER-04
...
Number of nodes without associated schedules
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM nodes WHERE node_name NOT IN (SELECT node_name FROM associations)
Unnamed[1]
-----------
12
Nodes with associated schedules
- TSM version 5 and 6
tsm: SERVER1> SELECT node_name FROM nodes WHERE node_name IN (SELECT node_name FROM associations)
NODE_NAME
------------------
NODE01
NODE02
NODE03
NODE04
Number of nodes associated per schedules
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name, schedule_name, count(*) FROM associations GROUP BY domain_name, schedule_name
DOMAIN_NAME SCHEDULE_NAME Unnamed[3]
------------------ ------------------ -----------
AIX DAILY 24
AIX WEEKLY 17
LINUX DAILY 38
...
Information about schedules and associations (2 tables)
- TSM version 5 and 6
tsm: SERVER1> SELECT associations.domain_name, associations.node_name, associations.schedule_name, -
client_schedules.description, client_schedules.action, client_schedules.options, -
client_schedules.objects, client_schedules.starttime FROM associations associations, -
client_schedules client_schedules WHERE associations.domain_name = client_schedules.domain_name -
AND associations.schedule_name = client_schedules.schedule_name ORDER BY associations.domain_name, -
associations.node_name, associations.schedule_name
DOMAIN_NAME: AIX
NODE_NAME: NODE01
SCHEDULE_NAME: Schedule1
DESCRIPTION: Backup Online of database XX
ACTION: COMMAND
OPTIONS:
OBJECTS: /opt/tivoli/tsm/scripts/bkp_weekly.sh
STARTTIME: 21:15:00
DOMAIN_NAME: AIX
NODE_NAME: NODE01
SCHEDULE_NAME: Schedule2
DESCRIPTION: Backup Incremental of Operating System
ACTION: INCREMENTAL
OPTIONS:
OBJECTS: /usr/ /opt/ /var/ /etc/ /home/
STARTTIME: 09:00:00
...
Some cool information about node, associations and schedules
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name, set_name, class_name, defaultmc FROM mgmtclasses
DOMAIN_NAME SET_NAME CLASS_NAME DEFAULTMC
------------------ ------------------ ------------------ ------------------
AIX AIX DAILY Yes
AIX AIX WEEKLY No
AIX ACTIVE DAILY Yes
AIX ACTIVE WEEKLY No
LINUX LINUX ARCH1 Yes
LINUX ACTIVE ARCH1 Yes
...
Management classes per domain of policy set ACTIVE
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name, class_name, defaultmc FROM mgmtclasses WHERE set_name='ACTIVE'
DOMAIN_NAME CLASS_NAME DEFAULTMC
------------------ ------------------ ------------------
AIX DAILY Yes
AIX WEEKLY No
LINUX ARCH1 Yes
...
Default management class per domain of policy set ACTIVE
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name, class_name, defaultmc FROM mgmtclasses WHERE set_name='ACTIVE' AND defaultmc='Yes'
DOMAIN_NAME CLASS_NAME DEFAULTMC
------------------ ------------------ ------------------
AIX AIX Yes
LINUX ARCH1 Yes
...
Management classes of a specifc domain of policy set ACTIVE
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name, class_name, defaultmc FROM mgmtclasses WHERE set_name='ACTIVE' AND domain_name='AIX'
DOMAIN_NAME CLASS_NAME DEFAULTMC
------------------ ------------------ ------------------
AIX DAILY Yes
AIX WEEKLY No
...
Management classes of policy set ACTIVE that a specific node can use
- TSM version 5 and 6
tsm: SERVER1> SELECT a.domain_name, a.node_name, b.class_name, b.defaultmc FROM nodes a, mgmtclasses b WHERE -
a.domain_name=b.domain_name AND set_name='ACTIVE' AND node_name='NODE1'
DOMAIN_NAME NODE_NAME CLASS_NAME DEFAULTMC
------------------ ------------------ ------------------ ------------------
AIX NODE1 DAILY Yes
AIX NODE1 WEEKLY No
...
Management classes with backup copy group information
- TSM version 5 and 6
tsm: SERVER1> SELECT -
mgmtclasses.domain_name, mgmtclasses.set_name, mgmtclasses.class_name, mgmtclasses.defaultmc, -
bu_copygroups.verexists, bu_copygroups.verdeleted, bu_copygroups.retextra, bu_copygroups.retonly, bu_copygroups.destination -
FROM -
mgmtclasses mgmtclasses, bu_copygroups bu_copygroups -
WHERE -
mgmtclasses.domain_name = bu_copygroups.domain_name AND -
mgmtclasses.set_name = bu_copygroups.set_name AND -
mgmtclasses.class_name = bu_copygroups.class_name AND -
mgmtclasses.set_name='ACTIVE' -
ORDER BY -
mgmtclasses.domain_name, mgmtclasses.set_name, mgmtclasses.class_name
DOMAIN_NAME SET_NAME CLASS_NAME DEFAULTMC VEREXISTS VERDELETED RETEXTRA RETONLY DESTINATION
------------- ----------- -------------- ------------ --------- ---------- -------- -------- -------------
STANDARD ACTIVE STANDARD Yes 2 1 30 60 BACKUPPOOL
AIX ACTIVE MC_AIX_TDP No NOLIMIT NOLIMIT 60 60 BACKUPPOOL
AIX ACTIVE LOGBKUP No 1 1 1 90 BACKUPPOOL
AIX ACTIVE MC_AIX_DAILY YES 1 0 14 30 S3584
...
Management classes with archive copy group information
- TSM version 5 and 6
tsm: SERVER1> SELECT -
mgmtclasses.domain_name, mgmtclasses.set_name, mgmtclasses.class_name, mgmtclasses.defaultmc, -
ar_copygroups.retver, ar_copygroups.destination -
FROM -
mgmtclasses mgmtclasses, ar_copygroups ar_copygroups -
WHERE -
mgmtclasses.domain_name = ar_copygroups.domain_name AND -
mgmtclasses.set_name = ar_copygroups.set_name AND -
mgmtclasses.class_name = ar_copygroups.class_name AND -
mgmtclasses.set_name='ACTIVE' -
ORDER BY -
mgmtclasses.domain_name, mgmtclasses.set_name, mgmtclasses.class_name
DOMAIN_NAME SET_NAME CLASS_NAME DEFAULTMC RETVER DESTINATION
--------------- -------------- ------------------ --------------- -------- ----------------
STANDARD ACTIVE STANDARD Yes 365 ARCHIVEPOOL
AIX ACTIVE FOREVER No NOLIMIT S3584
AIX ACTIVE MC_AIX_WEEKLY Yes 30 BACKUPPOOL
WINDOWS ACTIVE MC_WIN_WEEKLY Yes 30 BACKUPPOOL
...
Copy Groups
Destination pool of each management class (type: archive copy group)
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name, class_name, destination FROM ar_copygroups
DOMAIN_NAME CLASS_NAME DESTINATION
------------------ ------------------ ------------------
AIX MC_AIX_DAILY AIX_DAILY
AIX MC_AIX_MONTHLY AIX_MONTHLY
AIX MC_AIX_NOLIMIT AIX_NOLIMIT
...
Destination pool of each management class (type: backup copy group)
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name, class_name, destination FROM bu_copygroups WHERE set_name='ACTIVE'
DOMAIN_NAME CLASS_NAME DESTINATION
------------------ ------------------ ------------------
AIX MC_AIX_DAILY AIX_DAILY
AIX MC_AIX_TDP AIX_DAILY
...
Some information about archive copy group
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name,set_name,class_name,retver,destination FROM ar_copygroups
DOMAIN_NAME SET_NAME CLASS_NAME RETVER DESTINATION
------------------ ------------------ ------------------ -------- ------------------
AIX ACTIVE MC_AIX_DAILY 7 AIX_DAILY
AIX ACTIVE MC_AIX_MONTHLY 365 AIX_MONTHLY
AIX ACTIVE MC_AIX_NOLIMIT NOLIMIT AIX_NOLIMIT
AIX STANDARD MC_AIX_DAILY 7 AIX_DAILY
AIX STANDARD MC_AIX_MONTHLY 365 AIX_MONTHLY
AIX STANDARD MC_AIX_NOLIMIT NOLIMIT AIX_NOLIMIT
...
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name,set_name,class_name,retver,destination FROM ar_copygroups -
WHERE set_name='ACTIVE'
DOMAIN_NAME SET_NAME CLASS_NAME RETVER DESTINATION
------------------ ------------------ ------------------ -------- ------------------
AIX ACTIVE MC_AIX_DAILY 7 AIX_DAILY
AIX ACTIVE MC_AIX_MONTHLY 365 AIX_MONTHLY
AIX ACTIVE MC_AIX_NOLIMIT NOLIMIT AIX_NOLIMIT
...
Some information about backup copy group
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name,set_name,class_name,verexists,verdeleted,retextra,retonly,destination -
FROM bu_copygroups
DOMAIN_NAME SET_NAME CLASS_NAME VEREXISTS VERDELETED RETEXTRA RETONLY DESTINATION
------------- ------------ --------------- --------- ---------- -------- -------- --------------
AIX ACTIVE MC_AIX_DAILY 2 1 7 15 AIX_DAILY
AIX ACTIVE MC_AIX_TDP NOLIMIT NOLIMIT 15 15 AIX_DAILY
AIX STANDARD MC_AIX_DAILY 2 1 7 15 AIX_DAILY
AIX STANDARD MC_AIX_TDP NOLIMIT NOLIMIT 15 15 AIX_DAILY
...
- TSM version 5 and 6
tsm: SERVER1> SELECT domain_name,set_name,class_name,verexists,verdeleted,retextra,retonly,destination -
FROM bu_copygroups WHERE set_name='ACTIVE'
DOMAIN_NAME SET_NAME CLASS_NAME VEREXISTS VERDELETED RETEXTRA RETONLY DESTINATION
------------- ------------ --------------- --------- ---------- -------- -------- --------------
AIX ACTIVE MC_AIX_DAILY 2 1 7 15 AIX_DAILY
AIX ACTIVE MC_AIX_TDP NOLIMIT NOLIMIT 15 15 AIX_DAILY
...
Activity Log
Search in the activity log for missed schedules in the last 2 hours
- TSM version 5 and 6
tsm: SERVER1> SELECT date_time,message FROM actlog WHERE originator='SERVER' AND -
message LIKE'ANR2578W%' AND date_time>=current_timestamp-2 hours
DATE_TIME MESSAGE
------------------ ------------------
2007-07-26 ANR2578W Schedule
14:00:01.000000 ORACLE_HOME in
domain AIX for
node SERVER-1
has missed its
scheduled start
up window.
Search in the activity log for messages with Error severity in the last 1 hour
- TSM version 5 and 6
tsm: SERVER1> SELECT date_time,message FROM actlog WHERE originator='SERVER' AND severity='E' AND -
date_time>current_timestamp-1 hours
DATE_TIME MESSAGE
------------------ ------------------
2007-07-27 ANR2034E QUERY
10:22:17.000000 SPACETRIGGER: No
match found using
this criteria.(
SESSION: 252982)
Search in the activity log for successful, missed or failed schedules in the last 24 hours
- TSM version 5 and 6
tsm: SERVER1> SELECT date_time,severity,message FROM actlog WHERE originator='SERVER' AND -
( message LIKE'ANR2507I%' OR -
message LIKE'ANR2751I%' OR -
message LIKE'ANR2578W%' OR -
message LIKE'ANR2579E%') AND -
date_time>current_timestamp-24 hours
DATE_TIME SEVERITY MESSAGE
------------------ ------------------ -------------------
2007-07-25 I ANR2507I Schedule
00:14:48.000000 IN_APP1 for domain
NT started at
07/24/07 22:30:00
for node SERVER-2
completed
successfully at
07/25/07
00:14:48.(SESSIO-
N: 233833)
2007-07-25 E ANR2579E Schedule
00:30:03.000000 INC_APP2 in domain
NT for node
SERVER-3
failed (return
code 1).(SESSION:
234285)
2007-07-25 W ANR2578W Schedule
00:40:01.000000 ORACLE_HOME in
domain AIX for
node SERVER-1
has missed its
scheduled start
up window.
Search in the activity log for a specific ANR in the last 24 hours
- TSM version 5 and 6
tsm: SERVER1> SELECT date_time,severity,message from actlog WHERE message LIKE'ANR8438I%' -
and date_time>current_timestamp-24 hours
DATE_TIME SEVERITY MESSAGE
------------------ ------------------ ------------------
2007-07-27 I ANR8438I CHECKOUT
09:21:19.000000 LIBVOLUME for
volume R00135L3
in library 3584
completed
successfully.(SE-
SSION: 252515,
PROCESS: 470)
2007-07-27 I ANR8438I CHECKOUT
09:21:28.000000 LIBVOLUME for
volume R00049L3
in library 3584
completed
successfully.(SE-
SSION: 252515,
PROCESS: 471)
Summary
Summary of archive operations in the last 7 days
- TSM version 5 and 6
tsm: SERVER1> SELECT cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) -
as "Archive data in GB" FROM summary WHERE -
activity='ARCHIVE' and DAYS(current_timestamp)-DAYS(end_time)<=7
- TSM version 5
tsm: SERVER1> SELECT cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) -
as "Archive data in GB" FROM summary WHERE -
activity='ARCHIVE' and end_time>timestamp(current_date)-(7)days
Archive data in GB
--------------------
14508.09
Summary of backup operations in a specific range
- TSM version 6
tsm: SERVER1> SELECT CAST(FLOAT(SUM(bytes))/1024/1024/1024 AS DEC(8,2)) -
AS "Backed up data in GB" FROm summary WHERE activity='ARCHIVE' -
AND start_time >{'2007-06-01 00:00:00'} AND start_time <{'2007-07-01 00:00:00'}
- TSM version 5
tsm: SERVER1> SELECT CAST(FLOAT(SUM(bytes))/1024/1024/1024 AS DEC(8,2)) -
AS "Backed up data in GB" FROm summary WHERE activity='BACKUP' -
AND start_time >{ts '2007-06-01 00:00:00'} AND start_time <{ts '2007-07-01 00:00:00'}
Backed up data in GB
--------------------
38829.70
Statistics of archive, backup, restore and retrieve operations per node in the last 7 days (GB)
- TSM version 6
tsm: SERVER1> SELECT entity, activity, CAST(FLOAT(SUM(bytes)) / 1024 / 1024 / 1024 AS DECIMAL(8,2)) -
FROM summary WHERE DAYS(current_timestamp)-DAYS(end_time)>=7 and ( activity='ARCHIVE' OR -
activity='BACKUP' OR activity='RESTORE' OR activity='RETRIEVE' ) GROUP BY entity, activity
- TSM version 5
tsm: SERVER1> SELECT entity, activity, CAST(FLOAT(SUM(bytes)) / 1024 / 1024 / 1024 AS DECIMAL(8,2)) -
FROM summary WHERE end_time>current_timestamp-(7)DAY and ( activity='ARCHIVE' OR -
activity='BACKUP' OR activity='RESTORE' OR activity='RETRIEVE' ) GROUP BY entity, activity
ENTITY ACTIVITY Unnamed[3]
------------------ ------------------ ----------
SERVER-01 ARCHIVE 81.14
SERVER-01 BACKUP 261.68
SERVER-01 RESTORE 2.91
SERVER-02 ARCHIVE 171.51
SERVER-02 BACKUP 0.00
SERVER-03 ARCHIVE 17.64
SERVER-04 ARCHIVE 168.32
SERVER-04 BACKUP 530.77
...
Total of backup and archive per node in a specific date
- TSM version 6
tsm: SERVER1> SELECT entity, CAST(FLOAT(SUM(bytes)) / 1024 / 1024 / 1024 AS DECIMAL(8,2)) as "GB" -
FROM summary WHERE ( activity='ARCHIVE' OR activity='BACKUP' ) AND -
start_time >{'2011-09-21 00:00:00'} AND start_time <{'2011-09-22 00:00:00'} -
GROUP BY entity ORDER BY "GB"
- TSM version 5
tsm: SERVER1> SELECT entity, CAST(FLOAT(SUM(bytes)) / 1024 / 1024 / 1024 AS DECIMAL(8,2)) as "GB" -
FROM summary WHERE ( activity='ARCHIVE' OR activity='BACKUP' ) AND -
start_time >{ts '2011-09-21 00:00:00'} AND start_time <{ts '2011-09-22 00:00:00'} -
GROUP BY entity ORDER BY "GB"
ENTITY GB
------------ ----------
NODE01 0.28
NODE02 42.61
NODE03 50.64
NODE04 127.66
NODE05 128.93
NODE06 140.86
NODE07 211.90
...
Information about backup and archive sessions in a specific date
- TSM version 6
tsm: SERVER1> SELECT entity as "NODE", number as "SESSION", activity, -
TO_CHAR(CHAR(start_time),'YYYY-MM-DD HH24:MI:SS') as START_TIME, -
TRANSLATE('a bc:de:fg', DIGITS(end_time-start_time), '_______abcdefgh_____',' ') as "ELAPTIME (D HHMMSS)", -
CAST(bytes/1024/1024 AS DECIMAL(8,2)) as "MB", -
CAST(bytes/TIMESTAMPDIFF(2,CHAR(end_time-start_time))/1024/1024 AS DECIMAL(8,2)) AS "MB/s" -
FROM summary WHERE ( activity='ARCHIVE' OR activity='BACKUP' ) AND -
start_time> '2012-09-01 00:00:00' AND start_time < '2012-09-02 00:00:00'
- TSM version 5
tsm: SERVER1> SELECT entity as "NODE", number as "SESSION", activity, -
SUBSTR(CHAR(start_time),1,19) AS START_TIME, -
SUBSTR(CHAR(end_time - start_time),1,10) AS "ELAPTIME (D HHMMSS)", -
CAST(bytes/1024/1024 AS DECIMAL(8,2)) as "MB", -
CAST(FLOAT(CAST(bytes as dec(18,0))/NULLIF(CAST((end_time-start_time) seconds as decimal(18,0)),0)) / 1024 / 1024 AS DEC (18,2)) AS "MB/s" -
FROM summary WHERE ( activity='ARCHIVE' OR activity='BACKUP' ) AND -
start_time> {ts '2012-09-01 00:00:00'} AND start_time < {ts '2012-09-02 00:00:00'}
NODE SESSION ACTIVITY START_TIME ELAPTIME (D HHMMSS) MB MB/s
----------- ---------- --------------- --------------- ------------------- ---------- -----------
NODE_1 2274380 ARCHIVE 2012-09-01 0 00:00:03 39.07 13.02
01:06:48
NODE_2 2295998 ARCHIVE 2012-09-01 0 09:19:12 524510.54 15.63
05:00:53
NODE_3 2307144 ARCHIVE 2012-09-01 0 00:00:01 39.07 39.07
09:30:27
NODE_4 2307605 BACKUP 2012-09-01 0 00:00:23 604.59 26.28
10:00:03
NODE_5 2309700 BACKUP 2012-09-01 0 00:59:28 162067.22 45.42
12:00:29
NODE_6 2312822 ARCHIVE 2012-09-01 0 00:00:01 78.13 78.13
14:30:10
...
Summary of Operations in the Last 24 Hours (GB)
- TSM version 5 and 6
tsm: SERVER1> SELECT activity, cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) as -
"GB" FROM summary WHERE activity<>'TAPE MOUNT' AND activity<>'EXPIRATION' -
AND end_time>current_timestamp-24 hours GROUP BY activity
ACTIVITY GB
------------------ ----------
BACKUP 858.56
FULL_DBBACKUP 1.15
MIGRATION 496.28
RECLAMATION 652.14
STGPOOL BACKUP 496.10
Summary of Operations in a specific date (GB)
- TSM version 6
tsm: SERVER1> SELECT activity, cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) as -
"GB" FROM summary WHERE activity<>'TAPE MOUNT' AND activity<>'EXPIRATION' -
AND start_time >{'2011-09-21 00:00:00'} AND start_time <{'2011-09-22 00:00:00'} GROUP BY activity
- TSM version 5
tsm: SERVER1> SELECT activity, cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) as -
"GB" FROM summary WHERE activity<>'TAPE MOUNT' AND activity<>'EXPIRATION' -
AND start_time >{ts '2011-09-21 00:00:00'} AND start_time <{ts '2011-09-22 00:00:00'} GROUP BY activity
ACTIVITY GB
------------------ ----------
ARCHIVE 60.35
BACKUP 5743.76
FULL_DBBACKUP 73.13
MIGRATION 2704.77
RECLAMATION 701.67
RESTORE 2.48
RETRIEVE 1.81
Volumes reclaimed in the last 48 Hours
- TSM version 6
tsm: SERVER1> SELECT start_time, -
TRANSLATE('a bc:de:fg', DIGITS(end_time-start_time), '_______abcdefgh_____',' ') as "ELAPTIME", -
activity, number, entity, mediaw, successful -
FROM summary WHERE activity='RECLAMATION' AND end_time>current_timestamp-48 hours
- TSM version 6 (another way)
tsm: SERVER1> SELECT start_time, -
CAST(day(end_time-start_time) as CHAR)||' '|| -
CAST(RIGHT(DIGITS(hour (end_time-start_time)),2) as CHAR(2))||':'|| -
CAST(RIGHT(DIGITS(minute(end_time-start_time)),2) as CHAR(2))||':'|| -
CAST(RIGHT(DIGITS(second(end_time-start_time)),2) as CHAR(2)) as "ELAPTIME", -
activity, number, entity, mediaw, successful -
FROM summary WHERE activity='RECLAMATION' AND end_time>current_timestamp-48 hours
- TSM version 5
tsm: SERVER1> SELECT start_time, end_time-start_time AS ELAPTIME, activity, number, entity, mediaw, successful -
FROM summary WHERE activity='RECLAMATION' AND end_time>current_timestamp-48 hours
START_TIME ELAPTIME ACTIVITY NUMBER ENTITY MEDIAW SUCCESSFUL
----------------- ---------------------- --------------- ---------- ------------------ --------- --------------
2008-11-20 0 00:22:31.000000 RECLAMATION 704 DAILY (VOL076L4) 15 YES
12:00:15.000000
2008-11-20 0 00:23:01.000000 RECLAMATION 704 DAILY (VOL066L4) 13 YES
12:22:46.000000
2008-11-20 0 00:13:40.000000 RECLAMATION 704 WEEKLY (VOL008L4) 16 YES
12:45:48.000000
2008-11-22 0 00:40:18.000000 RECLAMATION 715 DAILY (VOL092L4) 51 YES
12:00:29.000000
2008-11-22 0 00:29:51.000000 RECLAMATION 715 DAILY (VOL100L4) 21 YES
12:40:47.000000
Volumes reclaimed in the last 48 Hours (better date format?!)
- TSM version 6
tsm: SERVER1> SELECT TO_CHAR(CHAR(start_time),'YYYY-MM-DD HH24:MI:SS') as START_TIME, -
TRANSLATE('a bc:de:fg', DIGITS(end_time-start_time), '_______abcdefgh_____',' ') as "ELAPTIME (D HHMMSS)", -
activity, number, entity, mediaw, successful -
FROM summary WHERE activity='RECLAMATION' AND end_time>current_timestamp-48 hours
- TSM version 6 (another way)
tsm: SERVER1> SELECT TO_CHAR(CHAR(start_time),'YYYY-MM-DD HH24:MI:SS') as START_TIME, -
CAST(day(end_time-start_time) as CHAR)||' '|| -
CAST(RIGHT(DIGITS(hour (end_time-start_time)),2) as CHAR(2))||':'|| -
CAST(RIGHT(DIGITS(minute(end_time-start_time)),2) as CHAR(2))||':'|| -
CAST(RIGHT(DIGITS(second(end_time-start_time)),2) as CHAR(2)) as "ELAPTIME (D HHMMSS)", -
activity, number, entity, mediaw, successful -
FROM summary WHERE activity='RECLAMATION' AND end_time>current_timestamp-48 hours
- TSM version 5
tsm: SERVER1> SELECT substr(char(start_time),1,19) AS START_TIME, -
substr(char(end_time - start_time),1,10) AS "ELAPTIME (D HHMMSS)", -
activity, number, entity, mediaw, successful FROM summary WHERE -
activity='RECLAMATION' AND end_time>current_timestamp-48 hours
START_TIME ELAPTIME (D HHMMSS) ACTIVITY NUMBER ENTITY MEDIAW SUCCESSFUL
--------------- ------------------- --------------- ---------- ------------------ ----------- --------------
2008-11-20 0 00:22:31 RECLAMATION 704 DAILY (VOL076L4) 15 YES
12:00:15
2008-11-20 0 00:23:01 RECLAMATION 704 DAILY (VOL066L4) 13 YES
12:22:46
2008-11-20 0 00:13:40 RECLAMATION 704 WEEKLY (VOL008L4) 16 YES
12:45:48
2008-11-22 0 00:40:18 RECLAMATION 715 DAILY (VOL092L4) 51 YES
12:00:29
2008-11-22 0 00:29:51 RECLAMATION 715 DAILY (VOL100L4) 21 YES
12:40:47
Admin tasks information
- TSM version 6 (the expiration process generates many different entries in the summary - almost one per node)
tsm: SERVER1> SELECT activity, TO_CHAR(CHAR(start_time),'YYYY-MM-DD HH24:MI') as START_TIME, number, -
TRANSLATE('a bc:de:fg', DIGITS(end_time-start_time), '_______abcdefgh_____',' ') as "ELAPTIME (D HHMMSS)", -
successful FROM summary WHERE -
( activity='MIGRATION' OR activity='FULL_DBBACKUP' OR activity='RECLAMATION' OR activity='STGPOOL BACKUP' ) -
AND start_time> '2012-09-01 00:00:00' AND start_time < '2012-09-02 00:00:00'
- TSM version 5
tsm: SERVER1> SELECT activity, substr(char(start_time),1,16) AS START_TIME, number, -
substr(char(end_time - start_time),1,10) AS "ELAPTIME (D HHMMSS)", successful FROM summary WHERE -
( activity='EXPIRATION' OR activity='MIGRATION' OR activity='FULL_DBBACKUP' OR activity='RECLAMATION' OR activity='STGPOOL BACKUP' ) -
AND start_time >{ts '2011-09-21 00:00:00'} AND start_time <{ts '2011-09-22 00:00:00'}
ACTIVITY START_TIME NUMBER ELAPTIME (D HHMMSS) SUCCESSFUL
------------------ ------------------ -------- ------------------- --------------
MIGRATION 2011-09-21 10:00 6028 0 03:55:49 YES
STGPOOL BACKUP 2011-09-21 10:11 6029 0 04:38:27 YES
FULL_DBBACKUP 2011-09-21 12:15 6030 0 01:24:01 YES
EXPIRATION 2011-09-21 16:00 6032 0 01:39:47 YES
RECLAMATION 2011-09-21 17:11 6033 0 01:47:02 YES
MIGRATION 2011-09-21 20:54 6034 0 03:35:50 YES
Amount of time that tapes were mounted one each drive in a specific date
- TSM version 6
tsm: SERVER1> SELECT (SUM(TIMESTAMPDIFF(4,CHAR(end_time-start_time)))) AS "TOTAL MINUTES IN USE", library_name, drive_name -
FROM summary WHERE activity='TAPE MOUNT' AND start_time> '2012-09-01 00:00:00' AND start_time < '2012-09-02 00:00:00' -
GROUP BY library_name, drive_name
- TSM version 5
tsm: SERVER1> SELECT SUM(end_time-start_time) AS "TOTAL TIME IN USE", library_name, drive_name FROM summary WHERE activity='TAPE MOUNT' AND -
start_time> {ts '2012-09-01 00:00:00'} AND start_time < {ts '2012-09-02 00:00:00'} GROUP BY library_name, drive_name
TOTAL TIME IN USE LIBRARY_NAME DRIVE_NAME
-------------------------------- ------------------ ------------------
0 22:29:21.000000 L3584 DRIVE01 (/dev/rmt1)
0 15:11:17.000000 L3584 DRIVE02 (/dev/rmt2)
0 16:21:22.000000 L3584 DRIVE03 (/dev/rmt3)
0 11:44:38.000000 L3584 DRIVE04 (/dev/rmt4)
0 19:08:07.000000 L3584 DRIVE05 (/dev/rmt5)
0 08:05:04.000000 L3584 DRIVE06 (/dev/rmt6)
0 07:50:17.000000 L3584 DRIVE07 (/dev/rmt7)
0 10:23:49.000000 L3584 DRIVE08 (/dev/rmt8)
0 08:08:03.000000 L3584 DRIVE09 (/dev/rmt9)
Amount of data migrated in the last 24 hours per storage pool
- TSM version 5 and 6
tsm: SERVER1> SELECT activity, entity, cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) as -
"GB" FROM summary WHERE activity='MIGRATION' AND end_time>current_timestamp-24 hours GROUP BY activity, entity
ACTIVITY ENTITY GB
------------------ ------------------ ----------
MIGRATION ARCHIVEPOOL 537.26
MIGRATION BACKUPPOOL 3960.22
Amount of data migrated in a specific date per storage pool
- TSM version 6
tsm: SERVER1> SELECT activity, entity, cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) as "GB" FROM summary -
WHERE activity='MIGRATION' AND start_time> '2012-09-01 00:00:00' AND start_time < '2012-09-02 00:00:00' -
GROUP BY activity, entity
- TSM version 5
tsm: SERVER1> SELECT activity, entity, cast(float(sum(bytes))/1024/1024/1024 as dec(8,2)) as "GB" FROM summary -
WHERE activity='MIGRATION' AND start_time >{ts '2012-07-16 00:00:00'} AND start_time <{ts '2012-07-17 00:00:00'} -
GROUP BY activity, entity
ACTIVITY ENTITY GB
------------------ ------------------ ----------
MIGRATION ARCHIVEPOOL 505.29
MIGRATION BACKUPPOOL 3609.84
Amount of data archived and backed up by node and by date
- TSM version 6 only
tsm: SERVER1> SELECT entity as "Node Name", DATE(start_time) as "Date", SUM(bytes) as "Total Bytes" -
FROM summary WHERE activity='BACKUP' OR activity='ARCHIVE' GROUP BY entity,DATE(start_time) ORDER BY entity,"Date" desc
Node Name Date Total Bytes
----------- ----------- -------------
NODE_1 2012-09-12 408909982
NODE_1 2012-09-11 406942599
NODE_1 2012-09-10 406942599
NODE_2 2012-09-12 38940138191
NODE_2 2012-09-11 25883895168
Volumes
Number of scratch volumes
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM libvolumes WHERE status='Scratch'
Unnamed[1]
-----------
18
Number of scratch volumes in library 3584
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM libvolumes WHERE status='Scratch' and library_name='3584'
Unnamed[1]
-----------
18
Number of scratch volumes for each library
- TSM version 5 and 6
tsm: SERVER1> SELECT library_name,COUNT(*) FROM libvolumes WHERE status='Scratch' GROUP BY library_name
LIBRARY_NAME Unnamed[2]
------------------ -----------
3584 18
Number of volumes per device class
- TSM version 5 and 6
tsm: SERVER1> SELECT devclass_name, COUNT(*) FROM volumes GROUP BY devclass_name
DEVCLASS_NAME Unnamed[2]
------------------ -----------
3584 133
DISK 6
Number of volumes per storage pool
- TSM version 5 and 6
tsm: SERVER1> SELECT stgpool_name,COUNT(*) FROM volumes GROUP BY stgpool_name
STGPOOL_NAME Unnamed[2]
------------------ -----------
AIX_ANUAL 4
AIX_ARCH1 2
AIX_ARCH2 2
AIX_DAILY 20
AIX_MONTHLY 4
AIX_NOLIMIT 1
NT_DAILY 41
NT_MONTHLY 22
Number of volumes unavailable
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM volumes WHERE access='UNAVAILABLE'
Unnamed[1]
-----------
0
Number of volumes in error state
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM volumes WHERE error_state='YES'
Unnamed[1]
-----------
1
Volumes with write or read errors in the library
- TSM version 5 and 6
tsm: SERVER1> SELECT volumes.volume_name, volumes.stgpool_name, volumes.pct_utilized, volumes.status, -
volumes.write_errors, volumes.read_errors FROM volumes, libvolumes WHERE -
volumes.volume_name=libvolumes.volume_name AND ( volumes.write_errors>0 OR volumes.read_errors>0 )
VOLUME_NAME STGPOOL_NAME PCT_UTILIZED STATUS WRITE_ERRORS READ_ERRORS
------------------ ------------------ ------------ ------------------ ------------ -----------
P10128 AIX_DAILY 27.1 FILLING 1 0
P10129 AIX_DAILY 8.2 FULL 2 0
P10135 NT_MONTHLY 22.3 FILLING 0 1
...
Number of volumes per library
- TSM version 5 and 6
tsm: SERVER1> SELECT library_name,COUNT(*) FROM libvolumes GROUP BY library_name
LIBRARY_NAME Unnamed[2]
------------------ -----------
3584 72
- TSM version 5 and 6
tsm: SERVER1> SELECT volume_name,devclass_name,stgpool_name,pct_reclaim,pct_utilized FROM volumes -
WHERE status='FULL' AND pct_utilized < 10
VOLUME_NAME DEVCLASS_NAME STGPOOL_NAME PCT_RECLAIM PCT_UTILIZED
--------------- ------------------ ---------------- ----------- ------------
R00010L3 3584 NT_DAILY 94.9 5.2
R00015L3 3584 AIX_DDAILY 99.9 0.0
R00026L3 3584 NT_DAILY 94.2 6.0
R00028L3 3584 AIX_DAILY 99.9 0.0
...
Full volumes with reclaimable space (%) greater than XX
- TSM version 5 and 6
tsm: SERVER1> SELECT volume_name,devclass_name,stgpool_name,pct_reclaim,pct_utilized FROM volumes -
WHERE status='FULL' AND pct_reclaim >90
VOLUME_NAME DEVCLASS_NAME STGPOOL_NAME PCT_RECLAIM PCT_UTILIZED
--------------- ------------------ ---------------- ----------- ------------
R00010L3 3584 NT_DAILY 94.9 5.2
R00015L3 3584 AIX_DAILY 99.9 0.0
R00026L3 3584 NT_DAILY 94.2 6.0
R00028L3 3584 AIX_DAILY 99.9 0.0
...
Full volumes with reclaimable space (%) greater than XX in the library
- TSM version 5 and 6
tsm: SERVER1> SELECT volumes.volume_name, volumes.stgpool_name, volumes.pct_utilized, volumes.pct_reclaim, -
volumes.status, volumes.access FROM volumes, libvolumes WHERE volumes.volume_name=libvolumes.volume_name -
AND volumes.status='FULL' AND volumes.pct_reclaim>80 ORDER BY stgpool_name
VOLUME_NAME STGPOOL_NAME PCT_UTILIZED PCT_RECLAIM STATUS ACCESS
------------------ ------------------ ------------ ----------- ------------------ ------------------
256AFB NIGHTLY 12.4 87.5 FULL READWRITE
295AFB NIGHTLY 11.3 88.6 FULL READWRITE
...
Volumes in a specific storage pool with reclaimable space (%) greater than XX
- TSM version 5 and 6
tsm: SERVER1> SELECT volume_name,devclass_name,stgpool_name,pct_reclaim,pct_utilized FROM volumes -
WHERE pct_reclaim>80 AND stgpool_name='OFFSITE'
VOLUME_NAME DEVCLASS_NAME STGPOOL_NAME PCT_RECLAIM PCT_UTILIZED
------------------ ------------------ ------------------ ----------- ------------
tape11 LTO OFFSITE 99.9 0.0
tape84 LTO OFFSITE 85.0 15.0
tape86 LTO OFFSITE 90.3 9.6
tape90 LTO OFFSITE 90.3 9.6
...
Number of tapes per storage pool in the library
- TSM version 5 and 6
tsm: SERVER1> SELECT volumes.stgpool_name, count(*) FROM volumes, libvolumes WHERE -
volumes.volume_name=libvolumes.volume_name GROUP BY stgpool_name
STGPOOL_NAME Unnamed[2]
------------------ -----------
AIX_DAILY 338
AIX_ARCH1 22
...
False private tapes
- TSM version 5 and 6
tsm: SERVER1> SELECT volume_name FROM libvolumes WHERE status='Private' AND last_use IS NULL AND -
volume_name NOT IN (SELECT volume_name FROM volumes )
VOLUME_NAME
---------------
TAPE01L4
TAPE01L4
TAPE01L4
TAPE01L4
Some information about volumes in the library
- TSM version 5 and 6
tsm: SERVER1> SELECT volume_name, stgpool_name, pct_utilized, pct_reclaim, status, access FROM volumes -
WHERE volume_name IN ( SELECT volume_name FROM libvolumes )
VOLUME_NAME STGPOOL_NAME PCT_UTILIZED PCT_RECLAIM STATUS ACCESS
---------------- ---------------- ------------ ----------- -------------- ------------
290AFB AIX_DAILY 59.3 41.2 FILLING READWRITE
241AFB AIX_DAILY 59.8 40.1 FULL READWRITE
265AFB NT_MONTHLY 0.4 0.1 FILLING READWRITE
365AFB AIX_ARCH1 47.7 0.0 FILLING READWRITE
...
Some information about volumes in the library - another way
- TSM version 5 and 6
tsm: SERVER1> SELECT volumes.volume_name, volumes.stgpool_name, volumes.pct_utilized, volumes.pct_reclaim, volumes.status, -
volumes.access FROM volumes, libvolumes WHERE volumes.volume_name=libvolumes.volume_name ORDER BY stgpool_name
VOLUME_NAME STGPOOL_NAME PCT_UTILIZED PCT_RECLAIM STATUS ACCESS
------------------ ------------------ ------------ ----------- ------------------ ------------------
290AFB AIX_DAILY 59.3 41.2 FILLING READWRITE
241AFB AIX_DAILY 59.8 40.1 FULL READWRITE
265AFB NT_MONTHLY 0.4 0.1 FILLING READWRITE
365AFB AIX_ARCH1 47.7 0.0 FILLING READWRITE
...
Nodes that have data stored in a specifc volume
- TSM version 5 and 6
tsm: SERVER1> SELECT DISTINCT node_name, volume_name, stgpool_name FROM volumeusage WHERE volume_name='TAPE10'
NODE_NAME VOLUME_NAME STGPOOL_NAME
------------------ ------------------ ------------------
NODE45 TAPE10 DAILY
NODE10 TAPE10 DAILY
NODE33 TAPE10 DAILY
NODE20 TAPE10 DAILY
Number of nodes that have data stored per volume
- TSM version 5 and 6
tsm: SERVER1> SELECT volume_name, stgpool_name, COUNT(DISTINCT node_name) AS "Number of Nodes" FROM -
volumeusage GROUP BY volume_name, stgpool_name
VOLUME_NAME STGPOOL_NAME Number of Nodes
----------------- ----------------- ---------------
TA0016L4 DAILY 31
TA0017L4 DAILY 1
TA0018L4 WEEKLY 30
TA0019L4 DAILY 44
TA0023L4 DAILY 1
...
Number of volumes in the library per owner (useful in a library manager environment)
- TSM version 5 and 6
tsm: SERVER1> SELECT owner,count(*) FROM libvolumes WHERE status<>'Scratch' GROUP BY owner
OWNER Unnamed[2]
------------------ -----------
library_client_1 141
library_client_2 105
library_client_3 53
library_client_4 101
library_server 257
Prepare move data to volumes with more than 70% reclaim
- TSM version 5 and 6
tsm: SERVER1> SELECT 'move data '||volume_name AS "Move data command" FROM volumes WHERE pct_reclaim>70
Move data command
------------------
move data P00046L4
move data P00094L4
move data P00096L4
move data P00104L4
move data P00108L4
move data P00111L4
move data P00113L4
Prepare move data to volumes with more than 70% reclaim, additional information
- TSM version 5 and 6
tsm: SERVER1> SELECT 'move data '||volume_name AS "Move data command", stgpool_name, status, pct_utilized,pct_reclaim FROM volumes WHERE pct_reclaim>70
Move data command STGPOOL_NAME STATUS PCT_UTILIZED PCT_RECLAIM
------------------ ------------------ ------------------ ------------ -----------
move data P00046L4 S3584 FULL 25.6 74.8
move data P00094L4 S3584 FULL 28.5 71.9
move data P00096L4 S3584ARCH FULL 29.6 70.3
move data P00104L4 S3584ARCH FULL 25.0 74.9
move data P00108L4 S3584ARCH FULL 27.3 72.6
move data P00111L4 S3584 FULL 25.0 75.0
move data P00113L4 S3584 FULL 25.9 74.1
move data P00119L4 S3584 FULL 30.3 70.1
move data P00120L4 S3584ARCH FULL 29.2 70.7
Storage Pools
Compare size and number of files between two storage pools
- TSM version 5 and 6
tsm: SERVER1> SELECT stgpool_name,SUM(logical_mb)AS Logical_MB,SUM(num_files)AS Num_Files FROM -
occupancy WHERE stgpool_name='DAILY' OR stgpool_name='COPY_DAILY' GROUP BY stgpool_name
STGPOOL_NAME LOGICAL_MB NUM_FILES
---------------- ------------------------- -----------
DAILY 1277890.99 350851
COPY_DAILY 1246583.48 350639
Utilization (%) of storage pool disk_pool
- TSM version 5 and 6
tsm: SERVER1> SELECT pct_utilized FROM stgpools WHERE stgpool_name='DISK_POOL'
PCT_UTILIZED
------------
20.9
Maximum scratch volumes allowed and number of volumes used per stgpool (needs tsm version +5.3)
- TSM version 5 and 6
tsm: SERVER1>SELECT stgpool_name,devclass,maxscratch,numscratchused FROM stgpools
STGPOOL_NAME DEVCLASS MAXSCRATCH NUMSCRATCHUSED
------------------ ------------------ ----------- --------------
DAILY 3584 1100 521
Compare amount of data between pool type primary and copy
- TSM version 5 and 6
tsm: SERVER1>
SELECT pooltype,CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(8,2)) total_data_gb, -
( -
(SELECT CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(18,2)) FROM stgpools WHERE pooltype='PRIMARY') - -
(SELECT CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(18,2)) FROM stgpools WHERE pooltype='COPY') -
) as pending_copy_gb -
FROM stgpools GROUP BY pooltype
POOLTYPE TOTAL_DATA_GB PENDING_COPY_GB
------------------ ------------- ---------------------
COPY 44985.65 1324.87
PRIMARY 46310.52 1324.87
Compare amount of data between two storage pools using occupancy table
- TSM version 5 and 6
tsm: SERVER1>
SELECT stgpool_name, CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) as total_data_gb, -
( -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='TAPEPOOL' GROUP BY stgpool_name) - -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='COPYPOOL' GROUP BY stgpool_name) -
) as pending_copy_gb -
FROM occupancy WHERE stgpool_name='TAPEPOOL' OR stgpool_name='COPYPOOL' GROUP BY stgpool_name
STGPOOL_NAME TOTAL_DATA_GB PENDING_COPY_GB
------------------ ------------- ---------------
TAPEPOOL 14639.67 1282.52
COPYPOOL 13357.15 1282.52
Compare amount of data between two storage pools using occupancy table
- TSM version 5 and 6
tsm: SERVER1>
SELECT stgpool_name, CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) as total_data_gb, -
( -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='TAPEPOOL' GROUP BY stgpool_name) - -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='COPYPOOL' GROUP BY stgpool_name) -
) as pending_copy_gb -
FROM occupancy WHERE stgpool_name='TAPEPOOL' GROUP BY stgpool_name
STGPOOL_NAME TOTAL_DATA_GB PENDING_COPY_GB
------------------ ------------- ---------------
TAPEPOOL 14639.67 1280.04
Compare amount of data between two storage pools using stgpools table
- TSM version 5 and 6
tsm: SERVER1>
SELECT stgpool_name, CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(8,2)) total_data_gb, -
( -
(SELECT CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(18,2)) FROM stgpools WHERE stgpool_name='TAPEPOOL') - -
(SELECT CAST(FLOAT(sum((est_capacity_mb/1024) * pct_utilized / 100)) AS DEC(18,2)) FROM stgpools WHERE stgpool_name='COPYPOOL') -
) as pending_copy_gb -
FROM stgpools WHERE stgpool_name='TAPEPOOL' OR stgpool_name='COPYPOOL' GROUP BY stgpool_name
STGPOOL_NAME TOTAL_DATA_GB PENDING_COPY_GB
------------------ ------------- ---------------------
TAPEPOOL 14393.41 1108.72
COPYPOOL 13284.69 1108.72
Compare amount of data and number of files between two storage pools
- TSM version 5 and 6
tsm: SERVER1>
SELECT stgpool_name, CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) as total_data_gb, -
( -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='TAPEPOOL' GROUP BY stgpool_name) - -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='COPYPOOL' GROUP BY stgpool_name) -
) as pending_copy_gb, -
SUM(num_files) as total_num_files, -
( -
(SELECT SUM(num_files) FROM occupancy WHERE stgpool_name='TAPEPOOL' GROUP BY stgpool_name) - -
(SELECT SUM(num_files) FROM occupancy WHERE stgpool_name='COPYPOOL' GROUP BY stgpool_name) -
) as pending_num_files -
FROM occupancy WHERE stgpool_name='TAPEPOOL' OR stgpool_name='COPYPOOL' GROUP BY stgpool_name
STGPOOL_NAME TOTAL_DATA_GB PENDING_COPY_GB TOTAL_NUM_FILES PENDING_NUM_FILES
------------------ ------------- --------------- --------------- -----------------
TAPEPOOL 14639.67 1280.04 12290198 224304
COPYPOOL 13359.63 1280.04 12065894 224304
Compare amount of data and number of files between (diskpool + primary pool) and copy pool
- TSM version 5 and 6
tsm: SERVER1>
SELECT stgpool_name, CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) as stg_total_data_gb, -
( -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='TAPEPOOL' GROUP BY stgpool_name) + -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='DISKPOOL' GROUP BY stgpool_name) -
) as "diskpool+tapepool_gb", -
( -
( -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='TAPEPOOL' GROUP BY stgpool_name) + -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='DISKPOOL' GROUP BY stgpool_name) -
) -
- -
(SELECT CAST(FLOAT(SUM(logical_mb))/1024 AS DEC(8,2)) FROM occupancy WHERE stgpool_name='COPYPOOL' GROUP BY stgpool_name) -
) as pending_copy_gb, -
( -
( -
(SELECT SUM(num_files) FROM occupancy WHERE stgpool_name='TAPEPOOL' GROUP BY stgpool_name) + -
(SELECT SUM(num_files) FROM occupancy WHERE stgpool_name='DISKPOOL' GROUP BY stgpool_name) -
) -
- -
(SELECT SUM(num_files) FROM occupancy WHERE stgpool_name='COPYPOOL' GROUP BY stgpool_name) -
) as pending_num_files -
FROM occupancy WHERE stgpool_name='TAPEPOOL' OR stgpool_name='DISKPOOL' OR stgpool_name='COPYPOOL' GROUP BY stgpool_name
STGPOOL_NAME STG_TOTAL_DATA_GB diskpool+tapepool_gb PENDING_COPY_GB PENDING_NUM_FILES
------------------ ----------------- -------------------- --------------- -----------------
DISKPOOL 32.46 14672.13 1309.62 237709
TAPEPOOL 14639.67 14672.13 1309.62 237709
COPYPOOL 13362.51 14672.13 1309.62 237709
Events
Administrative events information
- TSM version 5 and 6
tsm: SERVER1> SELECT * FROM events WHERE node_name IS NULL
SCHEDULED_START: 2012-04-12 06:00:00.000000
ACTUAL_START: 2012-04-12 06:00:02.000000
DOMAIN_NAME:
SCHEDULE_NAME: MIGRATE_ARCHIVEPOOL
NODE_NAME:
STATUS: Completed
RESULT: 0
REASON: Ok
COMPLETED: 2012-04-12 06:29:05.000000
SCHEDULED_START: 2012-04-12 11:00:00.000000
ACTUAL_START: 2012-04-12 11:00:04.000000
DOMAIN_NAME:
SCHEDULE_NAME: BACKUP_DB_FULL
NODE_NAME:
STATUS: Completed
RESULT: 0
REASON: Ok
COMPLETED: 2012-04-12 12:13:17.000000
Administrative events information
- TSM version 6
tsm: SERVER1> SELECT TO_CHAR(CHAR(scheduled_start),'YYYY-MM-DD HH24:MI:SS') as SCHEDULED_START, -
TRANSLATE('a bc:de:fg', DIGITS(completed - actual_start), '_______abcdefgh_____',' ') as "ELAPTIME (D HHMMSS)", -
schedule_name, status, reason FROM events WHERE node_name IS NULL
- TSM version 5
tsm: SERVER1> SELECT substr(char(scheduled_start),1,19) AS SCHEDULED_START, substr(char(completed - actual_start),1,10) AS "ELAPTIME (D HHMMSS)", -
schedule_name, status, reason FROM events WHERE node_name IS NULL
SCHEDULED_START ELAPTIME (D HHMMSS) SCHEDULE_NAME STATUS REASON
------------------ ------------------- ------------------ ---------- ---------------
2012-04-12 0 00:35:03 MIGRATE_BACKUPPOOL Completed Ok
07:00:00
2012-04-12 0 00:00:00 RECLAIM_S3584ARCH Completed Item not found
09:00:00
2012-04-12 0 00:38:28 BACKUP_DB_FULL Completed Ok
10:00:00
2012-04-12 0 00:00:00 PREPARE Completed Ok
10:30:00
2012-04-12 0 00:00:00 DELETE_VOLHIST_DBB Completed Ok
12:00:00
2012-04-12 0 01:46:19 EXPIRATION Completed Ok
13:00:00
Informaton about a specific schedule
- TSM version 6
tsm: SERVER1> SELECT TO_CHAR(CHAR(scheduled_start),'YYYY-MM-DD HH24:MI:SS') as SCHEDULED_START, -
TRANSLATE('a bc:de:fg', DIGITS(completed - actual_start), '_______abcdefgh_____',' ') as "ELAPTIME (D HHMMSS)", -
node_name, status, result FROM events WHERE domain_name='AIX' and schedule_name='INC_SCHED'
- TSM version 5
tsm: SERVER1> SELECT substr(char(scheduled_start),1,19) AS SCHEDULED_START, substr(char(completed - actual_start),1,10) AS "ELAPTIME (D HHMMSS)", -
node_name, status, result FROM events WHERE domain_name='AIX' and schedule_name='INC_SCHED'
SCHEDULED_START ELAPTIME (D HHMMSS) NODE_NAME STATUS RESULT
------------------ ------------------- ------------------ ---------- -----------
2012-04-12 NODE_1 Missed
01:00:00
2012-04-12 0 00:09:12 NODE_2 Completed 0
01:00:00
2012-04-12 0 00:09:39 NODE_3 Completed 0
01:00:00
2012-04-12 0 03:27:37 NODE_4 Completed 8
01:00:00
Return events from previous days
- TSM version 6
tsm: SERVER1> SELECT TO_CHAR(CHAR(scheduled_start),'YYYY-MM-DD HH24:MI:SS') as SCHEDULED_START, -
TRANSLATE('a bc:de:fg', DIGITS(completed - actual_start), '_______abcdefgh_____',' ') as "ELAPTIME (D HHMMSS)", -
schedule_name, status FROM events WHERE schedule_name='BACKUP_DB' AND -
scheduled_start> '2012-09-01 00:00:00' and scheduled_start< '2012-09-02 00:00:00'
- TSM version 5
tsm: SERVER1> SELECT substr(char(scheduled_start),1,19) AS SCHEDULED_START, substr(char(completed - actual_start),1,10) AS "ELAPTIME (D HHMMSS)", -
schedule_name, status FROM events WHERE schedule_name='BACKUP_DB' AND scheduled_start >= '2012-01-01' and scheduled_start>current_timestamp-168 hours
SCHEDULED_START ELAPTIME (D HHMMSS) SCHEDULE_NAME STATUS
------------------ ------------------- ------------------ ----------
2012-04-06 0 00:14:35 BACKUP_DB Completed
08:30:00
2012-04-07 0 00:21:09 BACKUP_DB Completed
08:30:00
2012-04-08 0 00:14:51 BACKUP_DB Completed
08:30:00
2012-04-09 0 00:15:31 BACKUP_DB Completed
08:30:00
2012-04-10 0 00:25:33 BACKUP_DB Completed
08:30:00
2012-04-11 0 00:33:18 BACKUP_DB Completed
08:30:00
2012-04-12 0 00:11:58 BACKUP_DB Completed
08:30:00
- TSM version 6 only
tsm: SERVER1> SELECT a."Date", a."Failed", b."Total Client Schedules", 100-((a."Failed"*100) / b."Total Client Schedules") as "Pct Completed" -
FROM -
( -
SELECT DATE(scheduled_start) as "Date",count(*) as "Failed" FROM -
events WHERE node_name IS NOT NULL AND status <> 'Completed' GROUP BY DATE(scheduled_start) -
) as a, -
( -
SELECT DATE(scheduled_start) as "Date", count(*) as -
"Total Client Schedules" FROM events WHERE node_name IS NOT NULL GROUP BY DATE(scheduled_start) -
) as b -
WHERE a."Date" = b."Date" ORDER BY "Date" desc
Date Failed Total Client Schedules Pct Completed
----------- ------------ ----------------------- --------------
2012-09-11 4 115 97
2012-09-10 8 115 94
2012-09-09 2 115 99
2012-09-08 2 115 99
Volume History
Number of full tsm db backups in the last 24 hours
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM volhistory WHERE -
type='BACKUPFULL' AND date_time>=current_timestamp-24 hours
Unnamed[1]
-----------
1
Number of full or incremental tsm db backups in the last 24 hours
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM volhistory WHERE ( type='BACKUPFULL' OR type='BACKUPINCR' ) -
AND date_time>=current_timestamp-24 hours
Unnamed[1]
-----------
2
Information about tsm db backups in the last 48 hours
- TSM version 5 and 6
tsm: SERVER1> SELECT date_time, type, backup_series, volume_seq, devclass, volume_name FROM volhistory WHERE -
( type='BACKUPFULL' OR type='BACKUPINCR' OR type='DBSNAPSHOT' ) AND date_time>=current_timestamp-48 hours
DATE_TIME TYPE BACKUP_SERIES VOLUME_SEQ DEVCLASS VOLUME_NAME
----------------- -------------- ------------- ---------- -------------- --------------
2008-11-19 BACKUPFULL 3878 1 3584 TAPE10
04:01:55.000000
2008-11-20 BACKUPFULL 3879 1 3584 TAPE48
04:02:20.000000
Backupset volumes information 1
- TSM version 5 and 6
tsm: SERVER1> SELECT DATE(date_time) AS date, volume_name, volume_seq, type, devclass FROM volhistory WHERE type='BACKUPSET'
DATE VOLUME_NAME VOLUME_SEQ TYPE DEVCLASS
---------- ------------------ ---------- ------------------ --------
2012-04-21 N00256L3 1 BACKUPSET LTO3
2012-04-22 N00274L3 1 BACKUPSET LTO3
2012-04-23 N00277L3 1 BACKUPSET LTO3
2012-04-24 N00278L3 1 BACKUPSET LTO3
Backupset volumes information 2
- TSM version 6
tsm: SERVER1> SELECT TO_CHAR(CHAR(date_time),'YYYY-MM-DD HH24:MI:SS') AS Date_Time, -
volume_name, volume_seq, type, devclass FROM volhistory WHERE type='BACKUPSET'
- TSm version 5
tsm: SERVER1> SELECT SUBSTR(CHAR(date_time),1,16) AS Date_Time, volume_name, volume_seq, type, devclass FROM volhistory WHERE type='BACKUPSET'
DATE_TIME VOLUME_NAME VOLUME_SEQ TYPE DEVCLASS
------------------ ------------------ ---------- ------------------ --------
2012-04-21 15:09 N00256L3 1 BACKUPSET LTO3
2012-04-22 14:53 N00274L3 1 BACKUPSET LTO3
2012-04-23 15:08 N00277L3 1 BACKUPSET LTO3
2012-04-24 15:04 N00278L3 1 BACKUPSET LTO3
Backupset volumes information 3
- TSM version 5 and 6
tsm: SERVER1> SELECT DATE(date_time), volume_name, volume_seq, type, devclass, command FROM volhistory WHERE type='BACKUPSET'
Unnamed[1] VOLUME_NAME VOLUME_SEQ TYPE DEVCLASS COMMAND
---------- ------------------ ---------- ------------------ ------------------ ------------------
2012-04-21 N00256L3 1 BACKUPSET LTO3 gen backupset
NODE_ABC
NODE_ABC_BKPSET
devc=LTO3 scr=y
ret=28 desc=BKPSET
datatype=all
wait=yes
2012-04-22 N00274L3 1 BACKUPSET LTO3 gen backupset
NODE_ABC
NODE_ABC_BKPSET
devc=LTO3 scr=y
ret=28 desc=BKPSET
datatype=all
wait=yes
DRM
Information about drm volumes
- TSM version 5 and 6
tsm: SERVER1> SELECT drmedia.volume_name, volumes.stgpool_name, drmedia.state, drmedia.voltype, volumes.status, -
volumes.pct_utilized FROM drmedia, volumes WHERE drmedia.volume_name=volumes.volume_name ORDER BY drmedia.state
VOLUME_NAME STGPOOL_NAME STATE VOLTYPE STATUS PCT_UTILIZED
------------------ ------------------ ------------------ ------------ ------------------ ------------
tape06 OFFSITE COURIERRETRIEVE CopyStgPool EMPTY 0.0
tape18 OFFSITE VAULT CopyStgPool FILLING 50.6
tape38 OFFSITE VAULT CopyStgPool FILLING 80.9
tape79 OFFSITE VAULT CopyStgPool FILLING 91.0
...
Information about drm volumes in the library
- TSM version 5 and 6
tsm: SERVER1> SELECT drmedia.volume_name, drmedia.state, drmedia.voltype FROM drmedia, libvolumes WHERE -
drmedia.volume_name=libvolumes.volume_name ORDER BY voltype
VOLUME_NAME STATE VOLTYPE
------------------ ------------------ ------------
tape48 MOUNTABLE CopyStgPool
tape59 MOUNTABLE CopyStgPool
...
Information about drm volumes in the library (another way)
- TSM version 5 and 6
tsm: SERVER1> SELECT volume_name, state, voltype FROM drmedia WHERE -
volume_name IN ( SELECT volume_name FROM libvolumes ) ORDER BY voltype
VOLUME_NAME STATE VOLTYPE
------------------ ------------------ ------------
tape48 MOUNTABLE CopyStgPool
tape59 MOUNTABLE CopyStgPool
...
Information about drm volumes in the library with state different from "MOUNTABLE"
- TSM version 5 and 6
tsm: SERVER1> SELECT drmedia.volume_name, drmedia.state, drmedia.voltype FROM drmedia, libvolumes WHERE -
drmedia.volume_name=libvolumes.volume_name AND drmedia.state<>'MOUNTABLE'
VOLUME_NAME STATE VOLTYPE
------------------ ------------------ ------------
tape36 COURIER CopyStgPool
tape82 COURIER CopyStgPool
...
DRM volumes with tsm db backups
- TSM version 5 and 6
tsm: SERVER1> SELECT volume_name, state, upd_date, location, voltype FROM drmedia -
WHERE voltype='DBBackup' OR voltype='DBSnapshot'
VOLUME_NAME STATE UPD_DATE LOCATION VOLTYPE
------------------ ------------------ ------------------ ------------------ ------------
tape10 VAULT 2008-03-05 Iron Mountain DBBackup
11:00:00.000000
tape15 VAULT 2008-03-04 Iron Mountain DBBackup
11:00:00.000000
tape45 VAULT 2008-03-03 Iron Mountain DBBackup
...
Number of Volumes per DRM State
- TSM version 5 and 6
tsm: SERVER1> SELECT state,count(*) as "Number of volumes" FROM drmedia GROUP BY state
STATE Number of volumes
------------------ -----------------
COURIERRETRIEVE 26
MOUNTABLE 2
VAULT 76
VAULTRETRIEVE 1
Sessions
Number of nodes sessions
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM sessions WHERE session_type='Node'
Unnamed[1]
-----------
16
Number of nodes sessions in Media Wait state
- TSM version 5 and 6
tsm: SERVER1> SELECT COUNT(*) FROM sessions WHERE session_type='Node' AND state='MediaW'
Unnamed[1]
-----------
1
Nodes sessions in Media Wait state
- TSM version 5 and 6
tsm: SERVER1> SELECT client_name, session_id, start_time, state, mount_point_wait, input_mount_wait, input_vol_wait -
FROM sessions WHERE state='MediaW'
CLIENT_NAME SESSION_ID START_TIME STATE MOUNT_POINT_WAIT INPUT_MOUNT_WAIT INPUT_VOL_WAIT
------------- ----------- ------------------ --------- ------------------ ------------------ ----------------
NODE23 1577742 2008-11-21 MediaW ,F00827,81
11:26:03.000000
NODE15 1581236 2008-11-21 MediaW
11:37:06.000000
Nodes using tapes (drives)
- TSM version 5 and 6
tsm: SERVER1> SELECT client_name, session_id, start_time, state, bytes_sent, bytes_received, input_vol_access, output_vol_access -
FROM sessions WHERE ( input_vol_access is not NULL OR output_vol_access is not NULL )
CLIENT_NAME SESSION_ID START_TIME STATE BYTES_SENT BYTES_RECEIVED INPUT_VOL_ACCESS OUTPUT_VOL_ACCESS
------------- ----------- ------------------ --------- -------------- ------------------ ------------------ ------------------
NODE10 1578627 2008-11-21 RecvW 476 2913518005 ,3M0922,1214
08:37:41.000000
NODE25 1578776 2008-11-21 RecvW 540 123087561 ,F01091,117
08:46:52.000000
Information about sessions from a specific node
- TSM version 5 and 6
tsm: SERVER1> SELECT session_id, start_time, commmethod, state, wait_seconds, CAST(bytes_sent/1024/1024 AS DEC(8,2)) AS "MB_Sent", -
CAST(bytes_received/1024/1024 AS DEC(8,2)) AS "MB_Rcvd", mount_point_wait FROM sessions WHERE client_name='MY_NODE'
SESSION_ID START_TIME COMMMETHOD STATE WAIT_SECONDS MB_Sent MB_Rcvd MOUNT_POINT_WAIT
----------- ------------------ ---------------- ----------- ------------ ---------- ---------- ------------------
1569587 2008-11-20 Tcp/Ip RecvW 0 0.00 1648.92
10:23:37.000000
Performance of nodes sessions
- TSM version 6
tsm: SERVER1> SELECT client_name,session_id, -
TRANSLATE('a bc:de:fg', DIGITS(current_timestamp-start_time), '_______abcdefgh_____',' ') as "ELAPTIME (D HHMMSS)", commmethod, state, -
CAST(bytes_sent/1024/1024 AS DEC(8,2)) AS "MB_Sent", -
CAST(bytes_received/1024/1024 AS DEC(8,2)) AS "MB_Rcvd", -
CAST(bytes_sent /TIMESTAMPDIFF(2,CHAR(current_timestamp-start_time))/1024/1024 AS DEC(8,2)) AS "Sent_MB/s", -
CAST(bytes_received/TIMESTAMPDIFF(2,CHAR(current_timestamp-start_time))/1024/1024 AS DEC(8,2)) AS "Rcvd_MB/s" -
FROM sessions WHERE session_type='Node'
- TSM version 6 (another way)
tsm: SERVER1> SELECT client_name,session_id, -
CAST(day(current_timestamp - start_time) as CHAR)||' '|| -
CAST(RIGHT(DIGITS(hour (current_timestamp - start_time)),2) as CHAR(2))||':'|| -
CAST(RIGHT(DIGITS(minute(current_timestamp - start_time)),2) as CHAR(2))||':'|| -
CAST(RIGHT(DIGITS(second(current_timestamp - start_time)),2) as CHAR(2)) as "ELAPTIME (D HHMMSS)", -
commmethod, state, -
CAST(bytes_sent/1024/1024 AS DEC(8,2)) AS "MB_Sent", -
CAST(bytes_received/1024/1024 AS DEC(8,2)) AS "MB_Rcvd", -
CAST(bytes_sent /TIMESTAMPDIFF(2,CHAR(current_timestamp-start_time))/1024/1024 AS DEC(8,2)) AS "Sent_MB/s", -
CAST(bytes_received/TIMESTAMPDIFF(2,CHAR(current_timestamp-start_time))/1024/1024 AS DEC(8,2)) AS "Rcvd_MB/s" -
FROM sessions WHERE session_type='Node'
- TSM version 5
tsm: SERVER1> SELECT client_name,session_id, current_timestamp-start_time AS ElapTime, commmethod, state, -
CAST(bytes_sent/1024/1024 AS DEC(8,2)) AS "MB_Sent", CAST(bytes_received/1024/1024 AS DEC(8,2)) AS "MB_Rcvd", -
cast((cast(bytes_sent as dec(18,0))/cast((current_timestamp-start_time) seconds as decimal(18,0))) / 1024 / 1024 AS DEC (18,2)) AS "Sent_MB/s", -
cast((cast(bytes_received as dec(18,0))/cast((current_timestamp-start_time) seconds as decimal(18,0))) / 1024 / 1024 AS DEC (18,2)) AS "Rcvd_MB/s" -
FROM sessions WHERE session_type='Node'
CLIENT_NAME SESSION_ID ELAPTIME COMMMETHOD STATE MB_Sent MB_Rcvd Sent_MB/s Rcvd_MB/s
------------- ----------- --------------------- --------------- --------- ---------- ---------- ------------ -------------
NODE10 76499 0 20:53:40.000000 Tcp/Ip Run 0.03 402998.64 0.00 5.35
NODE34 76500 0 20:53:40.000000 Tcp/Ip RecvW 0.03 398363.23 0.00 5.29
NODE28 76501 0 20:52:18.000000 Tcp/Ip RecvW 0.02 370801.49 0.00 4.93
NODE79 76502 0 20:52:01.000000 Tcp/Ip Run 0.03 443600.35 0.00 5.90
...