У меня диск 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
чтобы скопировать данные, а затем удалить данные, которые вы не хотели копировать.