Como alinho minha tabela de partições corretamente?

18

Estou no processo de construir meu primeiro array 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 sobre "O alinhamento / dev / md1p1 é compensado por 63488 bytes." e como particionar adequadamente os discos para corresponder para que eu possa formatá-lo corretamente.

    
por Jorge Castro 21.10.2010 / 02:18

4 respostas

7

Um amigo meu apontou que eu posso apenas usar mkfs.ex4 diretamente em /dev/md1 sem particionar nada, então eu deletei a partição e fiz isso e parece estar formatando agora.

    
por Jorge Castro 21.10.2010 / 02:50
16

Como o alinhamento aparece em muitos lugares -

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

- Vou expandir um pouco sobre a questão.

Alinhando partições

"Linux ativado Discos do setor 4kB " (IBM developerWorks) percorre as etapas com fdisk, parted e GPT fdisk.

com 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

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

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

Na postagem OP mkfs aparentemente detectou automaticamente as configurações ótimas, então nenhuma outra ação foi necessária.

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

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

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

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

  • tamanho do bloco fs (ex. 4096)
  • SSD apaga tamanho do bloco (ex. 128k)
  • stripe-width: tamanho do bloco de apagamento / tamanho do bloco de fs (ex. 128k / 4k = 32)

Do Post do SSD de Theodore .

Alinhando extensões do LVM

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

Veja o post de Theodore para a solução alternativa.

    
por j-g-faustus 31.12.2010 / 20:06
5

Acho que este é o caminho 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 simplesmente seria assim

(parted) mkpart primary ext4 1 -1
    
por AllGamer 27.11.2011 / 00:02
1

Parece que o mkfs.ext4 quer que os sistemas de arquivos do seu RAID iniciem em um limite de 64 KiB. Se você usa todo o disco, ele começa em 0, o que também é um múltiplo de 64 KiB ...

A maioria das ferramentas de particionamento hoje em dia 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 & amp; Os SSDs usam 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 terá que ler uma quantidade muito maior de dados.

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

    
por JanC 21.10.2010 / 04:04