У нас есть массив RAID 6 12 ТБ, который предполагается настроить как один раздел с XFS файловая система. При создании новой файловой системы указано, что используется 78 ГБ, но на диске нет файлов.
[root@i00a ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 11M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sdb3 154G 3.9G 150G 3% /
/dev/sdb2 1014M 153M 862M 16% /boot
/dev/sdb1 599M 6.7M 593M 2% /boot/efi
/dev/sdc1 187G 1.6G 185G 1% /var
tmpfs 6.3G 0 6.3G 0% /run/user/0
/dev/sda1 11T 78G 11T 1% /export/libvirt
Я сделал что-то не так? Это задумано?
Похоже, что журнал файловой системы занимает всего около 2 ГБ, и я не могу понять, что еще может использовать это пространство.
[root@i00a ~]# xfs_info /export/libvirt/
meta-data=/dev/sda1 isize=512 agcount=11, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=2929458688, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Информация о разделе:
[root@irb00a ~]# parted /dev/sda1
GNU Parted 3.2
Using /dev/sda1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Unknown (unknown)
Disk /dev/sda1: 12.0TB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0.00B 12.0TB 12.0TB xfs
Это Dell FX2 с четырьмя вычислительными узлами FC430 и двумя узлами хранения FD332 под управлением Red Hat Enterprise Linux 8 (Ootpa).
У всех файловых систем есть накладные расходы на собственные внутренние структуры данных. Эта внутренняя информация используется файловой системой для создания файлов и каталогов в будущем, а также для отслеживания того, где все размещено. Эти данные в совокупности известны как «метаданные». Это данные «о» данных в файловой системе. Метаданные считаются накладными, поскольку они занимают место, но не являются пользовательскими данными. Эти накладные расходы - неизбежный побочный эффект использования любой файловой системы.
В соответствии с это сообщение в блоге, У XFS накладные расходы составляют около 0,5% от общего дискового пространства. (Обратите внимание, что это сообщение из 2009 года, но нет причин, по которым это должно было радикально измениться). Он получил этот результат, протестировав накладные расходы файловой системы более чем на дюжину различных файловых систем, используя guestfish
.
0,5% вашего 12 ТБ пространства составляет 60 ГБ, поэтому похоже, что это довольно близко к ожидаемому использованию. Я подозреваю, что его число должно было быть немного выше 0,5%, но оно было округлено.
Для XFS пустая файловая система «Используемый размер», как показано df -h
похоже, во многом зависит от того, какие функции метаданных вы включаете в mkfs.xfs
время.
Тестирование с пустым файлом размером 12 ТБ:
# truncate -s 12TB xfstest.img
Настройки по умолчанию (в моей текущей системе ArchLinux):
# mkfs.xfs xfstest.img
meta-data=xfstest.img isize=512 agcount=11, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=0
data = bsize=4096 blocks=2929687500, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mount -o loop xfstest.img loop/
# df -h loop/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 11T 12G 11T 1% /dev/shm/loop
# umount loop/
С помощью reflink=1
:
# mkfs.xfs -m reflink=1 -f xfstest.img
meta-data=xfstest.img isize=512 agcount=11, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=2929687500, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mount -o loop xfstest.img loop/
# df -h loop/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 11T 78G 11T 1% /dev/shm/loop
С помощью crc=0
, reflink=0
: (по какой-то причине это тоже превращается finobt=0
, sparse=0
)
# mkfs.xfs -m reflink=0 -m crc=0 -f xfstest.img
meta-data=xfstest.img isize=256 agcount=11, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0, sparse=0, rmapbt=0
= reflink=0
data = bsize=4096 blocks=2929687500, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mount -o loop xfstest.img loop/
# df -h loop/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 11T 33M 11T 1% /dev/shm/loop
Коротко:
# df -h loop/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 11T 78G 11T 1% /dev/shm/loop (reflink=1, crc=1)
/dev/loop0 11T 12G 11T 1% /dev/shm/loop (reflink=0, crc=1)
/dev/loop0 11T 33M 11T 1% /dev/shm/loop (reflink=0, crc=0)
Таким образом, «используемое» пространство на новой файловой системе 12 ТБ составляет 78 ГБ, 12 ГБ или всего 33 МБ в зависимости от того, какие функции метаданных вы включаете во время mkfs.