Если 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 = самый низкий приоритет для остальных файловых систем.