Щойно створена файлова система XFS відображає 78 Гб


18

У нас є масив 12 TB RAID 6, який повинен бути налаштований як єдиний розділ з файловою системою 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 ).


Це справді порожньо? Намагаючись відтворити (із зображенням 12 ТБ, налаштуваннями mkfs за замовчуванням bsize=4096 blocks=2929687500), df -hрезультат - Size 11T, Used 12Gне 78Gза вашим прикладом. xfsdumpстворює файл 21
КБ

2
Ах, зауважую, ти мав, reflink=1але типовим для мене був reflink=0. З reflink=1, він також говорить, що 78Gвикористовується для мене, тому я можу відтворити його зараз.
frostschutz

Тож здається, що це задумано, але якщо ви впевнені, що рефлексії нічого не зроблять для вашого випадку використання, ви можете розглянути можливість його вимкнення.
frostschutz

Не знаю. Єдине, в чому будуть файли qcow2 для віртуальних машин.
yakatz

Схоже, деякі інструменти libvirt підтримують зворотну посилання, але, ймовірно, не варті проблем: stackoverflow.com/a/41968000/597234 Я, певно, можу помістити цілий додатковий VM у збереженому просторі.
yakatz

Відповіді:


2

Для 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 час.


RedHat 8 reflinks=1за замовчуванням
yakatz

24

Усі файлові системи мають накладні витрати на власні внутрішні структури даних. Ця внутрішня інформація використовується для файлової системи для створення файлів і каталогів у майбутньому та для відстеження, де все виділено. Ці дані в сукупності відомі як "метадані". Це дані "про" дані у файловій системі. Метадані вважаються накладними, оскільки займають місце, але не є даними користувача. Ця накладні витрати є неминучим побічним ефектом використання будь-якої файлової системи.

Відповідно до цієї публікації в блозі , XFS має накладні витрати близько 0,5% всього дискового простору. (Зауважте, що це повідомлення від 2009 року, але немає причин, щоб це кардинально змінилося). Цей результат він отримав, перевіривши накладні витрати на файлову систему понад десятка різних файлових систем guestfish.

0,5% вашого 12 ТБ простору становить 60 Гб, тому це здається, що це майже близьке до очікуваного використання. Я підозрюю, що його кількість повинна була бути трохи більше 0,5%, але що вона була округлою.


9
Варто зазначити, що деякі файлові системи повідомляють про повний виділений розмір, а потім стягують накладні з бухгалтерського обліку за використаний простір, а інші віднімають бухгалтерію від повного розміру та повідомляють про просторі файлів як "використані".
chrylis -на страйк-

3
Файлова система накладних… змушує людей запитати, чому їх жорсткі диски не повідомляють про те, що на наклейці з 1983 року.
J ...

3
@J ... Насправді, жорсткий диск часто продається там розміром, використовуючи 1GB = 1000MB замість 1024MB. Таким чином, HD, проданий на 512 Гб, насправді на 12 ГБ менше, ніж перелічений розмір. З ТБ стає ще гірше, оскільки вони використовують 1 ТБ = 1000 ГБ = 1000 * 1000 МБ. 1 Тб HD - це дійсно 976 ГБ замість 1024 ГБ. Шикарні 48 Гб, втрачені туберкульозом.
Джастін Лессар

4
Різниця в вимірюванні гігабайт (база 10) проти гібібайт (база 2) не відображається як використаний простір в df.
yakatz

1
@JustinLessard Ви забули про накладні витрати на рівнях MiB та KiB. Жорсткий диск на 512 Гб насправді на 32 Гб менше, ніж реальний накопичувач на 512 Гб. І на цьому привід на 1 ТБ насправді більше схожий на 0,909 TiB, коли рахуються накладні витрати TiB, GiB, MiB та KiB. (1 * 1000 ^ 4/1024 ^ 4) = 0,90949
пінгвін359
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.