Добовление нового жёсткого диска в систему и подготовка к переносу данных на него.
Начнём с приятного, что бы убить диск можно сделать так:
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
Всё приготовлено для переноса данных на другой жёсткий диск.