Como alinhar minha tabela de partição corretamente?

19

Estou no processo de construção da minha primeira matriz RAID5. Eu usei o mdadm para criar a seguinte configuração:

root@bondigas:~# mdadm --detail /dev/md1
/dev/md1:
        Version : 00.90
  Creation Time : Wed Oct 20 20:00:41 2010
     Raid Level : raid5
     Array Size : 5860543488 (5589.05 GiB 6001.20 GB)
  Used Dev Size : 1953514496 (1863.02 GiB 2000.40 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Wed Oct 20 20:13:48 2010
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 1% complete

           UUID : f6dc829e:aa29b476:edd1ef19:85032322 (local to host bondigas)
         Events : 0.12

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      spare rebuilding   /dev/sde

Enquanto isso, decidi formatar a fera com o seguinte comando:

root@bondigas:~# mkfs.ext4 /dev/md1p1 
mke2fs 1.41.11 (14-Mar-2010)
/dev/md1p1 alignment is offset by 63488 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=48 blocks
97853440 inodes, 391394047 blocks
19569702 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
11945 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Writing inode tables: ^C 27/11945
root@bondigas:~# ^C

Não tenho certeza do que fazer com o "alinhamento / dev / md1p1 é compensado por 63488 bytes". e como particionar adequadamente os discos para que correspondam para que eu possa formatá-lo corretamente.

Jorge Castro
fonte

Respostas:

17

Como o alinhamento aparece em muitos lugares -

  • Discos rígidos "Advanced Format" com blocos de 4k
  • SSDs
  • RAID
  • LVM

- Vou expandir um pouco a questão.

Alinhando partições

O "Linux em discos do setor de 4kB" (IBM developerWorks) percorre as etapas com fdisk, parted e GPT fdisk.

Com o fdisk:

sudo fdisk /dev/XXX 
c # turn off DOS compatibility
u # switch to sector units
p # print current partitions, check that start sectors are multiples of 8

# for a new partition:
n # new partition
<select primary/secondary and partition #>
first sector: 2048 
  # 2048 is default in recent fdisk, 
  # and is compatible with Vista and Win 7, 
  # 4k-sector disks and all common RAID stripe sizes

Alinhando o sistema de arquivos

Isso é principalmente relevante para RAID (níveis 0, 5 e 6; não nível 1); o sistema de arquivos tem melhor desempenho se for criado com o conhecimento dos tamanhos das faixas.

Também pode ser usado para SSDs se você deseja alinhar o sistema de arquivos ao tamanho do bloco de exclusão de SSD (Theodore Tso, desenvolvedor de kernel do Linux).

No post do OP mkfs aparentemente detectou automaticamente as configurações ideais, portanto, nenhuma ação adicional foi necessária.

Se você deseja verificar, para o RAID, os parâmetros relevantes são:

  • tamanho do bloco ( sistema de arquivos, ex. 4096)
  • tamanho da listra (igual ao tamanho do bloco mdadm, por exemplo, 64k)
  • passo: stripe size / block size (ex. 64k / 4k = 16)
  • largura da faixa: stride * #-of-data-disks (por exemplo, 4 discos RAID 5 são 3 discos de dados; 16 * 3 = 48)

No Linux Raid Wiki . Veja também esta calculadora simples para diferentes níveis de RAID e número de discos.

Para o alinhamento do bloco de apagamento do SSD, os parâmetros são:

  • tamanho do bloco fs (ex. 4096)
  • SSD apagar tamanho do bloco (ex. 128k)
  • largura da faixa: tamanho do bloco apagar / tamanho do bloco fs (ex. 128k / 4k = 32)

Do post SSD de Theodore .

Alinhando extensões LVM

O possível problema é que o LVM cria um cabeçalho 192k. Esse é um múltiplo de 4k (portanto, não há problema com discos de bloco de 4k), mas pode não ser múltiplo do tamanho da faixa RAID (se o LVM é executado em um RAID) ou o tamanho do bloco de exclusão do SSD (se o LVM é executado no SSD).

Veja a publicação de Theodore para obter a solução alternativa.

jg-faustus
fonte
@Marco Como assim? O primeiro, para o IBM Developer Works, possui até um gráfico de referência da penalidade no desempenho de gravação pelo uso de partições desalinhadas e uma barra lateral no RAID. O post do blog da Tso sobre o alinhamento do SSD mudou pelo menos duas vezes desde que escrevi isso. Atualizado o link novamente, mas não há garantia de que ele continuará funcionando.
jg-faustus
Link alternativo em SSD: partições Alinhando SSD
jg-Faustus
8

Um amigo meu apontou que eu posso simplesmente executar o mkfs.ex4 /dev/md1sem particionar nada, então excluí a partição e fiz isso, e ela parece estar formatando agora.

Jorge Castro
fonte
6

Acho que dessa maneira é o mais fácil

parted -a opt /dev/md0
(parted) u MiB
(parted) rm 1
(parted) mkpart primary 1 100%

ou um método sujo alternativo seria simplesmente assim

(parted) mkpart primary ext4 1 -1
AllGamer
fonte
A documentação dividida sugere o uso de MB e GB, não MiB ou GiB, se desejar permitir que as partes tentem otimizar partições automaticamente.
Felipe Alvarez
1

Parece que o mkfs.ext4 deseja que os sistemas de arquivos no seu RAID iniciem em um limite de 64 KiB. Se você usar o disco inteiro, ele começará em 0, o que também é obviamente um múltiplo de 64 KiB ...

Hoje em dia, a maioria das ferramentas de particionamento usará um limite de 1 MiB por padrão (o fdisk provavelmente não usa).

A razão para isso é que a maioria dos discos rígidos e SSDs usa setores físicos no dispositivo que são muito maiores que os setores lógicos. O resultado disso é que, se você ler um setor lógico de 512 bytes do disco, o hardware realmente precisará ler uma quantidade muito maior de dados.

No caso do seu dispositivo RAID de software, algo semelhante acontece: os dados são armazenados em "blocos" de 64 KiB com as configurações padrão do mdadm.

JanC
fonte