Programação de Sistemas Memória secundária por discos Programação de Sistemas Discos : 1/45 Introdução (1) Os discos representam hoje as unidades de memória secundária mais usadas, caracterizadas por Grandes capacidade de armazenamento de ficheiros. Em 2008 disco rígido magnético interno suporta 160 GB. CD suporta 700 MB. DVD suporta 4.7 GB por superfície e por nível. Custo reduzido (na ordem de 100 EUR por disco rígido IDE de 120MB), Tempos de acesso superiores às memórias centrais (velocidades de transferência na ordem de 80MB/seg) Os discos são catalogados de acordo com método de armazenamento Magnéticos: em banda flexível (FD- floopy disc, de capacidade reduzida 1.4MB em desuso) ou rígidos (HD- hard disk ) Ópticos: CD e DVD Programação de Sistemas Discos : 2/45
Introdução (2) Discos rígidos inventados pela IBM nos anos 50, nessa altura designados pelo nome de código Winchester, com 20 de diâmetro e capacidade de alguns MB. Outras alternativas em expansão, como memórias flash (conhecidas por Memorystick ou caneta ( pen ), devido ao seu formato) Capacidade até 16GB, velocidades de transferência de 2MB/seg Custo superior (cerca de 100 vezes preço de disco rígido) Limitação nos ciclos de apagamento e escrita (tipicamente 1 milhão durante a vida útil). Nota: limitação impõe necessidade de renovação das smartcards ao fim de 5 anos! Programação de Sistemas Discos : 3/45 Introdução (3) Evolução dos discos magnéticos Ano 1980 1985 1990 1995 2000 2000/1980 $/MB 500 100 8 0.3 0.05 1/10_000 Acesso (ms) 87 75 28 10 8 1/11 Capacidade (MB) 1 10 160 1000 9000 9_000/1 Valores recolhidos da Byte e PC Magazine Nota: prefixos indicativos de potência Kilo-10 3, Mega-10 6, Giga-10 9, Tera-10 12, Peta-10 15, Exa-10 18, Zeta-10 21 Programação de Sistemas Discos : 4/45
Arquitectura do HDD (1) Uma unidade de disco rígido é formada por 1-5 discos ( platter ) de alumínio com depósito de materal magnético, diâmetro 2.6-3.7 Informação armazenada na superfície ( surface ), eventualmente em vários camadas ( layer ). Os discos rodam a uma velocidade constante (tipicamente entre 5400 e 10000 rpm). Em cada lado do disco desloca-se uma cabeça para escrita/leitura (todos os braços deslocam-se em simultâneo). A informação é armazenada em faixas ( track ), cada uma dividida em sectores. A mesma faixa nas diferentes superfícies constitui um cilindro. Nota: 0 representado por uma região com mesma polaridade magnética, 1 por uma região com transição de polaridade magnética. Programação de Sistemas Discos : 5/45 Arquitectura do HDD (2) Bits armazenados por alteração da polarização magnética Cabeças não detectam o sentido da polarização Evita perda de sincronismo em sequências longas de 0 s ou 1 s Vários algoritmos de codificação das alterações: Frequency Modulation Modified Frequency Modulation Run Length Limited Programação de Sistemas Discos : 6/45
Arquitectura do HDD (3) O disco rígido é encerrado numa caixa Distância entre a cabeça e o disco ( clearance ) muito reduzida, na ordem de 0.5*10-6, logo a contaminação pode avariar o disco. Comparando algumas dimensões Programação de Sistemas Discos : 7/21 Arquitectura do HDD (4) Variação do perímetro modifica número de sectores por faixa. À esquerda da figura apresenta-se uma distribuição por zonas, com maior número nas zonas exteriores (discos reais podem ter 16 zonas, com variação em 4% à medida que se caminha para o exterior) Figura 5-18, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 8/45
Arquitectura do HDD (5) Para esconder detalhes, o disco é apresentado ao SO com geometria virtual, baseada em LBA-Logical Block Address. O controlador transcreve o endereço LBA para a posição real formada pelo triplo <cilindro, cabeça, sector>. Exemplo: O disco WD18300 possui Cilindros: 10601 Superfícies: 12 (2 por disco) Sectores por faixa: 281 (média) Capacidade total = 12*10601*281*512B = 17GB Nota: o espaço útil é menor, devido ao espaço reservado para partições de disco, informação de acesso (directórios, ) Programação de Sistemas Discos : 9/45 Arquitectura do CD (1) CD desenvolvido pela Philips e Sony, lidos por díodo laser de 780 nanómetros. Dimensão do diâmetro: 4 (12 cm). Informação armazenada em espiral, a partir do centro. Disco roda a velocidade variável conforme posição do leitor (530 RPM na parte inicial, no interior, até 200 RPM no exterior). Velocidade de transferência 150 KB/s (1x). Utilização em computadores levou à criação de leitores com velocidades até 52 x superiores. Capacidade de armazenamento útil de 650MB. Figura 5-20, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 10/45
Arquitectura do CD (2) Audio codificado a 16 bits, taxa de amostragem 44.1 KHz até 72 minutos (nota: duração da 9ª Sinfonia de Beethoven, alegadamente a favorita do líder da Sony). Espiral formada por ressaltos ( pit ) sobre a superfície de alumínio ( land ). 1 representado pela transição, 0 pela manutenção da formatação. Informação armazenada com codificação Reed-Solomon, para correcção de erros. Programação de Sistemas Discos : 11/45 Arquitectura do DVD (1) Disco DVD-Digital Video Disc possui mesmas dimensões físicas de um CD, mas informação é armazenada de forma distinta. Laser de 650 nanómetros, permitindo ressaltos mais densos. Pode ter 2 camadas de ressaltos, com a inferior semi-transparente por forma o laser poder ler a camada superior. Alguns DVDs são impressos nos dois lados do disco, mas para ler o outro lado é necessário virar manualmente o disco no leitor. Lados Camadas Capacidade (GB) 1 1 4.7 1 2 8.5 2 1 9.4 2 2 17 Programação de Sistemas Discos : 12/45
Arquitectura do DVD (2) Blu-ray 1, da Sony usa laser violeta de 405 nanómetros. Acabou por vencer a alternativa HD-DVD da Toshiba. Lados Camadas Capacidade (GB) 1 1 25 1 2 50 2 1 50 2 2 100 1 sem e por ser impossível patentear nomes comuns. Programação de Sistemas Discos : 13/45 Sectores de um disco (1) Tipicamente, um sector contém 3 campos: Preâmbulo (número do sector e informação sobre localização) Dados Valor de detecção/correcção de erros no sector Nos CDs os blocos são de 2352B e existem dois tipos de faixas: audio e dados. Nos discos audio o bloco só possui dados. Nos discos de dados, os dados ocupam apenas 2KB, sendo o resto do espaço usado para código de correção de erro. Figura 5-24, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 14/45
Sectores de um disco (2) Todos os sectores do HDD são etiquetados, por forma a que a cabeça de escrita/ leitura saiba a sua posição. Formas de etiquetagem: Cilindro/faixa/sector Número sequencial (usado pelos discos actuais): na faixa a ordenação é sequencial, com deslocamento entre faixas para optimizar tempo de acesso de ficheiros longos. Figura 5-25, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 15/45 Sectores de um disco (3) A partida dos sectores varia nos cilindros ( skew ) para minimizar tempo de leitura de uma sequência de sectores que atravesse vários cilindros. A variação deve ser igual a t H /t S % S, em que t H = tempo deslocamento da cabeça entre 2 cilindros consecutivos t S = tempo de leitura de um sector S = número de sectores por cilindro Ex: seja um disco com velocidade de rotação 10 000 RPM, cada cilindro contendo 300 sectores e cabeça a demorar 800 µs a deslocar-se entre dois cilindros. skew = 8*10-4 / ((60/10 000)/300) % 300 = 8*10-4 / 2*10-5 % 300 = 40 Programação de Sistemas Discos : 16/45
Sectores de um disco (4) Informação sobre disco recolhida pelo comando hdparm [root@asterix rgc]# /sbin/hdparm -i /dev/sda /dev/sda: Model=ST380013AS, FwRev=3.00, SerialNo= 4MR2G6X8 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4 BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=?16? CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488 IORDY=on/off, tpio={min:240,w/iordy:120}, tdma={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 AdvancedPM=no WriteCache=enabled Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2: ATA/ATAPI-1,2,3,4,5,6 * signifies the current active mode [root@asterix rgc]# /sbin/hdparm -tt /dev/sda1 /dev/sda1: Timing cached reads: 1972 MB in 2.00 seconds = 987.09 MB/sec Timing buffered disk reads: 170 MB in 3.00 seconds = 56.66 MB/sec [root@asterix rgc]# Programação de Sistemas Discos : 17/45 Tempo de leitura (1) O tempo de leitura de um sector de disco é dividido em. 1. Deslocamento ( seek ) da cabeça de disco. 2. Latência, de rotação do disco até o sector ficar posicionado debaixo da cabeça. 3. Varrimento do sector, que depende da velocidade de rotação do disco. T = T 1 + 2r A S + Tempo deslocamento b rn Tempo leitura r b N - velocidade rotação - número Bytes lidos - número Bytes por faixa Programação de Sistemas Discos : 18/45
Tempo de leitura (2) Tempo gasto dominado pelo posicionamento da cabeça. Nota: O número médio de faixas deslocadas entre dois acessos aleatórios varia entre N/2- para faixas extremas e N/4-para a faixa do meio. Em média, número médio de faixas deslocadas entre dois acessos aleatórios é N/3. Atrasos rotacional e tempo de transferência limitados mecanicamente pela velocidade de rotação. O posicionamento da cabeça é decidido pelo algoritmo de despacho quando estiverem pendentes vários pedidos (situação normal em sistemas operativos com multiprocessamento). Os algoritmos de posicionamento divididos pela prioridade: Ordem de chegada dos pedidos (FCFS) Minimizar o deslocamento ao pedido seguinte (SSTF) Manter sentido de deslocamento do braço (varrimentos S-SCAN,S-LOOK,...) Problema: o disco tem 40 cilindros, a cabeça está posicionada no cilindro 11 e a lista pedidos de acesso é 1,36,16,34,9 e 12. Programação de Sistemas Discos : 19/45 Algoritmos de posicionamento (1) 1. Despacho sequencial (FCFS- First Come, First Served ) Ordem seguida: 1, 36, 16, 34, 9 e 12 Distância percorrida = 1-11 + 36-1 + 16-36 + 16-34 + 9-34 + 12-9 = 111 cilindros Posição inicial Pedidos pendentes x 0 5 x x x 10 x 15 20 25 30 x x 35 V: Fácil de implementar D: Gera deslocamentos desnecessários Discos : 20/45
Algoritmos de posicionamento (2) 2. Despacho deslocamento mais curto primeiro (SSTF- Shortest Seek Time First ) Ordem seguida: 12, 9, 16, 1, 34 e 36 Distância percorrida = 12-11 + 9-12 + 16-9 + 1-16 + 34-1 + 36-34 = 61 cilindros Figura 5-27, Modern Operating Systems, A.S. Tanenbaum D: Pedidos podem ficar à espera muito tempo, por entretanto aparecerem outros mais próximos. Discos : 21/45 Algoritmos de posicionamento (3) 3. Despacho por varrimento (Scan) ou elevador: segue um sentido até ao pedido mais afastado, executando todos os pedidos pelo caminho, revertendo depois o sentido de deslocamento. Ordem seguida: 12, 16, 34, 36, 9 e 1 Distância percorrida = 12-11 + 16-12 + 34-16 + 36-34 + 9-36 + 1-9 = 60 cilindros x 0 5 x x x 10 x 15 20 25 30 x x 35 V: Tempo de espera mais uniforme nos extremos do disco. Nota: Existem 4 versões alternativas do algoritmo de elevador Discos : 22/45
Algoritmos de posicionamento (4) 3a: C-SCAN (Circular SCAN): semelhante ao SCAN serve pedidos apenas no sentido ascendente. atinge as faixas mais interna e mais externa. regressa logo a 0 quando chega à ultima faixa. Nota: pedidos pendentes armazenados numa lista circular Ordem seguida: 12, 16, 34, 36, 39, 0, 1 e 9. Distância percorrida = 12-11 + 16-12 + 34-16 + 36-34 + 39-36 + 39-0 + 1-0 + 9-1 = 76 cilindros x 0 5 x x x 10 x 15 20 25 30 x x 35 V: Tempo de espera mais uniforme. Programação de Sistemas Discos : 23/45 Algoritmos de posicionamento (5) 3b: C-LOOK: semelhante ao C-SCAN, mas não ultrapassa pedidos situados nas faixas extremas. Ordem seguida: 12, 16, 34, 36, 1 e 9. Distância percorrida = 12-11 + 16-12 + 34-16 + 36-34 + 36-1 + 9-1 = 68 cilindros x 0 5 x x x 10 x 15 20 25 30 x x 35 V: Poupança de tempo no acesso aos pedidos nas faixas exteriores. Programação de Sistemas Discos : 24/45
Algoritmos de posicionamento (6) 3c: N-stepScan: divide sequência de pedidos em subsequências de comprimento N, aplicando SCAN a cada uma delas. Nota: para N=1 degenera em FCFS, para N= degenera em SCAN. Considerando a sequência de pedidos: 1, 34, 16, 36, 9 e 12. Para N=3, o SCAN é aplicado às subsequências <1,34,16> e <36,9,12> Distância percorrida = 34-11 + 34-1 + 36-1 = 91 cilindros x 0 5 x x x 10 x 15 20 25 30 x x 35 V: Atende primeiro pedidos mais antigos sem grande aumento de deslocamentos desnecessários. Programação de Sistemas Discos : 25/45 Algoritmos de posicionamento (7) 3d: F-SCAN: existem duas filas (despacho e espera): Disco atende pedidos na fila de despacho, pelo algoritmo SCAN. Enquanto despacha a fila, os novos pedidos são armazenados na fila de espera. Quando a fila de despacho for tratada, trocar as filas. Qual o algoritmo a escolher? Para sistemas operativos com pouca carga, usar o SSTF. Paa sistemas operativos de carga elevada (ex: servidores), usar o C-SCAN ou C-LOOK. O Linux adoptou o algortimo C-LOOK. Programação de Sistemas Discos : 26/45
Algoritmos de posicionamento (8) Comparação tempos médios de acesso Cabeça posicionada no cilindro 100. Pedidos: 55 58 39 18 90 160 150 38 184 Programação de Sistemas Discos : 27/45 Instalação de novo disco (1) A. Verificar se o controlador de disco existe em/dev. B. Criar partições. No Linux, as partições são geridas pelo comando interactivo, com privilégio root /sbin/fdisk dispositivo Em cada disco, as partições são armazenadas numa tabela no sector 0. Os descritores de dispositivos de disco residem em /dev /dev/hd[a-h] /dev/sd[a-p] /dev/ed[a-d] /dev/xd[a-b] discos IDE discos SCSI discos ESDI discos XT Programação de Sistemas Discos : 28/45
Instalação de novo disco (2) Cada partição é referida por um número. Por exemplo, /dev/sda1 é a primeira partição do primeiro disco SCSI. Comandos disponíveis no fdisk: m : listagem dos comandos p : imprimir tabela de partições Disk /dev/hdb: 64 heads, 63 sectors, 621 cylinders Units = cylinders of 4032 * 512 bytes Device Boot Start End Blocks Id System /dev/hdb1 * 1 184 370912+ 83 Linux /dev/hdb2 185 368 370944 83 Linux /dev/hdb3 369 552 370944 83 Linux /dev/hdb4 553 621 139104 82 Linux swap Nem todos os blocos são contabilizados Programação de Sistemas Discos : 29/45 Instalação de novo disco (3) n : criar nova partição Há discos que apenas admitem 4 partições/disco (ex: ESDI). Cada partição indica o sistema de ficheiros por um código usar comando l As partições catalogadas em primárias (podem conter o SO) e extensões. O local da partição é indicado pelos cilindros iniciais e finais. b : partição contém sistema operativo ( bootable ) Exemplo: Considere um disco com 5721 cilindros, 255 cabeças, 63 sectores/cilindro e 512B/sector. A capacidade do disco é 5721 * 255 * 63 * 512B = 47056826880B = 43.8GB Pretende-se criar uma partição para Swap, num computador com 1GB de RAM. A partição ser da ordem dos 2GB. O número de ciclindros a reservar é dado por 2*(1024) 3 / (255*63*512) 261 cilindros. Sendo aconselhável um múltiplo de 2 para o número de cilindros, a partição é delimitada pelos cilindros 256 e 511. Programação de Sistemas Discos : 30/45
Instalação de novo disco (4) l : listar códigos de partições em hexadecimal 0x7 NTFS 0x82 Linux swap 0x83 Linux 0x8e Linux LVM t : alterar o tipo da partição (nota: destroi dados) w : actualizar a tabela de partições q : terminar C. Criadas as partições, elas são formatadas. Para o sistema de ficheiros ext2, usar comando /sbin/mkfs /dev/hda1 D. Montar a partição de forma permanente no /etc/fstab. Programação de Sistemas Discos : 31/45 RAID (1) Falha de disco pode resultar em perda de informação valiosa Frequentemente valor de informação superior ao HW! Backup não elimina todos os inconvenientes: informação alterada desde a última salvaguarda não pode ser recuperada. tempo entre falha e recuperação do backup pode ser crítico. RAID ::= Redundant Array of Inexpensive Disks (or Independent Disks) Proposto em 1988 por Patterson et al. Ideia: distribuir o conteúdo de um disco grande por um conjunto de vários discos pequenos, usando redundância e códigos de correcção de erros para recuperar informação. Programação de Sistemas Discos : 32/45
RAID (2) Aplicações onde RAID é recomendado: Servidores WWW Servidores de E-mail Servidores de Arquivos RAID pode ser implementado por SW, por HW, ou ambos RAID por SW: protecção por duplicação de informação Gasta mais recursos de sistema (maior número de portos e canais). Maior carga nas operações de escrita e cópia de dados. RAID por HW: protecção por paridade Mais caro, por exigir controlador de RAID. O agrupamento de discos é feito em diversos níveis, 0-5 Programação de Sistemas Discos : 33/45 RAID (3) RAID 0 Não protege falhas Alto desempenho na transferência de dados (a) RAID 0 Linear Dados divididos pelos diversos discos disponíveis Programação de Sistemas Discos : 34/45
RAID (4) (b) RAID 0 Distribuição ( Stripping ) dados subdivididos em segmentos consecutivos (stripes, ou faixas) que são escritos sequencialmente através de cada um dos discos do array. Stripe 0 Stripe 1 Stripe 2 Stripe 3 Stripe 4 Stripe 5 Stripe 6 Stripe 7 Stripe 8 Stripe 9 Stripe 10 Stripe 11 Figura 5-19, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 35/45 RAID (5) RAID 1 espelhamento ( mirroing ) Todos os dados são escritos no disco primário e disco espelho: se um disco falhar, o outro continua a disponibilizar informação. Escrita lenta, leitura rápida. Stripe 0 Stripe 1 Stripe 2 Stripe 3 Stripe 0 Stripe 1 Stripe 2 Stripe 3 Stripe 4 Stripe 5 Stripe 6 Stripe 7 Stripe 4 Stripe 5 Stripe 6 Stripe 7 Stripe 8 Stripe 9 Stripe 10 Stripe 11 Stripe 8 Stripe 9 Stripe 10 Stripe 11 Discos dados Figura 5-19, Modern Operating Systems, A.S. Tanenbaum Cópias espelho Programação de Sistemas Discos : 36/45
RAID (6) RAID 2 Dados divididos por faixas, com alguns discos contendo códigos correctores de erros-ecc, ex: nibble -4 bits em 4 discos e 3 bits EEC em 3 discos. Todos os discos sincronizados, o que torna controlador complexo. Em desuso, porque discos modernos incorporam EECs. Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Discos dados Discos ECC Figura 5-19, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 37/45 RAID (7) RAID 3 Um disco dedicado à guarda bit de paridade. Em caso de falha num disco, os restantes são suficientes para determinar o bit desaparecido. Bit 0 Bit 1 Bit 2 Bit 3 Parity Disco paridade Discos dados Figura 5-19, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 38/45
RAID (8) RAID 4 Conjuga RAID 0 e RAID 3, com paridade determinada no bloco. Leitura rápida, mas escrita lenta (por sobrecarga no disco de paridade). Stripe 0 Stripe 1 Stripe 2 Stripe 3 P0-3 Stripe 4 Stripe 5 Stripe 6 Stripe 7 P4-7 Stripe 8 Stripe 9 Stripe 10 Stripe 11 P8-11 Disco paridade Discos dados Figura 5-19, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 39/45 RAID (9) RAID 5 Paridade das faixas distribuída rotacionalmente pelos restante discos. Escrita um pouco mais rápida que no RAID 4. Stripe 0 Stripe 1 Stripe 2 Stripe 3 P0-3 Stripe 4 Stripe 5 Stripe 6 P4-7 Stripe 7 Stripe 8 P8-11 Stripe 9 Stripe 10 Stripe 11 Discos de dados e paridade Figura 5-19, Modern Operating Systems, A.S. Tanenbaum Programação de Sistemas Discos : 40/45
Centros computacionais (1) Centros computacionais (CC- Computer Centre) têm sido necessários desde o início. Anos 60-90: Computadores valiosos de grande dimensão. Geridos por equipas especializadas. Redes praticamente inexistentes. Anos 2000+: Densidade elevada (CPU, discos,...) exige ambientes de temperatura e humidades (45%-55%) mais restritos. Evita deslocações desnecessárias de equipas manutenção, de custo horário elevado. Programação de Sistemas Discos : 41/45 Centros computacionais (2) Espaço de dados armazenado nos CC pode ser gigantesco! 1MB fotografia digital 5GB vídeo DVD 1TB produção anual de livros 1PB produção anual de uma experiência no LHC do CERN 1EB produção anual de informação no mundo Número de servidores nos CC pode ser enorme! Ex: em 2010 estimou-se que o Google possui 36 server farms (19 nos EUA, 12 na Europa, 3 na Ásia, 1 na Rússia, 1 na América do Sul). Cada centro possui, em média, 150 bastidores. Cada bastidor contém 40 servidores. Logo, o número de servidores deve rondar os 200K. Programação de Sistemas Discos : 42/45
Centros computacionais (3) Servidores, discos,... são montados em bastidores ( racks ): 19 de largura para a caixa. Altura da caixa: múltiplos de 1.75 (1 U). Pontos de fixação em duas calhas laterais, distanciados de ½ Bastidores disponíveis em diversas capacidades: 12U,24U,36U,44U,50U. Programação de Sistemas Discos : 43/45 Centros computacionais (4) Para elevado número de equipamentos, o arrefecimento pode ser um problema crítico! Nota1: um servidor de 1U pode gerar 300W de calor um bastidor apenas pode libertar 12KW! Nota2: CC do CERN possui 2K PCs de processador duplo e armazena 5PB em disco e banda magnética. Programação de Sistemas Discos : 44/45
Centros computacionais (5) Os CCs de grande dimensão são vorazes consumidores de energia! Ex: estima-se que a Google gasta diariamente 425MWh de electricidade! CCs de pequena dimensão possuem UPS-Uninterruptible power supply, para absorver variações de tensão. disponibilizar energia durante cortes. Programação de Sistemas Discos : 45/45