22.3.2. Criando um Dispositivo Multi-localidade com mdadm
In addition to creating RAID arrays,
mdadm
can also be used to take advantage of hardware supporting more than one I/O path to individual SCSI LUNs (disk drives). The goal of multipath storage is continued data availability in the event of hardware failure or individual path saturation. Because this configuration contains multiple paths (each acting as an independent virtual controller) accessing a common SCSI LUN (disk drive), the Linux kernel detects each shared drive once "through" each path. In other words, the SCSI LUN (disk drive) known as /dev/sda
may also be accessible as /dev/sdb
, /dev/sdc
, and so on, depending on the specific configuration.
Para fornecer um único dispositivo que possa permanecer acessível se um caminho de E/S falhar ou tornar-se saturado, o
mdadm
inclui um parêmetro adicional à opção level
. Este parêmetro multipath
instrui a camada md do kernel do Linux para que faça o redirecionamento de pedidos de E/S de um caminho para outro no evento de uma falha num caminho de E/S.
Para criar um dispositivo multi-localidade, edite o arquivo
/etc/mdadm.conf
para definir os valores das linhas DEVICE
e ARRAY
que refletem a configuração de seu hardware.
Nota
Ao contrário do exemplo RAID anterior (no qual cada dispositivo especificado em
/etc/mdadm.conf
deve representar drives de disco físicos diferentes), cada dispositivo deste arquivo refere ao mesmo drive de disco compartilhado.
O comando usado para a criação de um dispositivo multi-localidade é similar àquele usado para criar um dispositivo RAID; a diferença é a substituição do parâmetro de um nível do RAID pelo parâmetro
multipath
.
mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 Continue creating array? yes mdadm: array /dev/md0 started.
Due to the length of the mdadm command line, it has been broken into two lines.
Neste exemplo, o hardware consiste de um LUN SCSI apresentado como quatro dispositivos SCSI separados, cada um acessando o mesmo armazenamento por uma localidade diferente. Uma vez criado o dispositivo multi-localidade
/dev/md0
, todas as operações de E/S que façam referência a /dev/md0
são direcionadas para /dev/sda1
, /dev/sdb1
, /dev/sdc1
ou /dev/sdd1
(dependendo de qual localidade estiver ativa e operacional no momento).
A configuração do
/dev/md0
pode ser examinada em mais detalhes usando o comando mdadm --detail /dev/md0
para verificar se é , de fato, um dispositivo multi-localidade:
/dev/md0: Version : 00.90.00 Creation Time : Tue Mar 2 10:56:37 2004 Raid Level : multipath Array Size : 3905408 (3.72 GiB 3.100 GB) Raid Devices : 1 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Mar 2 10:56:37 2004 State : dirty, no-errors Active Devices : 1 Working Devices : 4 Failed Devices : 0 Spare Devices : 3 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 1 8 17 1 spare /dev/sdb1 2 8 33 2 spare /dev/sdc1 3 8 1 3 spare /dev/sda1 UUID : 4b564608:fa01c716:550bd8ff:735d92dc Events : 0.1
Uma outra característica do
mdadm
é a habilidade em forçar um dispositivo (seja um membro de um conjunto RAID ou uma localidade numa configuração multi-localidade) a ser removido de uma configuração em operação. No exemplo seguinte, o /dev/sda1
é marcado como falho, então é removido e finalmente adicionado de volta à configuração. Numa configuração multi-localidade, estas ações não impactariam nenhuma atividade de E/S ocorrendo no momento:
# mdadm /dev/md0 -f /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0 # mdadm /dev/md0 -r /dev/sda1 mdadm: hot removed /dev/sda1 # mdadm /dev/md0 -a /dev/sda1 mdadm: hot added /dev/sda1 #