Gerrit Pape, который поддерживает пакеты xyr runit и daemontools Бернштейна для Debian, является одним из немногих разработчиков, который принял идею "нейтральности init-системы" (о которой много говорили после Debian systemd hoo-hah) действительно близко к сердцу и изо всех сил старался поддерживать их запуск под управлением van Smoorenburginit
, upstart и systemd.
Сценарий пост-инсталляционного сопровождения для runit вы найдете распакованным в вашей системе из пакета где-то, например, /var/lib/dpkg/info/runit.postinst
. Как вы видите, он пытается определить наличие upstart и запустить задание runsvdir
upstart, если upstart присутствует. То же самое он делает с systemd и runit.service
.
К сожалению, на Ubuntu 14 и более поздних версиях и systemd и upstart установлены. Поэтому сценарий сопровождения пакета после установки пытается запустить работу upstart с помощью команды upstart start
. Конечно, upstart не является (по умолчанию) общесистемным менеджером служб в Ubuntu 15 и более поздних версиях, и команда upstart start
не работает.
Ниже приведена примерная схема исправления сценария для решения этой проблемы:
… if test -r /usr/share/debconf/confmodule; then . /usr/share/debconf/confmodule db_purge fi if test -d /run/systemd/system ; then systemctl start runit.service elif test -x /sbin/start ; then /sbin/start runsvdir fi
Это не идеально, но это начало. runit.prerm
и runit.postrm
также требуют некоторой корректировки.
/etc/inittab
уходит в прошлое. . Часто задаваемые ответы. runit.postinst
. runit source. Ubuntu Launchpad. lsblk
это один из способов сделать это:
lsblk -a -o name,model,size,serial
Вот пример вывода:
NAME MODEL SIZE SERIAL
sdh ST8000DM002-1YW1 7.3T ZA11A1W3
На серверах с большим количеством жестких дисков я традиционно использовал lsscsi
, чтобы определить, какой жесткий диск подключен к какому порту.
Вы можете использовать этот вывод для получения имен + устройств и общих имен устройств:
$ lsscsi -g
[0:0:0:0] disk ATA Hitachi HDT72101 A3AA /dev/sda /dev/sg0
[2:0:0:0] disk ATA Hitachi HDS72101 A39C /dev/sdb /dev/sg1
[4:0:0:0] disk ATA Maxtor 6L200P0 1G20 /dev/sdc /dev/sg2
[12:0:0:0] disk WD My Passport 25E2 4005 /dev/sde /dev/sg5
[12:0:0:1] enclosu WD SES Device 4005 - /dev/sg6
И используйте это, чтобы получить список портов на вашем МБ, которые соответствуют указанным выше устройствам:
$ lsscsi -H
[0] ahci
[1] ahci
[2] ahci
[3] ahci
[4] pata_atiixp
[5] pata_atiixp
[12] usb-storage
Вместо этого вы также можете использовать подробный вывод:
$ lsscsi --verbose
[0:0:0:0] disk ATA Hitachi HDT72101 A3AA /dev/sda
dir: /sys/bus/scsi/devices/0:0:0:0 [/sys/devices/pci0000:00/0000:00:11.0/host0/target0:0:0/0:0:0:0]
[2:0:0:0] disk ATA Hitachi HDS72101 A39C /dev/sdb
dir: /sys/bus/scsi/devices/2:0:0:0 [/sys/devices/pci0000:00/0000:00:11.0/host2/target2:0:0/2:0:0:0]
[4:0:0:0] disk ATA Maxtor 6L200P0 1G20 /dev/sdc
dir: /sys/bus/scsi/devices/4:0:0:0 [/sys/devices/pci0000:00/0000:00:14.1/host4/target4:0:0/4:0:0:0]
[12:0:0:0] disk WD My Passport 25E2 4005 /dev/sde
dir: /sys/bus/scsi/devices/12:0:0:0 [/sys/devices/pci0000:00/0000:00:13.2/usb2/2-3/2-3:1.0/host12/target12:0:0/12:0:0:0]
[12:0:0:1] enclosu WD SES Device 4005 -
dir: /sys/bus/scsi/devices/12:0:0:1 [/sys/devices/pci0000:00/0000:00:13.2/usb2/2-3/2-3:1.0/host12/target12:0:0/12:0:0:1]
ПРИМЕЧАНИЕ.:Порт, к которому он подключен, является первой цифрой в этом блоке, например, [0]
против [4]
в выводе lsscsi -H
.
Я также смог использовать lshw
для этого, потому что он сообщает вам, к каким портам и т. д. подключен конкретный жесткий диск, поэтому легче выяснить, какой из них какой в системе с несколькими. Ниже вы можете увидеть /dev/sda
вместе с серийным номером :
$ lshw -c disk -c storage
*-storage
description: SATA controller
product: SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 11
bus info: pci@0000:00:11.0
logical name: scsi0
logical name: scsi2
version: 00
width: 32 bits
clock: 66MHz
capabilities: storage pm ahci_1.0 bus_master cap_list emulated
configuration: driver=ahci latency=64
resources: irq:22 ioport:c000(size=8) ioport:b000(size=4) ioport:a000(size=8) ioport:9000(size=4) ioport:8000(size=16) memory:fbbff800-fbbffbff
*-disk:0
description: ATA Disk
product: Hitachi HDT72101
vendor: Hitachi
physical id: 0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: A3AA
serial: STF604MH0AD4PB
size: 931GiB (1TB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=0005edc1
Вы можете выяснить, кто есть кто, на основе координат их соответствующей информации о шине и физического идентификатора.
Другой метод, который я использовал в прошлом, это smartctl
. Вы можете запросить каждое устройство независимо, чтобы узнать его серийный номер, марку и модель, а также выяснить, какое это устройство, как только вы откроете корпус.
$ smartctl -i /dev/sda
smartctl 5.43 2016-09-28 r4347 [x86_64-linux-2.6.32-642.6.2.el6.x86_64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Model Family: Hitachi Deskstar 7K1000.B
Device Model: Hitachi HDT721010SLA360
Serial Number: STF604MH0AD4PB
LU WWN Device Id: 5 000cca 349c4b953
Firmware Version: ST6OA3AA
User Capacity: 1,000,204,886,016 bytes [1.00 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Thu Aug 2 21:11:01 2018 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
На серверах более высокого уровня, установленных в стойку, вы можете использовать ledctl
, чтобы зажечь светодиод для данного жесткого диска через его имя устройства /dev/
.
# ledctl locate=/dev/rssda will blink drive LED
# ledctl locate={ /dev/rssda /dev/rssdb } will blink both drive LEDs
# ledctl locate_off=/dev/rssda will turn off the locate LED