LINUX.ORG.RU
ФорумAdmin

Монтирование диска на конкретном SATA порту

 , , ,


0

1

Задача. Есть файл сервер с 16 SATA дисками, подключенных через плату SATA контроллера. Роль сервера – хранение архивных файлов. Т.е. к SATA порту 1 подключается диск и на этот диск скидываются данные типа A. После того, как диск заполнится, диск «на горячую» меняется. К этому же SATA порту подключается другой, чистый диск, и туда опять скидываются данные типа A.

Проблема в следующем. В линукс системах имеется система именования дисков sda, sdb… и т.д. НО. Порядок соответствия дисков и портов определяется ОС. Т.е., даже при первой инициализации не факт, что, будет маппинг: sda => sata_port_1, sdb=> sata_port_2… А нам необходимы некие «жесткие точки» монтирования, что ли. Т.е. в скрипте, пишем, что копируем в каталог dir_A, и этому каталогу соответствует диск, который подключен к SATA порту 1. Как нам решить эту проблему ?



Последнее исправление: constant_arapov (всего исправлений: 1)

Монтировать раздел по LABEL не вариант? На диске же перед использованием разделы создаются, или форматируется прям /dev/sda без таблицы?

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

Да, спасибо. На первый взгляд подходит. Теперь проблема, чтобы это все делалось автоматически, на лету.

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

Да, или mount LABEL=метка /mount/pount

По автоматизации не подскажу, потому что не занимался этим вопросом.

Radjah ★★★★★
()

/dev/disk/by-path/ не поможет? Оно к железу не привязывается? То что путь меняется, если воткнуть в другой порт - про это где-то написано, а вот будет ли один и тот же путь для разных дисков на одном порту по очереди - не знаю.

ronkajitsu
()
Ответ на: комментарий от Radjah

Сейчас пытаемся юзать udev под debian Используем скрипт ниже. Не работает.

KERNEL!=«sd[a-z][0-9]», GOTO=«media_by_label_auto_mount_end»

# Import FS infos IMPORT{program}=«/sbin/blkid -o udev -p %N»

# Get a label if present, otherwise specify one ENV{ID_FS_LABEL}!="", ENV{dir_name}=«%E{ID_FS_LABEL}» ENV{ID_FS_LABEL}=="", ENV{dir_name}=«usbhd-%k»

# Global mount options ACTION==«add», ENV{mount_options}=«relatime» # Filesystem-specific mount options ACTION==«add», ENV{ID_FS_TYPE}==«vfat|ntfs», ENV{mount_options}=«$env{mount_options},utf8,gid=100,umask=002»

# Mount the device ACTION==«add», RUN+=«/bin/mkdir -p /media/%E{dir_name}», RUN+=«/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}»

# Clean up after removal ACTION==«remove», ENV{dir_name}!="", RUN+=«/bin/umount -l /media/%E{dir_name}», RUN+=«/bin/rmdir /media/%E{dir_name}»

# Exit LABEL=«media_by_label_auto_mount_end»

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

Потому что нехрен вызывать mount из udev. Из правил udev создавайте симлинки с нужными вам именами (посмотрите в *-persistent-storage.rules для примера/вдохновения), а монтируйте уже через эти симлинки стандартными средствами.

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

Вариант с udev похоже не проходит из за того, что мы пытаемся «на горячую» диски подключать, но привязка происходит к файлам устройств (sda,sdb...) однако при горячем отключении/подключении диска файлы устройств не удаляются и не добавляются.

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

однако при горячем отключении/подключении диска файлы устройств не удаляются и не добавляются

Ты в курсе, что это не хотсвоп, а тупое передёргивание дисков? Диск сначала нужно удалить, а потом вытягивать.

Если же при подключении не создаётся новое блочное устройство, то скорее всего что-то не так с контроллером.

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

Хм, да действительно, это так. Получается, что в случае SATA дисков, нужно его явно оффлайн сделать.

constant_arapov
() автор топика
Ответ на: комментарий от Harliff
ata-WDC_WD30EFRX-68AX9N0_WD-WCC1T0383184
ata-WDC_WD30EFRX-68AX9N0_WD-WCC1T0383184-part1
ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N4DT2KVR
ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N4DT2KVR-part1
...
wwn-0x50014ee2081b018f
wwn-0x50014ee2081b018f-part1
wwn-0x50014ee20d209986
wwn-0x50014ee20d209986-part1
...

o_0

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

Перечитал топик. Немного странный у вас use case... Извините, невнимательно прочитал в первый раз (точнее, недочитал).

Используйте /dev/disk/by-path и привязывайтесь к LUN'ам.

Пример:

$ ls /dev/disk/by-path -1   

pci-0000:02:00.0-scsi-0:0:0:0
pci-0000:02:00.0-scsi-0:0:0:0-part1
pci-0000:02:00.0-scsi-0:0:0:0-part2
pci-0000:02:00.0-scsi-0:0:0:0-part3
pci-0000:02:00.0-scsi-0:0:1:0
pci-0000:02:00.0-scsi-0:0:1:0-part1
pci-0000:02:00.0-scsi-0:1:10:0
pci-0000:02:00.0-scsi-0:1:10:0-part1
pci-0000:02:00.0-scsi-0:1:10:0-part9
pci-0000:02:00.0-scsi-0:1:11:0
pci-0000:02:00.0-scsi-0:1:11:0-part1
pci-0000:02:00.0-scsi-0:1:11:0-part9
pci-0000:02:00.0-scsi-0:1:12:0
pci-0000:02:00.0-scsi-0:1:12:0-part1
pci-0000:02:00.0-scsi-0:1:12:0-part9
pci-0000:02:00.0-scsi-0:1:13:0
pci-0000:02:00.0-scsi-0:1:13:0-part1
pci-0000:02:00.0-scsi-0:1:13:0-part9
pci-0000:02:00.0-scsi-0:1:14:0
pci-0000:02:00.0-scsi-0:1:14:0-part1
pci-0000:02:00.0-scsi-0:1:14:0-part9
pci-0000:02:00.0-scsi-0:1:15:0
pci-0000:02:00.0-scsi-0:1:15:0-part1
pci-0000:02:00.0-scsi-0:1:15:0-part9
pci-0000:02:00.0-scsi-0:1:4:0
pci-0000:02:00.0-scsi-0:1:4:0-part1
pci-0000:02:00.0-scsi-0:1:7:0
pci-0000:02:00.0-scsi-0:1:7:0-part1
pci-0000:02:00.0-scsi-0:1:7:0-part9

Harliff ★★★★★
()
Последнее исправление: Harliff (всего исправлений: 2)
Ответ на: комментарий от Harliff

Вот это наверное лучше всего подойдет. Можно даже скрипт подготовки носителя навесить.

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