The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"FreeBSD, df, реальный размер диска"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Открытые системы на сервере (Файловые системы, диски / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"FreeBSD, df, реальный размер диска"  +1 +/
Сообщение от Pavev email on 02-Мрт-10, 10:41 
Друзья, добрый день.

Не могу разобраться в следующей ситуации:
есть диск, размером 5G (ad2), на него была перенесена при помощи dd ОС FreeBSD с диска размером 1G.
После выполнения fdisk -I /dev/ad2:
fdisk -s /dev/ad2
/dev/ad2: 10402 cyl 16 hd 63 sec
Part        Start        Size Type Flags
   1:          63    10485153 0xa5 0x80


После выполнения bsdlabel:
bsdlabel /dev/ad2s1
# /dev/ad2s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 10485137       16    4.2BSD        0     0     0
  c: 10485153        0    unused        0     0         # "raw" part, don't edit


Далее следовала команда growfs -y /dev/ad2s1a

После этого:
df -k
Filesystem  1024-blocks   Used   Avail Capacity  Mounted on
/dev/ad0s1a     5076734 898792 3771804    19%    /
devfs                 1      1       0   100%    /dev
/dev/ad2s1a     4920830 362118 4165046     8%    /mnt


Мне не понятно, почему размер диска имеет значение 4920830K, в то время как под раздел было выделено (10485137*512)b.

Диск ad0 - это тоже диск на 5G. Но на него ОС не переносилась, а сразу устанавливалась с нуля. То, что различается видимый ОС размер этих дисков вносит лишь еще большее недопонимание.

geom disk list выдает следующую информацию:
1. Name: ad0
   Mediasize: 5368709120 (5.0G)
   Sectorsize: 512
   Mode: r1w1e3
   fwsectors: 63
   fwheads: 16

Geom name: ad1
Providers:
1. Name: ad1
   Mediasize: 1073741824 (1.0G)
   Sectorsize: 512
   Mode: r0w0e0
   fwsectors: 63
   fwheads: 16

Geom name: ad2
Providers:
1. Name: ad2
   Mediasize: 5368709120 (5.0G)
   Sectorsize: 512
   Mode: r1w1e3
   fwsectors: 63
   fwheads: 16


Прошу помощи в решении данного вопроса.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "FreeBSD, df, реальный размер диска"  +/
Сообщение от Michael (??) on 02-Мрт-10, 11:00 

>
>Прошу помощи в решении данного вопроса.

df показывает доступное место за вычетом зарезервированного системой. по дефолту это 10 процентов

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "FreeBSD, df, реальный размер диска"  +/
Сообщение от Pavev email on 02-Мрт-10, 11:32 
>df показывает доступное место за вычетом зарезервированного системой. по дефолту это 10
>процентов

В документации freebsd говорится, что резерв под рута не учитывается командой DF в поле Size, а также то, что как правило изначально под резерв отдано 8%.

Ну и проверить тот факт, учитывается или нет тоже можно, ниже результаты:

df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    4.8G    878M    3.6G    19%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad2s1a    4.7G    354M    4.0G     8%    /mnt


tunefs -p /dev/ad2
tunefs: ACLs: (-a)                                         disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: maximum blocks per file in a cylinder group: (-e)  2048
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)

// после выполнения tunefs -m 50% /dev/ad2

tunefs -p /dev/ad2s1a
tunefs: ACLs: (-a)                                         disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: maximum blocks per file in a cylinder group: (-e)  2048
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             50%
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)

df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    4.8G    878M    3.6G    19%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad2s1a    4.7G    354M    2.0G    15%    /mnt


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "FreeBSD, df, реальный размер диска"  +/
Сообщение от lavr email on 02-Мрт-10, 12:54 
>[оверквотинг удален]
>devfs            
>     1      
>1       0   100%
>   /dev
>/dev/ad2s1a     4920830 362118 4165046    
>8%    /mnt
>
>
>Мне не понятно, почему размер диска имеет значение 4920830K, в то время
>как под раздел было выделено (10485137*512)b.

(10485137*512)-(10485137*512/100*8) ~= 4938918936 / 1024 ~= 4823163 в K-блоках

вроде как все законно.

один ньюанс, MINFREE=85 by default, вот в каких блоках - нужно посмотреть
в man'ах, в header'ах и вычисление в newfs или tunefs sources, ибо верхние вычисления
приблизительные и 8% считались в байтах а не в блоках, и тем не менее, примерный
результат ожидаем и соответствует действительности

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "FreeBSD, df, реальный размер диска"  +/
Сообщение от Pavev email on 02-Мрт-10, 13:07 
>(10485137*512)-(10485137*512/100*8) ~= 4938918936 / 1024 ~= 4823163 в K-блоках
>вроде как все законно.

lavr, спасибо за ответ.
Однако остается непонятным тот факт, при котором, в случае изменения процента резерва, поле Size не изменяется:

// после выполнения tunefs -m 50% /dev/ad2

tunefs -p /dev/ad2s1a
tunefs: ACLs: (-a)                                         disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 enabled
tunefs: gjournal: (-J)                                     disabled
tunefs: maximum blocks per file in a cylinder group: (-e)  2048
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             50%
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)

df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a    4.8G    878M    3.6G    19%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad2s1a    4.7G    354M    2.0G    15%    /mnt

Но, тем не менее, видно. что доступного пространства стало меньше.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "FreeBSD, df, реальный размер диска"  +1 +/
Сообщение от lavr email on 02-Мрт-10, 14:10 
>>(10485137*512)-(10485137*512/100*8) ~= 4938918936 / 1024 ~= 4823163 в K-блоках
>>вроде как все законно.
>
>lavr, спасибо за ответ.

да, MINFREE=8% (вероятно очепятался)

>Однако остается непонятным тот факт, при котором, в случае изменения процента резерва,
>поле Size не изменяется:
>
>// после выполнения tunefs -m 50% /dev/ad2

почему это вы tunefs выполняете для сырого диска ad2?!

>[оверквотинг удален]
>Avail Capacity  Mounted on
>/dev/ad0s1a    4.8G    878M    
>3.6G    19%    /
>devfs          1.0K  
>  1.0K      0B  
>100%    /dev
>/dev/ad2s1a    4.7G    354M    
>2.0G    15%    /mnt
>
>Но, тем не менее, видно. что доступного пространства стало меньше.

опять же цифири очень похожи, весь=4.7GB - сколько-то там занято - 50% резерв ~=2GB
не вижу проблем.

ps. если у вас какие-то ошибки уже наслоились, то возможно всякое

Например вы использовали dd для копирования с маленького диска на большой,
сомневаюсь что в этом случае правильные размеры для слайса, кроме этого FS на партициях
имеет относительную адресацию секторов, если бы все было в абсолютной адресации,
то многое было бы проще.

Те после копирования через dd неравных дисков, нужно править/корректировать размеры слайса,
после чего прогнать fsck на партиции - убедиться что рабочие, размонтировать
и выполнить growfs

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "FreeBSD, df, реальный размер диска"  +1 +/
Сообщение от lavr email on 02-Мрт-10, 14:16 
>>(10485137*512)-(10485137*512/100*8) ~= 4938918936 / 1024 ~= 4823163 в K-блоках
>>вроде как все законно.
>
>lavr, спасибо за ответ.
>Однако остается непонятным тот факт, при котором, в случае изменения процента резерва,
>поле Size не изменяется:

нужно либо посмотреть исходники df, либо тупо попробовать под VirtualBox,
посмотрю при возможности.

ps. tunefs должен выполнять на unmount FS или смонтированной read-only
после чего выполнить fsck и потом монтировать измененную FS

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "FreeBSD, df, реальный размер диска"  +/
Сообщение от Pavev email on 02-Мрт-10, 14:36 
>[оверквотинг удален]
>>
>>lavr, спасибо за ответ.
>>Однако остается непонятным тот факт, при котором, в случае изменения процента резерва,
>>поле Size не изменяется:
>
>нужно либо посмотреть исходники df, либо тупо попробовать под VirtualBox,
>посмотрю при возможности.
>
>ps. tunefs должен выполнять на unmount FS или смонтированной read-only
>после чего выполнить fsck и потом монтировать измененную FS

Да, конечно, tunefs выполнялась на несмонтированном диске. Я забыл это указать в прошлом ответе.
А после переноса системы было следующее:
fdisk -I /dev/ad2 (также тестировал и в интерактивном режиме -u)
bsdlabel -e /dev/ad2s1
fsck -t ufs /dev/ad2s1a
growfs -y /dev/ad2s1a
fsck -t ufs /dev/ad2s1a

Ошибок не возникло ни на одном этапе. Все это подробнее описано в первом моем посте.

Вероятно, действительно, нужно смотреть исходники df.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "FreeBSD, df, реальный размер диска"  +/
Сообщение от lavr email on 03-Мрт-10, 09:21 
>[оверквотинг удален]
>fdisk -I /dev/ad2 (также тестировал и в интерактивном режиме -u)
>bsdlabel -e /dev/ad2s1
>fsck -t ufs /dev/ad2s1a
>growfs -y /dev/ad2s1a
>fsck -t ufs /dev/ad2s1a
>
>Ошибок не возникло ни на одном этапе. Все это подробнее описано в
>первом моем посте.
>
>Вероятно, действительно, нужно смотреть исходники df.

а исходники показывают что df выдает форматный вывод исходя из внутренней архитектуры
FS, о чем и говорилось изначально, организацию можно посмотреть с помощью dumpfs или
ffsinfo или другим набором утилит из портов.
Причем layout таков что суммарное кол-во занятых и свободных блоков будет != size
getmntinfo выдает массив структуры statfs, далее происходят вычисления в зависимости
от BLOCKSIZE и преобразования в зависимости от опций формата вывода.
Те при оформлении FS - используется относительная адресация и структура UFS непростая,
посему сложно натянуть расчеты в абсолютных секторах на живую FS со сложной структурой.
Можно только сделать прикидку. Посему и восстановление удаленных файлов в UFSv1/UFSv2
- дело практически невозможное (для 100% восстановления точно невозможное)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "FreeBSD, df, реальный размер диска"  +/
Сообщение от Pavev email on 03-Мрт-10, 09:26 
lavr, большое  Вам спасибо.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру