Карта sd?/sdd? имена к дисковым именам Соляриса?

Alt + Up / Down и Ctrl + Alt + Up / Down зарезервированы Chromebook. Вы можете открыть Файл -> Настройки -> Сочетания клавиш в VS Code и изменить Переместить настройки Line Up / Down на что-то еще.

сочетания клавиш Chromebook

сочетания клавиш Chromebook изображение

7
задан Erlend Leganger 17 February 2009 в 08:25
поделиться

8 ответов

Идея следующего Amit ответить на мой собственный вопрос, это - то, что я придумал:

iostat -x|tail -n +3|awk '{print $1}'>/tmp/f0.txt.$$
iostat -nx|tail -n +3|awk '{print "/dev/dsk/"$11}'>/tmp/f1.txt.$$
paste -d= /tmp/f[01].txt.$$
rm /tmp/f[01].txt.$$

При выполнении этого на Солярисе 10 серверов дают следующий вывод:

sd0=/dev/dsk/c0t0d0
sd1=/dev/dsk/c0t1d0
sd4=/dev/dsk/c0t4d0
sd6=/dev/dsk/c0t6d0
sd15=/dev/dsk/c1t0d0
sd16=/dev/dsk/c1t1d0
sd21=/dev/dsk/c1t6d0
ssd0=/dev/dsk/c2t1d0
ssd1=/dev/dsk/c3t5d0
ssd3=/dev/dsk/c3t6d0
ssd4=/dev/dsk/c3t22d0
ssd5=/dev/dsk/c3t20d0
ssd7=/dev/dsk/c3t21d0
ssd8=/dev/dsk/c3t2d0
ssd18=/dev/dsk/c3t3d0
ssd19=/dev/dsk/c3t4d0
ssd28=/dev/dsk/c3t0d0
ssd29=/dev/dsk/c3t18d0
ssd30=/dev/dsk/c3t17d0
ssd32=/dev/dsk/c3t16d0
ssd33=/dev/dsk/c3t19d0
ssd34=/dev/dsk/c3t1d0

Решение не очень изящно (это не острота), но это, кажется, работает.

8
ответ дан 6 December 2019 в 08:45
поделиться

Попытайтесь использовать '-n' переключатель. Для, например, 'iostat-n'

3
ответ дан 6 December 2019 в 08:45
поделиться

sd0 sdd0 является названиями экземпляра устройств.. можно проверить/etc/path_to_inst, чтобы получить имя экземпляра, отображающееся на название физического устройства, затем проверить ссылку в/dev/dsk (на которое физическое устройство это указывает), это - 100%-й верный метод, хотя я не знаю, как кодировать его ;)

0
ответ дан 6 December 2019 в 08:45
поделиться

Некоторое время назад я нашел этот фрагмент в Интернете, и он помогает. Это было в Solaris 8:

#!/bin/sh
cd /dev/rdsk
/usr/bin/ls -l *s0 | tee /tmp/d1c |awk '{print "/usr/bin/ls -l "$11}' | \
sh | awk '{print "sd" substr($0,38,4)/8}' >/tmp/d1d
awk '{print substr($9,1,6)}' /tmp/d1c |paste - /tmp/d1d
rm /tmp/d1[cd]
0
ответ дан 6 December 2019 в 08:45
поделиться

Небольшое изменение, позволяющее использовать имена дисков длиной более 8 символов (встречается при работе с дисковыми массивами в SAN)

#!/bin/sh

cd /dev/rdsk
/usr/bin/ls -l *s0 | tee /tmp/d1c | awk '{print "/usr/bin/ls -l "$11}' | \
sh | awk '{print "sd" substr($0,38,4)/8}' >/tmp/d1d
awk '{print substr($9,1,index($9,"s0)-1)}' /tmp/d1c | paste - /tmp/d1d
rm /tmp/d1[cd]
0
ответ дан 6 December 2019 в 08:45
поделиться

В Руководстве по переходу Solaris я обнаружил следующее:

«Имена экземпляров

Имена экземпляров относятся к n-му устройству в системе (например, sd20).

Экземпляр имена иногда сообщаются в сообщениях об ошибках драйвера. Вы можете определить привязку имени экземпляра к физическому имени, просмотрев выходные данные dmesg (1M) , как в следующем примере.

sd9 at esp2: target 1 lun 1
sd9 is /sbus@1,f8000000/esp@0,800000/sd@1,0
     <SUN0424 cyl 1151 alt 2 hd 9 sec 80>

Once the instance name был назначен устройству, оно остается привязанным к этому устройству.

Номера экземпляров закодированы во второстепенном номере устройства. Чтобы номера экземпляров согласовывались при перезагрузках, система записывает их в файл / etc / path_to_inst. Этот файл является только чтение во время загрузки и в настоящее время обновляется с помощью add_drv (1M) и drvconf "

Таким образом, исходя из этого,Я написал следующий сценарий:

для устройства в / dev / dsk / * s2

do

dpath="$(ls -l $device | nawk '{print $11}')"

dpath="${dpath#*devices/}"

dpath="${dpath%:*}"

iname="$(nawk -v dpath=$dpath '{

    if ($0 ~ dpath) {

        gsub("\"", "", $3)

        print $3 $2

    }

}' /etc/path_to_inst)"

echo "$(basename ${device}) = ${iname}"

done

By reading the information directly out of the path_to_inst file, we are allowing for adding and deleting devices, which will skew the instance numbers if you simply count the instances in the /devices directory tree.
2
ответ дан 6 December 2019 в 08:45
поделиться

Как указано в других ответах, вы можете сопоставить имя устройства с именем экземпляра через путь к устройству и информацию, содержащуюся в / etc / path_to_inst . Вот сценарий Perl, который выполнит эту задачу:

#!/usr/bin/env perl

use strict;

my @path_to_inst = qx#cat /etc/path_to_inst#;
map {s/"//g} @path_to_inst;
my ($device, $path, @instances);

for my $line (qx#ls -l /dev/dsk/*s2#) {
    ($device, $path) = (split(/\s+/, $line))[-3, -1];
    $path =~ s#.*/devices(.*):c#$1#;

    @instances =
        map {join("", (split /\s+/)[-1, -2])}
            grep {/$path/} @path_to_inst;
*emphasized text*
    for my $instance (@instances) {
        print "$device $instance\n";
    }
}
2
ответ дан 6 December 2019 в 08:45
поделиться

Одна лайнер-версия принятого ответа (у меня только 1 репутация, поэтому я не могу опубликовать комментарий):

  paste -d= <(iostat -x | awk '{print $1}') <(iostat -xn | awk '{print $NF}') | tail -n +3
5
ответ дан 6 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: