Назад | Перейти на главную страницу

Закончилось место при копировании между похожими системами XFS

У меня диск 4Тб с 1 xfs раздел (sda1). Я хотел скопировать почти все данные там (2,8 ТБ из использованных 3,6 ТБ) на новый диск (sdc1). Сначала я подготовил sdc таким же образом 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

Затем я использую rsync скопировать 2.8Tb из sda1 к sdc1, но мне не хватает места в 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                   

Что происходит?. Здесь я публикую собранные мной результаты. Учтите в своем ответе, что я привожу эти данные только потому, что предполагаю, но не знаю, что это на самом деле означает (хотелось бы знать!). Например, я заметил разницу в sectsz, но в parted -l ... Что это значит? Еще заметил разницу в количестве узлов .... Почему?

Большое спасибо!

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

РЕДАКТИРОВАТЬ

Это не дубликат Невозможно создать файлы в большой файловой системе XFS. У меня есть 2 одинаковых диска, у меня нет места, нет inode, и я никогда не увеличиваю размер любого раздела.

К другим своим вопросам я добавляю следующее: Почему у двух моих разделов разное количество inode, если я использовал одну и ту же процедуру (parted, mkfs.xfs) создать их?

РЕДАКТИРОВАТЬ2

Вот использование группы размещения:

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

У вас закончились 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

В файловой системе sdc1 / STORE 270 480 inode, и вы использовали их все. Вот почему вы получаете предупреждения из космоса.

Почему в STORE гораздо меньше inode, чем в OTHER?

Единственное структурное различие между ними - размер сектора. Это не имеет значения, поскольку оба тома используют размер блока 4096b. Проблема заключается в том, как XFS распределяет свои inode. Это динамично.

Ответ скрыт в вопросе: Невозможно создать файлы в большой файловой системе XFS

Проблема заключается в том, как XFS выделяет inodes. В отличие от большинства файловых систем, распределение происходит динамически по мере создания новых файлов. Однако, если вы не укажете иное, inodes ограничены 32-битными значениями, что означает, что они должны уместиться в пределах первого терабайта хранилища в файловой системе. Поэтому, если вы полностью заполнили этот первый терабайт, а затем увеличили диск, вы все равно не сможете создавать новые файлы, поскольку inodes не могут быть созданы в новом пространстве.

Возможно, вам лучше использовать xfs_copy или xfs_dump/xfs_restore чтобы скопировать данные, а затем удалить данные, которые вы не хотели копировать.