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

Куда делось свободное место?

Я установил CentOS 5.7 64 бит на свой сервер, который имеет 4x300 ГБ SAS-накопителя на аппаратном RAID 10. При установке я выбрал разделы по умолчанию.

Вот вывод команд:

[root@server ~]# fdisk -l

Disk /dev/sda: 598.8 GB, 598879502336 bytes
255 heads, 63 sectors/track, 72809 cylinders
Units = cylinders de 16065 * 512 = 8225280 bytes

Boot Device         Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       72809   584733870   8e  Linux LVM


[root@server ~]# df -h
File System          Size   Used  Free Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      493G  1,4G  466G   1% /
/dev/sda1              99M   13M   81M  14% /boot
tmpfs                  24G     0   24G   0% /dev/shm

Куда делись эти 100 ГБ и как их добавить?

заранее спасибо

Ваш вопрос несколько интересен - на самом деле есть 3 проблемы:

  1. Проблема преобразования единиц измерения
  2. Зарезервированные блоки для файловой системы (видны df)
  3. Зарезервированные блоки для файловой системы (не видны df)

Примечание: Я собираюсь использовать числа, взятые из одной из моих систем, а не ваши числа, так как требуется дополнительная информация - хотя применяется та же математика.

1. ГБ (гигабайты) по сравнению с гигабайтами (гибибайтами)

  • 1 ГБ основан на степени 10: 1 ГБ = 1033 = 10003 = 1000000000 байт
  • ГиБ основан на степени 2: 1 ГиБ = 2103 = 10243 = 1073741824 байта

Жесткие диски почти всегда продаются в ГБ.

fdisk -l /dev/xvda1

Disk /dev/xvda1: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Итак, этот раздел имеет 4294967296 байт - вы можете видеть, что число (МБ) просто 1/10002 того, что. Чтобы преобразовать в ГиБ, разделим на 10243:

4294967296 Б / (10243 Б / ГиБ) = 4 ГиБ (или 4096 МБ, определенно отличается от указанного выше числа).

2. Файловая система резервирует некоторые блоки, которые df может видеть

Для начала найдем размер нашего блока:

dumpe2fs -h /dev/xvda1 | grep "Block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size:               4096

Поскольку размер блока в этой системе составляет 4096 Байт, я использую это значение ниже. (Заметка, df использует 4K = 4096 и 4KB = 4000):

df -B 4K
Filesystem           4K-blocks      Used Available Use% Mounted on
/dev/xvda1             1032112    325035    696599  32% /

Однако можно было бы ожидать, что Used + Available = Total (т.е. блоки по 4 КБ):

325035+696599 = 1021634 =/= 1032112

Это отсутствующее значение и есть «количество зарезервированных блоков»:

dumpe2fs -h /dev/xvda1 | grep "Reserved block count"
dumpe2fs 1.41.12 (17-May-2010)
Reserved block count:     10478

Проверка математики:

1021634 + 10478 = 1032112

3. Недостающие блоки, которые df не могу видеть

Что ж, пока все хорошо, но цифры все равно не сходятся.

Общее количество блоков 4K, которое я должен иметь, составляет 4294967296/4096 = 1048576. Вы можете проверить это с помощью вывода dumpe2fs -h / dev / xvda1 | grep "Счетчик блоков"

dumpe2fs -h /dev/xvda1 | grep "Block count"
dumpe2fs 1.41.12 (17-May-2010)
Block count:              1048576

Итак, согласно fdisk и dumpe2fs существует 1048576 блоков 4K Согласно df: 1032112 блоков 4K Что означает: 1048576 - 1032112 = 16464 блока отсутствуют

Здесь вам нужно немного понять файловую систему. В моем случае я использую ext4 - и он разделен на группы.

Для начала вот частичный вывод dumpe2fs:

dumpe2fs -h /dev/xvda1
dumpe2fs 1.41.12 (17-May-2010)
Filesystem OS type:       Linux
Inode count:              262144
Block count:              1048576
Reserved block count:     10478
Free blocks:              735865
Free inodes:              216621
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      511
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
RAID stride:              32582
Flex block group size:    16
First inode:              11
Inode size:               256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       15632
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
Journal size:             128M
Journal length:           32768
Journal sequence:         0x0006db26
Journal start:            7391

В группе 32768 блоков. Всего у нас 1048576 блоков, следовательно: 1048576/32768 = 32 группы

Если вы запустите dumpe2fs (без -h), вы получите длинный список всех групп и соответствующую информацию. Например, для моей первой группы:

Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
  Checksum 0xdc79, unused inodes 0
  Primary superblock at 0, Group descriptors at 1-1
  Reserved GDT blocks at 2-512
  Block bitmap at 513 (+513), Inode bitmap at 529 (+529)
  Inode table at 545-1056 (+545)
  13296 free blocks, 0 free inodes, 1487 directories
  Free blocks: 10382, 11506-11537, 11672-11679, 11714-11727, 12169, 12173-12179, 12181-12185, 12938-12962, 12964-12969, 13105, 13217-13246, 13384-13390, 13392-13393, 13644-13647, 13707, 13712-13855, 16346-18395, 20442-22491, 22699-22701, 22748, 23053-31837, 32290-32408
  Free inodes:

Здесь вы заметите несколько вещей:

  1. Есть суперблок (он есть не у всех групп) - 1 блок
  2. Есть дескрипторы групп (есть только у групп с суперблоками) - 1 блок
  3. Есть битовая карта блока (у всех групп одна) - 1 блок
  4. Имеется битовая карта inode (у всех групп одна) - 1 блок
  5. Есть таблица inode - 512 блоков (блоков inode на группу)

Мы можем найти список наших суперблоков с:

dumpe2fs /dev/xvda1 | grep -i superblock
dumpe2fs 1.41.12 (17-May-2010)
  Primary superblock at 0, Group descriptors at 1-1
  Backup superblock at 32768, Group descriptors at 32769-32769
  Backup superblock at 98304, Group descriptors at 98305-98305
  Backup superblock at 163840, Group descriptors at 163841-163841
  Backup superblock at 229376, Group descriptors at 229377-229377
  Backup superblock at 294912, Group descriptors at 294913-294913
  Backup superblock at 819200, Group descriptors at 819201-819201
  Backup superblock at 884736, Group descriptors at 884737-884737

Итак, в моем случае 1 первичный суперблок и 7 резервных копий.

Разрабатывая это, мы получаем:

  • 24 группы без суперблока:
    • Каждый имеет 1 блок (битовая карта блока) + 1 блок (битовая карта индексного дескриптора) + 512 блоков (таблица индексного дескриптора) = 514 блоков.
  • 8 групп с суперблоком:
    • Каждый из них имеет 1 блок (суперблок) + 1 блок (дескрипторы группы) + 1 блок (битовая карта блоков) + 1 блок (битовая карта индексных дескрипторов) + 512 блоков (таблица индексов) = 516 блоков.

Посчитав, мы находим:

24 groups * 514 block/group + 8 groups * 516 blocks/group = 16464 blocks

Что в точности равно нашему пропущенному числу!

Стоит упомянуть, что есть дополнительные зарезервированные блоки (например, зарезервированные блоки GDT), которые допускают рост в будущем, но df учитывает их в своих расчетах. Кроме того, журнал файловой системы распознается df как использованное пространство (поэтому даже без файлов будет использовано 128 МБ).