Июл 12 2010

Разбиваем диск с помощью fdisk, bsdlabel, newfs

Случается такое, что приходится работать с новым диском в ситуации когда вызвать sysinstall нет возможности. Например при работе с LifeCD или при установке в различных датацентрах или при восстановлении информации тут же с загрузившись с полумервого диска, когда нет возможности забрать сервер с собой(тут часто административные вопросы мешают) и нет возможности воспользоваться CD или DVD диском.

Первым делом подключив новый диск, мы увидим его в списке устройств.
К примеру для пусть он будет /dev/ad6.
Теперь мы должны сделать на нем слайс. Для этого нам поможет fdisk.
Вызываем его вот так:

fdisk -BI /dev/ad6

Он должен написать что то типа:

******* Working on device /dev/ad6 *******

По окончанию работы fdisk вывалится в командную строку. Это мы создали слайс на весь диск.
А в списке устройств появится /dev/ad6s1
Теперь можно приступать к разбиению слайса на разделы. Для этого служит bsdlabel.
bsdlabel — утилита для просмотра и редактирования разделов на слайсе. Если мы натравим bsdlabel на слайс на ad0, уже разбитый

 bsdlabel /dev/ad0s1

то увидим примерно такое:

# /dev/ad0s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   759808        0    4.2BSD        0     0     0
  b:  1998074   759808      swap
  c: 14666337        0    unused        0     0         # "raw" part, don't edit
  d:  1087488  2757882    4.2BSD        0     0     0
  e:   614400  3845370    4.2BSD        0     0     0
  f: 10206567  4459770    4.2BSD        0     0     0

Тут мы видим набор букв a:, b:, c: — это имена разделов, при этом c: нельзя использовать, он в любом случае должен оставаться неразбитый. Цифры size — это размер раздела в блоках, а offset — это сколько блоков до начала этого раздела.
4.2BSD — тип файловой системы. Для FreeBSD ufs — всегда будет 4.2BSD.
Но нам же нужно создать свой раздел.
Сам слайс мы создали, теперь нужно разметить слайс и поставить загрузчик.
Для этого выполним команду:

bsdlabel -wB /dev/ad6s1

И теперь можно посмотреть на слайс с помощью bsdlabel:

bsdlabel /dev/ad6s1

И увидем мы 2 раздела:

# /dev/ad6s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 1465149089       16    unused        0     0
  c: 1465149105        0    unused        0     0         # "raw" part, don't edit

Первый a: отсутствует файловая система, он то нам и нужен, его и будем править. И c: он помечен как don’t edit, его трогать не будем.
Итак, если нам нужно создать 1 раздел, то делаем так:

bsdlabel -e /dev/ad6s1

Он у нас откроется в редакторе. В том редакторе который у вас прописан в переменной окружения EDITOR, по умолчанию это vi.
Вид будет такой:

# /dev/ad6s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 1465149089       16    unused        0     0
  c: 1465149105        0    unused        0     0         # "raw" part, don't edit
~
~
~
~
~

И заменяем unused на 4.2BSD

# /dev/ad6s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 1465149089       16    4.2BSD        0     0
  c: 1465149105        0    unused        0     0         # "raw" part, don't edit

Все. Раздел мы создали. Теперь можно его форматировать:

newfs -U /dev/ad6s1a

флаг -U означает что мы включили SoftUpdate, без него диск будет работать в Async режиме.
Вроде все просто. А что делать если надо сделать несколько разделов. Тут процедура не намного сложнее.
Открываем в том же bsdlabel -e:

bsdlabel -e /dev/ad6s1

И вписываем в таком виде:

#        size   offset    fstype   [fsize bsize bps/cpg]
  a: 10G       16    4.2BSD        0     0     0
  b: 20G       *     4.2BSD        0     0      0
  d: *         *     4.2BSD        0     0      0
  c: 1465149105        0    unused        0     0         # "raw" part, don't edit

Как видите я не считал размер в блоках, я не считал offset, я отдал это все на откуп bsdlabel. Указал желаемые размеры разделов для первых двух. А для поледнего указал одни *, это означает использовать все текущее пространство. После этого форматируем разделы с помощью newfs:

newfs -U /dev/ad6s1a
newfs -U /dev/ad6s1b
newfs -U /dev/ad6s1d

В общем то и все. Не так страшно ручное разбиение.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть