LINUX.ORG.RU
решено ФорумAdmin

Удалил /dev/sdb, как создать заново?


0

0

Во время «тренировки» с клонированием ОС умудрился каким-то образом удалить /dev/sdb... :(
sdb - это второй диск, ОС (Fedora-6) находится на /dev/sda.
При этом в /dev остались sdb1, sdb5, sdb6 и sdb7. Естественно без sdb с диском сделать что-либо невозможно.
Соответственно fdisk /dev/sdb сообщает:

Unable to open /dev/sdb
udevinfo -a -p /block/sdb диск видит:
  looking at device '/block/sdb':
    KERNEL=="sdb"
    SUBSYSTEM=="block"
    SYSFS{stat}==" 3510727 252199093 263670415  8802400  1010662 126597174 128939443 82960792        0  4365100 91763032"
    SYSFS{size}=="312581808"
    SYSFS{removable}=="0"
    SYSFS{range}=="16"
    SYSFS{dev}=="8:16"

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/host0/target0:0:1/0:0:1:0':
    ID=="0:0:1:0"
    BUS=="scsi"
    DRIVER=="sd"
    SYSFS{ioerr_cnt}=="0x14"
    SYSFS{iodone_cnt}=="0x44ff34"
    SYSFS{iorequest_cnt}=="0x44ff34"
    SYSFS{iocounterbits}=="32"
    SYSFS{timeout}=="60"
    SYSFS{state}=="running"
    SYSFS{rev}=="ZM10"
    SYSFS{model}=="SAMSUNG HD160JJ "
    SYSFS{vendor}=="ATA     "
    SYSFS{scsi_level}=="6"
    SYSFS{type}=="0"
    SYSFS{queue_type}=="none"
    SYSFS{queue_depth}=="1"
    SYSFS{device_blocked}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/host0/target0:0:1':
    ID=="target0:0:1"
    BUS==""
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/host0':
    ID=="host0"
    BUS==""
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2':
    ID=="0000:00:1f.2"
    BUS=="pci"
    DRIVER=="ata_piix"
    SYSFS{broken_parity_status}=="0"
    SYSFS{enable}=="1"
    SYSFS{modalias}=="pci:v00008086d00002680sv00008086sd00003484bc01sc01i8f"
    SYSFS{local_cpus}=="ffffffff"
    SYSFS{irq}=="58"
    SYSFS{class}=="0x01018f"
    SYSFS{subsystem_device}=="0x3484"
    SYSFS{subsystem_vendor}=="0x8086"
    SYSFS{device}=="0x2680"
    SYSFS{vendor}=="0x8086"

  looking at parent device '/devices/pci0000:00':
    ID=="pci0000:00"
    BUS==""
    DRIVER==""
Возможно ли, воспользовавшись этой информацией, создать /dev/sdb и восстановить разделы, не перезагружая сервер?


Ответ на: комментарий от anonymous

Рестарт udev поможет обрушить систему.

Чо?

.-(/home/repo)------------------------------------------------(root@persephone)-
`--# /etc/init.d/udev stop 
Stopping the hotplug events dispatcher: udevd [OK]
.-(/home/repo)------------------------------------------------(root@persephone)-
`--# /etc/init.d/udev start
Starting the hotplug events dispatcher: udevd [OK]
Synthesizing the initial hotplug events...[DONE]
Waiting for /dev to be fully populated...[DONE]
GotF ★★★★★
()
Ответ на: комментарий от Fracta1L

+1

Точнее:

mknod /dev/sdb b 8 16

chown root:disk /dev/sdb

chmod 0660 /dev/sdb P.S. По крайней мене на 13-й федоре права именно такие.

vga ★★
()

> Возможно ли, воспользовавшись этой информацией, создать /dev/sdb и восстановить разделы, не перезагружая сервер?

Восстанавливать никакие разделы не нужно. /dev/sdb — как точка монтирования для устройства.

mknod [OPTION]... NAME TYPE [MAJOR MINOR]

# mknod /dev/sdb b 8 [MINOR]

NAME = /dev/sdb

TYPE = b

MAJOR = 8

# ls -la /dev/sd*
brw-rw---- 1 root disk 8, 0 2010-06-21 21:11 /dev/sda
brw-rw---- 1 root disk 8, 1 2010-06-21 21:11 /dev/sda1
brw-rw---- 1 root disk 8, 2 2010-06-21 17:11 /dev/sda2
brw-rw---- 1 root disk 8, 3 2010-06-21 17:11 /dev/sda3

Посмотри внимательно на sdb1, sdb5, sdb6 и sdb7.

MINOR = попробуй угадать из последовательсти 'ls -la /dev/sd*' — это столбец вида '8, 0','8, 1','8, 2','8, 3', между 'disk' и датой.

Возьми за основу /dev/sdb1 |8, X|,
тогда /dev/sdb |8, X-1|,
т.е. MAJOR = 8, MINOR = X-1.

Neksys ★★★
()
Ответ на: комментарий от GotF

Чо?

Это конечно здорово, но ты уверен, что на ШЕСТОЙ федоре все пройдет так же гладко? Я бы мкнод таки сделал и не рисковал.

vga ★★
()
Ответ на: комментарий от Neksys

Ну да, но вроде бы оно захардкоджено.

The whole device is numbered as 0, 16, 32.. (n-1)*16. The partitions are numbered with the minor number for the drive + the number of partition. Thus, if sdb is 16, sdb1 is 17.

Но согласен, лучше таки глянуть, что /dev/sdb1 таки 17-й, на всяк случай.

vga ★★
()
Ответ на: комментарий от GotF

Та должен быть, по крайней мере в 13-й есть.

vga ★★
()
Ответ на: комментарий от Fracta1L

>mknod /dev/sdb

некрасиво, если он только этот «файл» удалил а не раздел то можно заставить ядро перечитать таблицу разделов (команду не помню).

Lucky1 ★★★
()

udevadm trigger --subsystem-match=block
udevadm settle --timeout=60

anon_666
()
Ответ на: комментарий от isden

mknod /dev/sdb

Благодарю. Помогло.

а рестарт udev не поможет?

Не рискнул, опасаясь того, что во время рестарта что-нибудь глюкнет в рабочей ФС..

KovAl
() автор топика
Ответ на: комментарий от GotF

Должно помочь.

[root@q45 ~]# ls /dev/sdb -la
brw-rw----. 1 root disk 8, 16 Jul 16 14:29 /dev/sdb
[root@q45 ~]# /dev/MAKEDEV update
don't know how to make device "update"
[root@q45 ~]# /dev/MAKEDEV /dev/sdb
[root@q45 ~]# ls /dev/sdb -la
brw-r-----. 1 root disk 8, 16 Jul 16 14:27 /dev/sdb

Не помогает, /dev/MAKEDEV /dev/sdb - помогает, но права немножко не те, нет доступа на чтение для disk, хотя не думаю, что это критично.

vga ★★
()

Можно было не долбаться с makedev, а выполнить
echo "- - -" > /sys/class/scsi_host/host0/scan

Это более правильный метод.

anon_666
()
Ответ на: комментарий от Lucky1

>mknod /dev/sdb

некрасиво, если он только этот «файл» удалил а не раздел то можно заставить ядро перечитать таблицу разделов (команду не помню).

Да мне по-барабану содержимое, мне диск чистый нужен. :)

mknod /dev/sdb b 8 16
спасло Отца Русской демократии. :) Минор вычислил именно "-1" от sdb1.

KovAl
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.