Настройка Solaris I/O multipathing feature

Nov 17, 2009 17:34


Переходим к настройке Solaris I/O multipathing feature
Набираем команду format и смотрим какие диски у нас есть
bash-3.00# format
Searching for disks...done

c1t1d0: configured with capacity of 599.97GB
c1t1d1: configured with capacity of 407.98GB
c2t0d0: configured with capacity of 599.97GB
c2t0d1: configured with capacity of 407.98GB

AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0
1. c0t1d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0
2. c1t1d0
/pci@0,600000/pci@0/pci@9/LSILogic,sas@0/sd@1,0
3. c1t1d1
/pci@0,600000/pci@0/pci@9/LSILogic,sas@0/sd@1,1
4. c2t0d0
/pci@1,700000/LSILogic,sas@0/sd@0,0
5. c2t0d1
/pci@1,700000/LSILogic,sas@0/sd@0,1
Specify disk (enter its number):

Диски 0(c0t0d0) и 1(c0t1d0) внутренние диски , нам они в мультипассинге не нужны,
А вот остальные 4-ре диска, это как раз то , что нам нужно.
На сторейджа у нас есть 2 Volume - на 600Г и 410Г,
Соответственно их мы и должны по итогу увидеть.
Для того, чтоб включить мультипассинг на все винты нужно набрать команду
# stmsboot -e
Но мы поскольку мы включаем только сторейдж то придется действовать вручную
Как видим из вывода команды format - у нас volume видятся по 2-м путям
1 - /pci@0,600000/pci@0/pci@9/LSILogic,sas@0/sd@
2 - /pci@1,700000/LSILogic,sas@0/sd@
Но нам нужно указать контроллеры!!!!!!
А это будут -
1 - /pci@0,600000/pci@0/pci@9
2 - /pci@1,700000

Чтож, давайте подредактируем файл /kernel/drv/mpt.conf
Поскольку у нас установленна МС, делать все будем через нее, ибо vi - это на любителя ))
Конец файла у нас выглядит вот так:
# To globally disable MPxIO on all mpt controllers set:
# mpxio-disable="yes";
#
# You can also enable or disable MPxIO on a per HBA basis.
# Per HBA settings override the global setting for the specified HBAs.
# To disable MPxIO on a controller whose parent is /pci@7c0/pci@0/pci@9
# and the unit-address is "0" set:
# name="mpt" parent="/pci@7c0/pci@0/pci@9" unit-address="0" mpxio-disable="yes";
#
mpxio-disable="yes";

#
# SATA mpxio supported
#
# To disable SATA mpxio, set
# disable-sata-mpxio="yes";
# When mpxio-disable="yes" is set, the disable-sata-mpxio property
# has no effect
#
disable-sata-mpxio="no";

нам нужно подправить и добавить строки в конец, чтобы получилось вот так
#
disable-sata-mpxio="yes";
name="mpt" parent="/pci@0,600000/pci@0/pci@9" unit-address="0" mpxio-disable="no";
name="mpt" parent="/pci@1,700000" unit-address="0" mpxio-disable="no";

и на всякий случай в конце последней строки сделаем лишний ентер.
Сохраняем нашу конфигу и перегружаем сервер:
# init 6
updating /platform/sun4u/boot_archive
15+0 records in
15+0 records out
svc.startd: The system is coming down. Please wait.
svc.startd: 77 system services are now being stopped.
Nov 17 15:26:05 testsrv syslogd: going down on signal 15
svc.startd: The system is down.
syncing file systems... done
rebooting...
Resetting..

После перезагрузки смотрим - что у нас получилось:
bash-3.00# format
Searching for disks...done

c3t600A0B80005A8B7C000003674B01647Bd0: configured with capacity of 407.98GB
c3t600A0B80005A87470000031E4B01644Cd0: configured with capacity of 599.97GB

AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0
1. c0t1d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0
2. c3t600A0B80005A8B7C000003674B01647Bd0
/scsi_vhci/disk@g600a0b80005a8b7c000003674b01647b
3. c3t600A0B80005A87470000031E4B01644Cd0
/scsi_vhci/disk@g600a0b80005a87470000031e4b01644c
Specify disk (enter its number):

Что ж - мы видим свои диски по длинным именам -
1 диск - c3t600A0B80005A8B7C000003674B01647Bd0
2 диск - c3t600A0B80005A87470000031E4B01644Cd0
И у нас исчезли лишние диски, в смысле - он теперь каждый диск видит по своему пути, но в случае отказа этого пути - он будет атоматом пользоваться другим.

Осталось “пометить” эти диски - от бишь навесить “label”, установить там файловую систему, подмонтировать эти диски и подправить /etc/vfstab для того, чтоб они цеплялись автоматом при каждой перезагрузке системы.
Приступим: вешаем лейблы
bash-3.00# format
Searching for disks...done

c3t600A0B80005A8B7C000003674B01647Bd0: configured with capacity of 407.98GB
c3t600A0B80005A87470000031E4B01644Cd0: configured with capacity of 599.97GB

AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0
1. c0t1d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0
2. c3t600A0B80005A8B7C000003674B01647Bd0
/scsi_vhci/disk@g600a0b80005a8b7c000003674b01647b
3. c3t600A0B80005A87470000031E4B01644Cd0
/scsi_vhci/disk@g600a0b80005a87470000031e4b01644c
Specify disk (enter its number): 2
selecting c3t600A0B80005A8B7C000003674B01647Bd0
[disk formatted]
Disk not labeled. Label it now? Y
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
! - execute , then return
quit
format> disk

AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0
1. c0t1d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0
2. c3t600A0B80005A8B7C000003674B01647Bd0
/scsi_vhci/disk@g600a0b80005a8b7c000003674b01647b
3. c3t600A0B80005A87470000031E4B01644Cd0
/scsi_vhci/disk@g600a0b80005a87470000031e4b01644c
Specify disk (enter its number)[2]: 3
selecting c3t600A0B80005A87470000031E4B01644Cd0
[disk formatted]
Disk not labeled. Label it now? y
format>
теперь очистим эти диски (кстати format понимает короткие команды, то есть вместо partition я могу написать par и он корректо отработает эту команду)
format> par

PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
! - execute , then return
quit
partition> print
Current partition table (default):
Total disk cylinders available: 38398 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 root wm 0 0 (0/0/0) 0
1 swap wu 0 0 (0/0/0) 0
2 backup wu 0 - 38397 599.97GB (38398/0/0) 1258225664
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 usr wm 0 - 38397 599.97GB (38398/0/0) 1258225664
7 unassigned wm 0 0 (0/0/0) 0

partition>
Удаляем все лишнее
partition> 0
Part Tag Flag Cylinders Size Blocks
0 root wm 0 0 (0/0/0) 0

Enter partition id tag[root]: unassigned
Enter partition permission flags[wm]:
Enter new starting cyl[0]:
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: 0
partition> pr
Current partition table (unnamed):
Total disk cylinders available: 38398 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 swap wu 0 0 (0/0/0) 0
2 backup wu 0 - 38397 599.97GB (38398/0/0) 1258225664
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 usr wm 0 - 38397 599.97GB (38398/0/0) 1258225664
7 unassigned wm 0 0 (0/0/0) 0

partition>
оставляем только второй слайс
partition> 1
Part Tag Flag Cylinders Size Blocks
1 swap wu 0 0 (0/0/0) 0

Enter partition id tag[swap]: unassigned
Enter partition permission flags[wu]: wm
Enter new starting cyl[0]:
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]:
partition> 6
Part Tag Flag Cylinders Size Blocks
6 usr wm 0 - 38397 599.97GB (38398/0/0) 1258225664

Enter partition id tag[usr]: unassigned
Enter partition permission flags[wm]:
Enter new starting cyl[0]:
Enter partition size[1258225664b, 38398c, 38397e, 614368.00mb, 599.97gb]: oMb^H^H^H
Please specify units in either b(blocks), c(cylinders), e(end cylinder),
m(megabytes) or g(gigabytes)
Enter partition size[1258225664b, 38398c, 38397e, 614368.00mb, 599.97gb]: 0mb
partition> pr
Current partition table (unnamed):
Total disk cylinders available: 38398 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 unassigned wm 0 0 (0/0/0) 0
2 backup wu 0 - 38397 599.97GB (38398/0/0) 1258225664
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0

partition>
теперь нам надо сохранить эти изменения
partition> labe
Ready to label disk, continue? y

partition> q

format> lab
Ready to label disk, continue? Y
На всякий сллучай сделали дважды, хоть это не обязательно,
Проверям, чот у нас получилось:
format> q
bash-3.00# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0
1. c0t1d0
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0
2. c3t600A0B80005A8B7C000003674B01647Bd0
/scsi_vhci/disk@g600a0b80005a8b7c000003674b01647b
3. c3t600A0B80005A87470000031E4B01644Cd0
/scsi_vhci/disk@g600a0b80005a87470000031e4b01644c
Specify disk (enter its number): 3
selecting c3t600A0B80005A87470000031E4B01644Cd0
[disk formatted]

format> par

partition> pr
Current partition table (original):
Total disk cylinders available: 38398 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
1 unassigned wm 0 0 (0/0/0) 0
2 backup wu 0 - 38397 599.97GB (38398/0/0) 1258225664
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0

partition>
Все в порядке, значит можем такую же операцию проделать с диском 2
И потом проверяем все ли мы так сделали:

Что ж, пришло время создать на наших дисках файловую систему, и примонтировать их
Наши 2 волума:
c3t600A0B80005A8B7C000003674B01647Bd0: configured with capacity of 407.98GB
c3t600A0B80005A87470000031E4B01644Cd0: configured with capacity of 599.97GB
Больший для оракловской базы, меньший для архивлогов и локальных бекапов,
При этом необходимо помнить что нам нужен весь диск , а значит это будет второй слайс - то есть к имени диска добавится “s2”

bash-3.00# newfs /dev/rdsk/c3t600A0B80005A87470000031E4B01644Cd0s2
newfs: construct a new file system /dev/rdsk/c3t600A0B80005A87470000031E4B01644Cd0s2: (y/n)? y
Warning: 4096 sector(s) in last cylinder unallocated
/dev/rdsk/c3t600A0B80005A87470000031E4B01644Cd0s2: 1258225664 sectors in 204790 cylinders of 48 tracks, 128 sectors
614368.0MB in 12800 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
Initializing cylinder groups:
...............................................................................
...............................................................................
...............................................................................
..................
super-block backups for last 10 cylinder groups at:
1257315104, 1257413536, 1257511968, 1257610400, 1257708832, 1257807264,
1257905696, 1258004128, 1258102560, 1258200992

И второй диск

bash-3.00# newfs /dev/rdsk/c3t600A0B80005A8B7C000003674B01647Bd0s2
newfs: construct a new file system /dev/rdsk/c3t600A0B80005A8B7C000003674B01647Bd0s2: (y/n)? y
Warning: 2304 sector(s) in last cylinder unallocated
/dev/rdsk/c3t600A0B80005A8B7C000003674B01647Bd0s2: 855598848 sectors in 139258 cylinders of 48 tracks, 128 sectors
417772.9MB in 8704 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
Initializing cylinder groups:
...............................................................................
...............................................................................
...............
super-block backups for last 10 cylinder groups at:
854661920, 854760352, 854858784, 854957216, 855055648, 855154080, 855252512,
855350944, 855449376, 855547808
bash-3.00#

Что ж, осталось создать папки для точек монтирования и заняться непосредственно монтированием дисков. При этом ОБРАТИТЬ ВНИМАНИЕ!!! что когда создавали файловую систему - мы создавали на сырых дисках (/dev/rdsk/c3t600A0B80005A87470000031E4B01644Cd0s2),
а монтировать мы будем уже диски с файловой системой
(/dev/dsk/c3t600A0B80005A87470000031E4B01644Cd0s2)
Разница в пути - rdsk - сырые диски, dsk - диски с файловой системой
И монтируем мы все тот же второй слайс!

bash-3.00# mount -F ufs /dev/dsk/c3t600A0B80005A87470000031E4B01644Cd0s2 /db1
bash-3.00# pwd
/
bash-3.00# mount -F ufs /dev/dsk/c3t600A0B80005A8B7C000003674B01647Bd0s2 /db2
bash-3.00#

Что ж теперь можем зайти и проверить

bash-3.00# cd db1
bash-3.00# ls -lh
total 16
drwx------ 2 root root 8.0K Nov 17 15:55 lost+found
bash-3.00# pwd
/db1
bash-3.00#

Наши диски подмонтировались, осталось сделать чтоб диски монтировались автоматом при загрузке системы - это можно сделать подредактировав файл /etc/vfstab
При редактировании этого файла: во-первых - сделайте бекап, и лучше в 2 места,
а во-вторых - в строке разделы идут через табуляцию - ОЧЕНЬ внимательно считайте сколько у вас табуляций.
было:
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0t0d0s1 - - swap - no -
/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no -
/dev/dsk/c0t0d0s4 /dev/rdsk/c0t0d0s4 /var ufs 1 no -
/dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5 /metadb ufs 2 yes -
/dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /opt ufs 2 yes -
/devices - /devices devfs - no -
sharefs - /etc/dfs/sharetab sharefs - no -
ctfs - /system/contract ctfs - no -
objfs - /system/object objfs - no -
swap - /tmp tmpfs - yes -

стало
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0t0d0s1 - - swap - no -
/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no -
/dev/dsk/c0t0d0s4 /dev/rdsk/c0t0d0s4 /var ufs 1 no -
/dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5 /metadb ufs 2 yes -
/dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /opt ufs 2 yes -
/dev/dsk/c3t600A0B80005A87470000031E4B01644Cd0s2 /dev/rdsk/c3t600A0B80005A87470000031E4B01644Cd0s2 /db1 ufs 2 yes -
/dev/dsk/c3t600A0B80005A8B7C000003674B01647Bd0s2 /dev/rdsk/c3t600A0B80005A8B7C000003674B01647Bd0s2 /db2 ufs 2 yes -
/devices - /devices devfs - no -
sharefs - /etc/dfs/sharetab sharefs - no -
ctfs - /system/contract ctfs - no -
objfs - /system/object objfs - no -
swap - /tmp tmpfs - yes -

Что ж, перегружаем сервер и смотрим, что у нас получилось
# init 6
svc.startd: The system is coming down. Please wait.
svc.startd: 77 system services are now being stopped.
Nov 17 16:26:38 testsrv syslogd: going down on signal 15
svc.startd: The system is down.
syncing file systems... done
rebooting...
Resetting..
Rebooting with command: boot
Boot device: disk File and args:
SunOS Release 5.10 Version Generic_141444-09 64-bit
Copyright 1983-2009 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Hostname: testsrv
/dev/rdsk/c0t0d0s5 is clean
/dev/rdsk/c0t0d0s3 is clean
/dev/rdsk/c3t600A0B80005A87470000031E4B01644Cd0s2 is clean
/dev/rdsk/c3t600A0B80005A8B7C000003674B01647Bd0s2 is clean
Reading ZFS config: done.

testsrv console login:
# bash
bash-3.00# cd db1
bash-3.00# ls -lh
total 16
drwx------ 2 root root 8.0K Nov 17 15:55 lost+found
bash-3.00#

ну что ж все загрузилось и замонтировалось. Если по какой-либо причине у вас чтото не получилось - придется выйти в Bootprom (если вы автоматом в него не вылтели) и набрать команду
boot cdrom -s
тогда вы загрузитесь с сидюка, в однопользовательском режиме - нужно будет подмонтировать ваш рутовский раздел и либо откатиться на старый vfstab либо смотреть и искать ошибки

Previous post Next post
Up