Проект переехал на новый домен!  [[ перейти ]]

Добовление нового жёсткого диска в систему и подготовка к переносу данных на него.

Начнём с приятного, что бы убить диск можно сделать так:
sh# dd if=/dev/zero of=/dev/ad1 bs=1k count=1
----------------------------------------------------------
1+0 records in
1+0 records out
1024 bytes transferred in 0.001491 secs (686755 bytes/sec)
----------------------------------------------------------

Диски обозначаются: /dev/ad0, /dev/ad1

fdisk - для создания и просмотра BIOS'овских таблиц разделов, слайсов, до 4 шт.!
Иными словами это - деление физического диск на логические...
Краткий просмотр структуры диска, можно задать так:
sh# fdisk -s /dev/ad1 
Для инициализации нового диска:
sh# fdisk -B -I /dev/ad1
На выходе получаем: ad1s1

bsdlabel(disklabel) - для создания и просмотра UNIX'вых таблиц разделов, партиций, до 8 шт.! 
(Итог 4 слайса * 8 партиций = 32 всех партиций...)
a - корневая система
b - файл подкачки
c - неиспользуемая (unused) и означает весь слайс целиком
d - может быть задействован как обычный раздел
e - может быть задействован как обычный раздел
f - может быть задействован как обычный раздел
Размечаем:
sh# bsdlabel -Bw /dev/ad1s1
Редактируем только что созданную метку диска и добавляем разделы:
sh# bsdlabel -e /dev/ad1s1
или сохраняем на будущее нашу разметку...
sh# bsdlabel /dev/ad1s1 > /tmp/lbl
сделаем копию и...
sh# cp /tmp/lbl /tmp/lbl.bak
отредактируем нашу метку в любом редакторе...
sh# cat /tmp/lbl
---------------------------------------------------------------------------------
# /dev/ad1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  8388592       16    unused        0     0
  c:  8388608        0    unused        0     0         # "raw" part, don't edit
---------------------------------------------------------------------------------
Так она выглядела изначально...
После редактирования выглядит так:
--------------------------------------------------------
# /dev/ad1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:     256M       16    unused        0     0
  b:     512M        *      swap        0     0
  c:  8388513        0    unused        0     0
  d:       1G        *    unused        0     0
  e:       5G        *    unused        0     0
--------------------------------------------------------
Теперь немного в сторону... Винт 4Gb и я умышленно
поставил диск e: размеров в 5Gb на что мне при присвоении
метки диску вывалилось:
sh# bsdlabel -R /dev/ad1s1 /tmp/lbl
-----------------------------------------------
partition e: partition extends past end of unit
-----------------------------------------------
Уходя дальше в теорию сделаем выводы из handbook'a, и приведём всё к порядку...
Из расчёта, что у нас винт 4Gb:
a: - у нас корневая система и 256Mb, более и не понадобится.
b: - файл подкачки должен быть в 2,5 раза больше ОЗУ... 
Но так как у нас места тоже не особо много а ОЗУ 256Mb сделаем b: 512Mb
c: - не трогаем...
d: - будет /var, сдесь будет 1Gb, так как хранятся логи и пр. ...
e: - у нас будет каталог /usr, туда оставим всё оставшееся место.
Можно было бы отделить и /tmp и /home, но в другой жизни.

Исправляем нашу специальную АшЫПку... и получаем в конце концов:
sh# ee /tmp/lbl
--------------------------------------------------------
# /dev/ad1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:     256M       16    unused        0     0
  b:     512M        *      swap        0     0
  c:  8388513        0    unused        0     0
  d:       1G        *    unused        0     0
  e:        *        *    unused        0     0
--------------------------------------------------------
Что отвечает за что... можно почитать в:
sh# man bsdlabel
и по поводу [fsize bsize bps/cpg] в:
sh# man newfs 
Далее вновь..
sh# bsdlabel -R /dev/ad1s1 /tmp/lbl
И в ответ тишина а значит что всё прошло гладко!
А значит нашу lbl можно припрятать а lbl.bak затереть...
На выходе получаем:
sh# ls /dev/ad1*
-----------------------------------------------------------
/dev/ad1        /dev/ad1s1a     /dev/ad1s1c     /dev/ad1s1e
/dev/ad1s1      /dev/ad1s1b     /dev/ad1s1d
-----------------------------------------------------------
Просмотр:
sh# disklabel /dev/ad1s1
--------------------------------------------------------------------------------
# /dev/ad1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   524288       16    unused        0     0
  b:  1048576   524304      swap
  c:  8388513        0    unused        0     0         # "raw" part, don't edit
  d:  2097152  1572880    unused        0     0
  e:  4718481  3670032    unused        0     0

--------------------------------------------------------------------------------
Что было звёздочками... всё высчиталось и встало на свои места...

Осталось отформатировать дабы привести в пригодность наши FS:

newfs - для создания файловой системы на любой партиции
	(т.к. вновь созданая партиция содержит мусор)
Для создания файловой системы UFS2 с поддержкой Soft Updates
sh# newfs -O2 -U /dev/ad1s1a
--------------------------------------------------------------------------
/dev/ad1s1a: 256.0MB (524288 sectors) block size 16384, fragment size 2048
        using 4 cylinder groups of 64.02MB, 4097 blks, 8256 inodes.
        with soft updates
super-block backups (for fsck -b #) at:
 160, 131264, 262368, 393472
--------------------------------------------------------------------------
И смотрим снова:
sh# disklabel /dev/ad1s1
--------------------------------------------------------------------------------
# /dev/ad1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   524288       16    4.2BSD     2048 16384 32776
  b:  1048576   524304      swap
  c:  8388513        0    unused        0     0         # "raw" part, don't edit
  d:  2097152  1572880    unused        0     0
  e:  4718481  3670032    unused        0     0
--------------------------------------------------------------------------------
Видим что [fsize bsize bps/cpg] - заполнились по дефолту. Если интересно
можно поигратся с настройками newfs... 

А пока довёдм до ума оставшиеся разделы:
sh# newfs -O2 -U /dev/ad1s1d && newfs -O2 -U /dev/ad1s1e
----------------------------------------------------------------------------
/dev/ad1s1d: 1024.0MB (2097152 sectors) block size 16384, fragment size 2048
        using 6 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
        with soft updates
super-block backups (for fsck -b #) at:
 160, 376512, 752864, 1129216, 1505568, 1881920
/dev/ad1s1e: 2303.9MB (4718480 sectors) block size 16384, fragment size 2048
        using 13 cylinder groups of 183.77MB, 11761 blks, 23552 inodes.
        with soft updates
super-block backups (for fsck -b #) at:
 160, 376512, 752864, 1129216, 1505568, 1881920, 2258272, 2634624, 3010976,
 3387328, 3763680, 4140032, 4516384
----------------------------------------------------------------------------
И... вновь...
sh# bsdlabel /dev/ad1s1
--------------------------------------------------------------------------------
# /dev/ad1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   524288       16    4.2BSD     2048 16384 32776
  b:  1048576   524304      swap
  c:  8388513        0    unused        0     0         # "raw" part, don't edit
  d:  2097152  1572880    4.2BSD     2048 16384 28552
  e:  4718481  3670032    4.2BSD     2048 16384 28552
--------------------------------------------------------------------------------
После этого каждая файловая система содержит индексные таблицы.

Осталось подправить файл /etc/fstab, дабы разделы монтировались автоматически:
Посмотрим, что есть:
sh# cat /etc/fstab
-----------------------------------------------------------------------------
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b             none            swap    sw              0       0
/dev/ad0s1a             /               ufs     rw              1       1
/dev/ad0s1e             /tmp            ufs     rw              2       2
/dev/ad0s1f             /usr            ufs     rw              2       2
/dev/ad0s1d             /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
------------------------------------------------------------------------------
Опять немного в теорию...

Файл /etc/fstab - это простенькая база данных в текстовом формате 
    (разделение полей - пробелами или табуляцией), включающая следующие поля:
    * Device - имя файла устройства, на котором расположена файловая система, 
      аналогично первому аргументу команды mount при ручном ее использовании;
    * Mountpoint - точка монтирования (соответствует второму аргументу команды mount);
    * FStype - тип файловой системы, указываемый также, как значение опции -t;
    * Options - дополнительные опции монтирования, аналогично значениям опции -o;
    * Dump - условия выполнения резервного копирования файловой системы утилитой утилитой dump;
    * Pass# - условия проверки файловой системы утилитой fsck.

Значения в поле Pass# трактуются так:
 Определяет порядок, в котором следует проверять файловые системы 
 (чаще всего, в случае некорректного размонтирования или внезапной перезагрузки системы).    
 Если файловую системы не нужно проверять, этот параметр должен быть установлен в ноль. 
 Для корневой файловой системы (которая должна быть проверена в  первую очередь) установите его в 1. 
 Для всех остальных - 2 или больше. Если две или более файловые системы имеют одинаковое значение passno, 
 fsck попытается проверять их параллельно (если, конечно, это возможно физически).

Усвоив что есть что... подправим...
sh# ee /etc/fstab
-----------------------------------------------------------------------------
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b             none            swap    sw              0       0
/dev/ad0s1a             /               ufs     rw              1       1
/dev/ad0s1e             /tmp            ufs     rw              2       2
/dev/ad0s1f             /usr            ufs     rw              2       2
/dev/ad0s1d             /var            ufs     rw              2       2
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

/dev/ad1s1a             /mnt/           ufs     rw              0       0
/dev/ad0s1d             /mnt/var        ufs     rw              0       0
/dev/ad1s1e             /mnt/usr        ufs     rw              0       0
------------------------------------------------------------------------------
sh# reboot

Всё приготовлено для переноса данных на другой жёсткий диск.