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

В недавно созданной файловой системе XFS используется 78 ГБ

У нас есть массив 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.