Кое-что добавлю в копилку общих знаний по поводу всяких ошибок "Class not found" при разметке дисков.
Только что занимался добавлением дискового пространства в VMware. Добавлялся отдельный диск, но существо вопроса сохраняется и при попытках увеличения или добавления партиции.
Трабл с ошибкой "bsdlabel: Class not found" оказался актуальным для версий FreeBSD начиная с 8.0 (в версии 8.0 это точно есть). Объясняется это так:
http://freebsd.1045724.n5.nabble.com/GE ... 73903.html
This is because GEOM_BSD -> GEOM_PART_BSD change. bsdlabel(8) needs read-write access to the device. If it can't get that, it tries an alternative GEOM based method only supported by GEOM_BSD. The error message "Class not found" is printed because the "BSD" GEOM class doesn't exist. You might be able to do the changes with gpart(8).
Похоже, метки придётся назначать через gpart с опцией -l. Я пока это не пробовал, поскольку у меня было достаточно назначения по умолчанию.
Но на метках проблема не исчерпывается. Я столкнулся с тем, что в 8.0 нет нормального способа побороть ошибку "fdisk: invalid fdisk partition table found", выдаваемую fdisk (например, командой fdisk -s /dev/da1). Пока нашёлся только ненормальный.
После создания схемы диска (команда: gpart create -s bsd da1), перед тем как создавать партицию через gpart нужно выполнить команду: fdisk -I /dev/da1
Она выдаёт ошибку и ничего не меняет (не может отработать из-за ошибки "fdisk: Class not found"), но после неё ошибка fdisk пропадает и нормально отрабатывает команда: gpart add -b 34 -i 1 -t freebsd-ufs da1
В целом, надёжной (использовал по удалёнке) оказалась такая последовательность:
Код: Выделить всё
# sysctl kern.geom.debugflags=16
# Без этого процесс не пойдёт.
# dd < /dev/zero > /dev/da1 count=2
# Это просто подстраховка для не новых дисков.
# Создаём схему диска в формате BSD (просто для примера).
# gpart create -s bsd da1
# fdisk -I /dev/da1
******* Working on device /dev/da1 *******
fdisk: invalid fdisk partition table found
fdisk: Class not found
# Проверяем, что инвалидность раздела партиций исправилась.
# fdisk -s /dev/da1
/dev/da1: 65270 cyl 255 hd 63 sec
Part Start Size Type Flags
1: 63 1048562487 0xa5 0x80
# Делаем партицию на весь диск (просто для примера).
# gpart add -b 34 -i 1 -t freebsd-ufs da1
da1a added
# Проверяем создание партиции.
# bsdlabel /dev/da1
# /dev/da1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 1048575966 34 4.2BSD 0 0 0
c: 1048576000 0 unused 0 0 # "raw" part, don't edit
# gpart show da1
=> 0 1048576000 da1 BSD (500G)
0 34 - free - (17K)
34 1048575966 1 freebsd-ufs (500G)
# Создаём файловую систему.
# newfs -U /dev/da1a
/dev/da1a: 512000.0MB (1048575964 sectors) block size 16384, fragment size 2048
using 2787 cylinder groups of 183.72MB, 11758 blks, 23552 inodes.
with soft updates
super-block backups (for fsck -b #) at:
160, 376416, 752672, 1128928, 1505184,
# Можно заодно проверить файловую систему на ошибки, если диск был проблемный. Без указания типа файловой системы неизбежно будет выдана ошибка.
# fsck -t ufs /dev/da1a
** /dev/da1a
** Last Mounted on
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
2 files, 2 used, 253894407 free (23 frags, 31736798 blocks, 0.0% fragmentation)
***** FILE SYSTEM IS CLEAN *****
# mkdir /usr/newdir
# mount /dev/da1a /usr/newdir
# df -h
# Редактируем таблицу автомонтирования.
# ee /etc/fstab
/dev/da1a /usr/newdir ufs rw 2 2
# Если что-то было сделано не так, как хочется, используем эти команды.
# gpart delete -i 1 da1
# gpart destroy da1