Ficar sem espaço ao copiar entre sistemas XFS semelhantes [duplicado]

2

Eu tenho um disco de 4 TB com 1% de partiçãoxfs ( sda1 ). Eu queria copiar quase todos os dados lá (2,8 TB dos 3,6 TB usados) para um novo disco ( sdc1 ). Primeiro eu preparei sdc da mesma forma sda :

parted -l

  Model: ATA WDC WD40EZRX-00S (scsi)
  Disk /dev/sda: 4001GB
  Sector size (logical/physical): 512B/4096B
  Partition Table: gpt
  Disk Flags: 

  Number  Start   End     Size    File system  Name     Flags
   1      1049kB  4001GB  4001GB  xfs          primary

  ...

  Model: ATA ST4000DM000-1F21 (scsi)
  Disk /dev/sdc: 4001GB
  Sector size (logical/physical): 512B/4096B
  Partition Table: gpt
  Disk Flags: 

  Number  Start   End     Size    File system  Name     Flags
   1      1049kB  4001GB  4001GB  xfs          primary

Em seguida, uso rsync para copiar 2,8Tb de sda1 para sdc1 , mas fiquei sem espaço em sdc1 :

df -h
  Filesystem      Size  Used Avail Use% Mounted on
  /dev/sdc1       3.7T  3.7T   20K 100% /home/alexis/STORE
  /dev/sda1       3.7T  3.6T   52G  99% /home/alexis/OTHER                   

O que está acontecendo? Aqui eu coloco alguma saída que colecionei. Considere na sua resposta que estou apenas dando esses dados porque estou apenas supondo, mas não sei o que isso realmente significa (eu gostaria de saber!). Por exemplo, notei uma diferença em sectsz , mas nada muda em parted -l ... O que isso significa? Também notei a diferença no número de nós .... Por quê?

Muito obrigado!

df -i
  Filesystem        Inodes   IUsed     IFree IUse% Mounted on
  /dev/sdc1         270480  270328       152  100% /home/alexis/STORE
  /dev/sda1      215387968  400253 214987715    1% /home/alexis/OTHER


xfs_info STORE
  meta-data=/dev/sdc1              isize=256    agcount=4, agsize=244188544 blks
           =                       sectsz=4096  attr=2, projid32bit=1
           =                       crc=0        finobt=0
  data     =                       bsize=4096   blocks=976754176, imaxpct=5
           =                       sunit=0      swidth=0 blks
  naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
  log      =internal               bsize=4096   blocks=476930, version=2
           =                       sectsz=4096  sunit=1 blks, lazy-count=1
  realtime =none                   extsz=4096   blocks=0, rtextents=0

xfs_info OTHER/
  meta-data=/dev/sda1              isize=256    agcount=4, agsize=244188544 blks
           =                       sectsz=512   attr=2, projid32bit=0
           =                       crc=0        finobt=0
  data     =                       bsize=4096   blocks=976754176, imaxpct=5
           =                       sunit=0      swidth=0 blks
  naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
  log      =internal               bsize=4096   blocks=476930, version=2
           =                       sectsz=512   sunit=0 blks, lazy-count=1
  realtime =none                   extsz=4096   blocks=0, rtextents=0




hdparm -I /dev/sdc | grep Physical
        Physical Sector size:                  4096 bytes
hdparm -I /dev/sda | grep Physical
        Physical Sector size:                  4096 bytes

EDITAR

Esta não é uma duplicata de Não é possível criar arquivos em grandes XFS sistema de arquivos . Tenho 2 discos semelhantes, não tenho espaço nem inodes e nunca aumento o tamanho de nenhuma partição.

Para minhas outras perguntas, adiciono essa: por que minhas duas partições têm um número diferente de inodes se eu usei o mesmo procedimento ( parted , mkfs.xfs ) para criá-las?

EDIT2

Aqui o uso do grupo de alocação:

xfs_db -r -c "freesp -s -a 0" /dev/sdc1
   from      to extents  blocks    pct
      1       1      20      20   2.28
      2       3      26      61   6.96
      4       7      31     167  19.06
      8      15      35     397  45.32
     16      31      12     231  26.37
total free extents 124
total free blocks 876
average free extent size 7.06452

xfs_db -r -c "freesp -s -a 0" /dev/sda1
   from      to extents  blocks    pct
      1       1      85      85   0.00
      2       3      68     176   0.01
      4       7     438    2487   0.10
      8      15     148    1418   0.06
     16      31      33     786   0.03
     32      63      91    4606   0.18
     64     127      94    9011   0.35
    128     255      16    3010   0.12
    256     511       9    3345   0.13
    512    1023      18   12344   0.49
   1024    2047      10   15526   0.61
   2048    4095      72  172969   6.81
   4096    8191      31  184089   7.25
   8192   16383      27  322182  12.68
  16384   32767      15  287112  11.30
 262144  524287       2  889586  35.02
 524288 1048575       1  631150  24.85
total free extents 1158
total free blocks 2539882
average free extent size 2193.34
    
por alexis 02.03.2016 / 17:01

1 resposta

3

Você está fora de inodes.

df -i
  Filesystem        Inodes   IUsed     IFree IUse% Mounted on
  /dev/sdc1         270480  270328       152  100% /home/alexis/STORE
  /dev/sda1      215387968  400253 214987715    1% /home/alexis/OTHER

O sistema de arquivos sdc1 / STORE possui 270.480 inodes e você já usou todos eles. É por isso que você está ficando sem avisos de espaço.

Por que o STORE tem muito menos inodes que o OTHER?

A única diferença estrutural entre os dois é o tamanho do setor. O que não deveria importar, já que ambos os volumes usam um tamanho de bloco de 4096b. A questão vem com a forma como o XFS faz sua alocação de inode. É dinâmico.

A resposta está oculta na pergunta: Não é possível criar arquivos em sistema de arquivos XFS grande

The issue turns out to be in how XFS allocates inodes. Unlike most file systems, allocation happens dynamically as new files are created. However, unless you specify otherwise, inodes are limited to 32-bit values, which means that they must fit within the first terabyte of storage on the file system. So if you completely filled that first terabyte, and then you enlarge the disk, you would still be unable to create new files, since the inodes can't be created on the new space.

Você pode ser mais bem atendido usando xfs_copy ou xfs_dump/xfs_restore para copiar os dados e, em seguida, remover os dados que não deseja copiar.

    
por 02.03.2016 / 17:49

Tags