Добавление (создание) и монтирование нового жесткого диска в OpenBSD

archive view archive save

OpenBSD Если OpenBSD используется в качестве хост платформы для веб хостинга, то рекомендуется отвести отдельный, от системного, диск под каталоги пользователей. Такой подход может сэкономить уйму времени и нервов в случае полного краха системы, а также удобно при переносе домашних каталогов пользователей на другую хост платформу.

Процес добавления и монтирования нового жесткого диска в OpenBSD детально описан по адресу на "вражеском": 14.4 - Adding extra disks in OpenBSD Мы же опишем процесс добавления и монтирования нового жесткого диска в OpenBSD на родимом, на русском.

Установка жесткого диска в систему

Для начала нам сначала нужно установить (подключить) сам жесткий диск (HDD), после того как диск установлен в системный блок, ищем его среди дисков:

dmesg | grep "Hard Drive"
# или
cat /var/run/dmesg.boot | grep "Hard Drive"

Жесткие диски IDE типа в OpenBSD именуются начиная с wdX, а жесткие диски SCSI типа в OpenBSD именуются начиная с sdX где X порядковый (начиная с 0) номер жесткого диска.

Инициализация жесткого диска IDE/SCSI в OpenBSD

Когда находим новый жесткий диск, инициализируем его, а на вопрос "Do you wish to write new MBR and partition table? [n]" обязательно отвечаем "y" если диск совсем новый, не размечался сторонними утилитами и не содержит таблицы разделов:

# fdisk wd2
Disk: wd2       geometry: 520/32/63 [1048576 Sectors]
Offset: 0       Signature: 0x0
            Starting         Ending         LBA Info:
 #: id      C   H   S -      C   H   S [       start:        size ]
-------------------------------------------------------------------------------
 0: 00      0   0   0 -      0   0   0 [           0:           0 ] unused
 1: 00      0   0   0 -      0   0   0 [           0:           0 ] unused
 2: 00      0   0   0 -      0   0   0 [           0:           0 ] unused
 3: 00      0   0   0 -      0   0   0 [           0:           0 ] unused
# fdisk -i wd2
Do you wish to write new MBR and partition table? [n] y
Writing MBR at offset 0.
# fdisk wd2
Disk: wd2       geometry: 520/32/63 [1048576 Sectors]
Offset: 0       Signature: 0xAA55
            Starting         Ending         LBA Info:
 #: id      C   H   S -      C   H   S [       start:        size ]
-------------------------------------------------------------------------------
 0: 00      0   0   0 -      0   0   0 [           0:           0 ] unused
 1: 00      0   0   0 -      0   0   0 [           0:           0 ] unused
 2: 00      0   0   0 -      0   0   0 [           0:           0 ] unused
*3: A6      0   1   2 -    519  31  63 [          64:     1048256 ] OpenBSD

Команда "fdisk -i wd1" в ходе инициализации определит геометрию диска и правильные параметры для CHS (Cylinder, Head, Sector) - MBR нас не интересует имхо это будет обычный диск для домашних каталогов пользователей и никакие ОС с него мы загружать не будем, больше всего нас интересует парильная конфигурация CHS. Если мы будем вручную указывать параметры для CHS и при этом укажем неверные данные, то в лучшем случае получим "кривой" раздел с различными сюрпризами.

Если мы слабо "раздупляемя" в LBA и CHS адресации, значит вручную правильно указать "Starting CHS" (Cylinder, Head, Sector) и "Ending CHS" (Cylinder, Head, Sector) соответственно нам не под силу, а поэтому рекомендуется использовать встроенные в ОС средства инициализации или же предварительно подготавливать жесткий диск специальными утилитами вроде "Symantec Partition Magic" или "GParted".

Разметка жесткого диска IDE/SCSI в OpenBSD

На обычном PC-шном жестком диске можно создать максимум 4-е первичных раздела (Primary Partition), которые могут называться как slice (слайс), больше просто невлазит в главную загрузочную запись (MBR - Master Boot Record). Логических разделов может быть максимум 15-ь, три из которых зарезервированы под системные нужды: a - загрузочный, b - файл подкачки, c - система; остальные метки (disklabel) d, e, f .. могут использоваться по усмотрению пользователя.

Если планируем использовать раздел под файловую систему ext3, тогда меняем назначение первичного раздела с OpenBSD (id A6) на "Linux files*" (id 83):

# fdisk -e wd2
Enter 'help' for information
fdisk: 1> help
        help            Command help list
        manual          Show entire OpenBSD man page for fdisk
        reinit          Re-initialize loaded MBR (to defaults)
        setpid          Set the identifier of a given table entry
        disk            Edit current drive stats
        edit            Edit given table entry
        flag            Flag given table entry as bootable
        update          Update machine code in loaded MBR
        select          Select extended partition table entry MBR
        swap            Swap two partition entries
        print           Print loaded MBR partition table
        write           Write loaded MBR to disk
        exit            Exit edit of current MBR, without saving changes
        quit            Quit edit of current MBR, saving current changes
        abort           Abort program without saving current changes
fdisk: 1> edit 3
            Starting         Ending         LBA Info:
 #: id      C   H   S -      C   H   S [       start:        size ]
-------------------------------------------------------------------------------
*3: A6      0   1   2 -    519  31  63 [          64:     1048256 ] OpenBSD
Partition id ('0' to disable) [0 - FF]: [A6] (? for help) ?
Choose from the following Partition id values:
00 unused         20 Willowsoft     66 NetWare 386    A9 NetBSD
01 DOS FAT-12     24 NEC DOS        67 Novell         AB MacOS X boot
02 XENIX /        27 Win Recovery   68 Novell         AF MacOS X HFS+
03 XENIX /usr     38 Theos          69 Novell         B7 BSDI filesy*
04 DOS FAT-16     39 Plan 9         70 DiskSecure     B8 BSDI swap
05 Extended DOS   40 VENIX 286      75 PCIX           BF Solaris
06 DOS > 32MB     41 Lin/Minux DR   80 Minix (old)    C0 CTOS
07 NTFS           42 LinuxSwap DR   81 Minix (new)    C1 DRDOSs FAT12
08 AIX fs         43 Linux DR       82 Linux swap     C4 DRDOSs < 32M
09 AIX/Coherent   4D QNX 4.2 Pri    83 Linux files*   C6 DRDOSs >=32M
0A OS/2 Bootmgr   4E QNX 4.2 Sec    84 OS/2 hidden    C7 HPFS Disbled
0B Win95 FAT-32   4F QNX 4.2 Ter    85 Linux ext.     DB CPM/C.DOS/C*
0C Win95 FAT32L   50 DM             86 NT FAT VS      DE Dell Maint
0E DOS FAT-16     51 DM             87 NTFS VS        E1 SpeedStor
0F Extended LBA   52 CP/M or SysV   8E Linux LVM      E3 SpeedStor
10 OPUS           53 DM             93 Amoeba FS      E4 SpeedStor
11 OS/2 hidden    54 Ontrack        94 Amoeba BBT     EB BeOS/i386
12 Compaq Diag.   55 EZ-Drive       99 Mylex          EE EFI GPT
14 OS/2 hidden    56 Golden Bow     9F BSDI           EF EFI Sys
16 OS/2 hidden    5C Priam          A0 NotebookSave   F1 SpeedStor
17 OS/2 hidden    61 SpeedStor      A5 FreeBSD        F2 DOS 3.3+ Sec
18 AST swap       63 ISC, HURD, *   A6 OpenBSD        F4 SpeedStor
19 Willowtech     64 NetWare 2.xx   A7 NEXTSTEP       FF Xenix BBT
1C ThinkPad Rec   65 NetWare 3.xx   A8 MacOS X
Partition id ('0' to disable) [0 - FF]: [A6] (? for help) 83
Do you wish to edit in CHS mode? [n]
Partition offset: [64]
Partition size: [1048256] 1048512
fdisk:*1> q
Writing MBR at offset 0.
#

Офсет определился верно , а вот максимальный размер раздела занижен до "Partition size: [1048256]" секторов (по 512 байт) хотя доступно 1048576 - от 1048576 отнимаем 64 (офсет) и указываем вручную 1048512.

Делим первичный раздел жесткого диска (Primary Partition) на логические, в нашем случае используем весь диск и поэтому создаём всего одну метку (disklabel):

# disklabel -E wd2
Label editor (enter '?' for help at any prompt)
> ?
Available commands:
 ? | h    - show help                 n [part] - set mount point
 A        - auto partition all space  p [unit] - print partitions
 a [part] - add partition             q        - quit & save changes
 b        - set OpenBSD boundaries    R [part] - resize auto allocated partition
 c [part] - change partition size     r        - display free space
 D        - reset label to default    s [path] - save label to file
 d [part] - delete partition          U        - undo all changes
 e        - edit drive parameters     u        - undo last change
 g [d|u]  - [d]isk or [u]ser geometry w        - write label to disk
 i        - modify disklabel UID      X        - toggle expert mode
 l [unit] - print disk label header   x        - exit & lose changes
 M        - disklabel(8) man page     z        - delete all partitions
 m [part] - modify partition
 
Suffixes can be used to indicate units other than sectors:
 'b' (bytes), 'k' (kilobytes), 'm' (megabytes), 'g' (gigabytes) 't' (terabytes)
 'c' (cylinders), '%' (% of total disk), '&' (% of free space).
Values in non-sector units are truncated to the nearest cylinder boundary.
> z
> w
> a d
offset: [0] 64
size: [1048512]
FS type: [4.2BSD] ext2fs
> p
OpenBSD area: 0-1048576; size: 1048576; free: 64
#                size           offset  fstype [fsize bsize  cpg]
  c:          1048576                0  unused
  d:          1048512               64  ext2fs
> q

ВНИМАНИЕ!!! Обратите внимание, что при создании метки логического раздела (disklabel) начальный "offset:" должен совпадать с "offset:" первичного раздела, в нашем случае это значение 64, которое нам пришлось указать вручную! А вот максимальный размер "size:" определился автоматически и равен [1048512]. Максимальный размер одного логического раздела или их совокупный размер недолжен превышать размер отведённый под первичный раздел!

Для ручного меток логических разделов (только для прожженных юзеров :) можно использовать:

disklabel -e wd1

Создание и монтирование 4.2BSD раздела в OpenBSD

Наконец, нам нужно создать файловую систему, на созданном только что разделе нового жесткого диска, с помощью newfss(8) - так сказать отформатировать раздел.

newfs wd1d
/dev/rwd1a: 8189.3MB in 16771776 sectors of 512 bytes
41 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each
super-block backups (for fsck -b #) at:
 32, 414688, 829344, 1244000, 1658656, 2073312, 2487968, 2902624, 3317280,
 3731936, 4146592, 4561248, 4975904, 5390560, 5805216, 6219872, 6634528,
 7049184, 7463840, 7878496, 8293152, 8707808, 9122464, 9537120, 9951776,
 10366432, 10781088, 11195744, 11610400, 12025056, 12439712, 12854368,
 13269024, 13683680, 14098336, 14512992, 14927648, 15342304, 15756960,
 16171616, 16586272,

Теперь нужно определится, где мы будем монтировать новый раздел, который мы только что создали. Скажем, мы хотим поставить его на /home. Сначала создадим каталог (точку монтирования) /home если его ещё нет, делаем копию /home, монтируем (натянем) на него раздел /dev/wd1d и восстанавливаем туда /home:

cd /
/usr/sbin/httpd -k stop
tar -zcf home.tgz home
mount /dev/wd1d /home
tar -zxf home.tgz
chown -R user:user /home/user
/usr/sbin/httpd -k start

Последнее, что можно сделать, это добавить в файл /etc/fstab запись о недавно созданом разделе для того, что бы он автоматически монтировался при старте системы и нам не приходилось делать это вручную после каждой перезагрузки:

vi /etc/fstab
/dev/wd1d /home ffs rw 0 2

Теперь наш новый диск готов принимать домашние каталоги пользователей. Система у нас на жестком диске "/dev/wd0", а домашние каталоги пользователей на жестком диске "/dev/wd1".

Создание и монтирование EXT3 раздела в OpenBSD

Для начала нам понадобится пакет программ e2fsprogs:

bash-4.2# pkg_add e2fsprogs
e2fsprogs-1.42.7: ok

Далее всё как обычно - если диск новый, то инициализируем его, создаём первичный раздел, делим его на логические, форматируем:

mkfs.ext3 -L "wd1d" /dev/wd1d

Монтируем: жесткий диск:

cd /
/usr/sbin/httpd -k stop
tar -zcf home.tgz home
mount -t ext2fs /dev/wd1d /home
tar -zxf home.tgz
chown -R user:user /home/user
/usr/sbin/httpd -k start

Правим /etc/fstab:

vi /etc/fstab
/dev/wd1d /home ext2fs rw 0 2

Понятно, что если точка монтирования /home уже была смонтирована ранее, то разумеется её нужно размонтировать используя umound /dev/wdXx и удалить или закомментировать старую запись в /etc/fstab.

Формат записи в /etc/fstab

Формат записи в /etc/fstab имеет следующий формат:

<file system> <dir> <type> <options> <dump> <pass>
  • <file system> - имя монтируемого устройства, путь к нему;
  • <dir> - точка монтирования, путь к каталогу;
  • <type> - тип монтируемой файловой системы;
  • <options> - опции монтирования;
  • <dump> - инструкции для утилиты dump, доступны значения 0 или 1, 1 = сделает резервную копию, 0 = игнорировать файловую систему;
  • <pass> - инструкции приоритета для утилиты fsck, доступны значения 0, 1 и 2, 0 = не проверять файловую систему во время загрузки, 1 = проверять файловую систему в первую очередь (должно быть только у корневой фс), 2 = самый низкий приоритет для остальных файловых систем.

Автор: Олег Головский


Комментарии в блоге
Новое на форуме