Programação de Sistemas
Memória secundária
por discos
Programação de Sistemas Discos : 1/54
• 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.
Introdução (1)
Programação de Sistemas Discos : 2/54
• 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
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
(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 “smart-cards” ao fim de 5 anos!
Programação de Sistemas Discos : 3/54
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
Programação de Sistemas Discos : 4/54
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-103, Mega-106, Giga-109,
• 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”).
Arquitectura do HDD (1)
Programação de Sistemas Discos : 5/54
(“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.
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 – Frequency Modulation
– Modified Frequency Modulation – Run Length Limited
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
• 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)
Arquitectura do HDD (4)
Programação de Sistemas Discos : 8/54
• 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>.
Arquitectura do HDD (5)
Programação de Sistemas Discos : 9/54
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,…)
• 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
Arquitectura do CD (1)
Programação de Sistemas Discos : 10/54
– 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,
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”).
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/54
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 – 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.
Programação de Sistemas Discos : 12/54
Lados Camadas Capacidade (GB)
1 1 4.7
1 2 8.5
2 1 9.4
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.
Programação de Sistemas Discos : 13/54
1sem “e” por ser impossível patentear nomes comuns.
Lados Camadas Capacidade (GB)
1 1 25
1 2 50
2 1 50
2 2 100
• 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.
Sectores de um disco (1)
Programação de Sistemas Discos : 14/54
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.
• 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:
Sectores de um disco (2)
Programação de Sistemas Discos : 15/54
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
• 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
tH /tS % S, em que
– tH= tempo deslocamento da cabeça entre 2 cilindros consecutivos
Sectores de um disco (3)
Programação de Sistemas Discos : 16/54
– tH= tempo deslocamento da cabeça entre 2 cilindros consecutivos – tS= 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.
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? 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/54
• 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.
Tempo de leitura (1)
Programação de Sistemas Discos : 18/54
3. Varrimento do sector, que depende da velocidade de rotação do disco.
rN
b
r
T
T
A=
S+
+
2
1
Tempo leitura Tempo deslocamento faixa por Bytes número -N lidos Bytes número -b - velocidaderotação r• 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-N/2-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
Tempo de leitura (2)
Programação de Sistemas Discos : 19/54
• 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.
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 0 x 5 x x 10 x 15 x 20 25 30 x 35 x Posição inicial Pedidos pendentes V: Fácil de implementarD: Gera deslocamentos desnecessários
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
D: Pedidos podem ficar à espera muito tempo, por entretanto aparecerem outros mais próximos.
Figura 5-27, Modern Operating Systems, A.S. Tanenbaum
Discos : 21/54
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 • 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 0 x 5 x x 10 x 15 x 20 25 30 x 35 xNota: Existem 4 versões alternativas do algoritmo de elevador
V: Tempo de espera mais uniforme nos extremos do disco.
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.
Algoritmos de posicionamento (4)
Programação de Sistemas Discos : 23/54
• 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 0 x 5 x x 10 x 15 x 20 25 30 x 35 x
V: Tempo de espera mais uniforme.
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
Algoritmos de posicionamento (5)
Programação de Sistemas Discos : 24/54
|36-1| + |9-1| = 68 cilindros 0 x 5 x x 10 x 15 x 20 25 30 x 35 x
V: Poupança de tempo no acesso aos pedidos nas faixas exteriores.
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>
Algoritmos de posicionamento (6)
Programação de Sistemas Discos : 25/54
• 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
V: Atende primeiro pedidos mais antigos sem grande aumento de deslocamentos desnecessários.
0 x 5 x 10 x 15 x 20 25 30 x 35 x x
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.
Algoritmos de posicionamento (7)
Programação de Sistemas Discos : 26/54
– 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.
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/54
Partição de disco
[Def] Uma partição, por vezes designado volume, é um
grupo contínuo de cilindros contendo um único sistema de
ficheiros.
• Um disco inteiro é dividido em:
– Cilindro 0, Cabeça 0, Sector 1 : MBR-“master boot
record”, com
– Cilindro 0, Cabeça 0, Sector 1 : MBR-“master boot
record”, com
• Código “boot loader” para seleccionar a partição de onde será
carregado o sistema operativo. Como exemplo de “boot loader” tem-se o GRUB-GRand Unified Bootloader
• No final do MBR existe a tabela das partições no disco.
– Partições primárias (máximo de 4 em discos ATA
-“Advanced Technology Attachment” , designados por
IDE-“Integrated Drive Electronics” pela Western
Digital).
Partição de disco - MBR (1)
• Primeiros 446B (0676 em octal):boot loader primário, contendo código executável* e mensagens de erro.
• 64B seguintes: tabela de partição. • Termina com 2B (número
• Termina com 2B (número
mágico) para verificação de validade do MBR.
* Sendo o espaço reduzido, a interface é muito pobre e o boot loader continua depois do MBR.
Programação de Sistemas Discos : 29/54
Nota: Para ler o MBR, executar em modo root
dd if=/dev/hda of=mbr.bin bs=512 count=1 # lê ficheiro binário od –xa mbr.bin # imprime fich. em ASCII
Partição de disco - MBR (2)
Formato de cada entrada na tabela de partições:
– Byte 0: partição activa (0x80) ou inactiva (0x00)
Nota: apenas uma partição pode ser activa (“bootable”)
– Bytes 1-3: início da partição na forma | h7-h0 | c9-c8 s5-s0 | c7-c0 | – Byte 4: tipo da partição
Cabeça Sector
– Bytes 5-7: fim da partição
– Bytes 8-12: sector LBA do sector de início (notação little-endian) – Bytes 13-16: dimensão da partição (número de sectores)
Ex: 00 01 80 00 01 fe 83 18 3f 00 3f 00 00 20 9a 00
Programação de Sistemas Discos : 30/54
4.8GB
Inactivo H=1,C=0x200,S=0Tipo 1 (12b FAT)
H=0xE,C=0x228,S=0x3LBA início=0x3f003f
sectores=0x9a2000 Cilindro
Partição de disco - MBR (3)
Nota 1: uma vez que o número de sectores de uma partição tem 4B=32 bits, o espaço máximo ocupado por uma partição é igual a
232* 512 = 4GB * 512 = 2TB.
Para sistema de ficheiros de maior dimensão, usar outro formato de partição, ex: GPT-”GUID Partition Table”.
Nota 2: Alguns códigos de sistema de ficheiros:
Nota 2: Alguns códigos de sistema de ficheiros:
• 0x83 – Linux ext
• 0x87 – NTFS (FS do Windows)
• 0xde – “Dell Utility” é invisível ao Windows e permite armazenar ficheiros de recuperação do sistema operativo.
Programação de Sistemas Discos : 31/54
Partição de disco - MBR (4)
• No Linux, a gestão de partições (criação, eliminação,
listagem) é feita pelo comando
/sbin/fdisk dispositivo
• O comando é interactivo com diversas opções
l– lista códigos dos sistemas de ficheiros l– lista códigos dos sistemas de ficheiros m- lista opções
p– imprime tabela de partição
t– altera sistema de ficheiros na partição w– escreve no disco a tabela de partição
Nota: as alterações têm efeito só depois de executada a opção w.
Partição de disco - MBR (5)
Exemplo 1: listagem das partições
[root@asterix rgc]# /sbin/fdisk -l /dev/sda Disk /dev/sda: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x05f105f0
Disk identifier: 0x05f105f0
Device Boot Start End Blocks Id System /dev/sda1 * 1 25 200781 83 Linux /dev/sda2 26 9729 77947380 8e Linux LVM
Programação de Sistemas Discos : 33/54
Partição de disco - MBR (6)
Exemplo 2: criar novo disco
A. Verificar se o controlador de disco existe em /dev.
Os descritores de dispositivos de disco residem em /dev
/dev/hd[a-h] discos IDE/dev/sd[a-p] discos SCSI /dev/ed[a-d] discos ESDI /dev/xd[a-b] discos XT
B. Cada partição é referida por um número. Por exemplo,
/dev/sda1 é a primeira partição do primeiro disco SCSI.
C. Criar partição com comando n, ou b (se a partição
contiver sistema operativo).
Partição de disco - MBR (7)
• O local da partição é indicado pelos cilindros iniciais e
finais.
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 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 : 35/54
Partição de disco - MBR (8)
D. Alterar o tipo da partição com comando t (nota: destroi
dados).
E. actualizar a tabela de partições com comando w e
terminar com comando q
F. Criadas as partições, elas devem ser formatadas. Para o
sistema de ficheiros ext2, usar comando
/sbin/mkfs /dev/hda1
G. Montar a partição de forma permanente no /etc/fstab.
Partição de disco - MBR (9)
• O limite de 4 partições é contornado por partições
estendidas.
MBR Partição primária
1ª Partição estendida
Programação de Sistemas Discos : 37/54
MBR Partição lógica
2ª Partição estendida ept1 MBR
ept2
Partição lógica
Partição de disco - GRUB (1)
• Permite utilizador
seleccionar o sistema
operativo a carregar (“dual
boot”).
• Configuração armazenada
Master Boot Record Partition 1: 100M EXT3 (Linux) /boot Partition 2: 10GB GRUB MBR Passes control to the /boot partition
GRUB then boots to an OS (Windows or Linux)
• Configuração armazenada
no ficheiro
/boot/grub.conf,
existente na partição
/boot
Programação de Sistemas Discos : 38/54
NTFS (Windows XP) Partition 3: 512MB Linux Swap Partition 4: 10GB EXT3 (Linux) /
Partição de disco - GRUB (2)
• Configuração
#boot=/dev/sda default=0 timeout=20 splashimage=(hd0,1)/grub/splash.xpm.gz hiddenmenutitle Fedora (2.6.27.30-170.2.82.fc10.i686)
Opção por omissão
Tempo de espera para utilizador escolher Título da partição
title Fedora (2.6.27.30-170.2.82.fc10.i686) root (hd0,1)
kernel /vmlinuz-2.6.27.30-170.2.82.fc10.i686 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.27.30-170.2.82.fc10.i686.img
title WinXP
rootnoverify (hd0,0) chainloader +1
Programação de Sistemas Discos : 39/54
Imagem do núcleo a carregar (mais opções)
Partição de disco - GRUB (3)
• Em caso de esquecimento da passwd de root, o GRUB
permite arrancar o núcleo no nível 1.
– Depois de seleccionar a partição, premir comando e (editar). – Adicionar no fim da linha a opção single.
– Premir return e depois premir comando b (comando “boot”). – Premir return e depois premir comando b (comando “boot”).
• No nível 1 pode-se alterar directament a passwd com o
comando passwd root.
Nota: o teclado é o Inglês, porque no nível 1 não são carregados outros dispositivos.
• Como evitar que um intruso se aproprie do PC c/ Linux? Introduzir no grub uma passwd de acesso, acrescentando depois do initrd
password --md5 $1$w7Epf0$vX6rxpozznLAVxZGkcFcs
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 • 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 : 41/54
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 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
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 – Dados divididos pelos diversos discos disponíveis
Programação de Sistemas Discos : 43/54
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.
Programação de Sistemas Discos : 44/54
Stripe 0 Stripe 4 Stripe 8 Stripe 3 Stripe 11 Stripe 7 Stripe 2 Stripe 10 Stripe 6 Stripe 1 Stripe 5 Stripe 9
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.
Programação de Sistemas Discos : 45/54
Discos dados Cópias espelho
Stripe 0 Stripe 4 Stripe 8 Stripe 3 Stripe 11 Stripe 7 Stripe 2 Stripe 10 Stripe 6 Stripe 1 Stripe 5 Stripe 9 Stripe 0 Stripe 4 Stripe 8 Stripe 3 Stripe 11 Stripe 7 Stripe 2 Stripe 10 Stripe 6 Stripe 1 Stripe 5 Stripe 9
Figura 5-19, Modern Operating Systems, A.S. Tanenbaum
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.
Programação de Sistemas Discos : 46/54
Discos dados
Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6
Discos ECC
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.
Programação de Sistemas Discos : 47/54
Disco paridade
Bit 0 Bit 1 Bit 2 Bit 3 Parity
Discos dados
Figura 5-19, Modern Operating Systems, A.S. Tanenbaum
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).
Programação de Sistemas Discos : 48/54
Stripe 0 Stripe 1 Stripe 2 Stripe 3 P0-3
Stripe 4
Stripe 8 Stripe 10 Stripe 11
Stripe 7 Stripe 6 Stripe 5 Stripe 9 P4-7 P8-11 Discos dados Disco paridade
RAID (9)
• RAID 5
– Paridade das faixas distribuída rotacionalmente pelos restante discos.
– Escrita um pouco mais rápida que no RAID 4.
Programação de Sistemas Discos : 49/54
Discos de dados e paridade
Stripe 0 Stripe 1 Stripe 2 Stripe 3 P0-3
Stripe 4 Stripe 8 Stripe 10 Stripe 6 Stripe 5 Stripe 9 Stripe 7 Stripe 11
Figura 5-19, Modern Operating Systems, A.S. Tanenbaum
P4-7 P8-11
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.
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.
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 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!
Programação de Sistemas Discos : 51/54
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.
Centros computacionais (3)
• Servidores, discos, ... são
montados em bastidores
(“racks”):
– 19” de largura para a caixa. – Altura da caixa: múltiplos – 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.
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
Nota2: CC do CERN possui 2K PCs de
processador duplo e armazena 5PB em disco e banda magnética.
Programação de Sistemas Discos : 53/54
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
Programação de Sistemas Discos : 54/54
• CCs de pequena dimensão possuem
UPS-Uninterruptible power supply,
para
– absorver variações de tensão.