Убунту подключить диск на горячую
Очень простой запрос, который требует вашего любезного руководства. Если я нахожусь в командной строке в DOS или Windows, я бы использовал (если я на диске C:) d: перейти на диск D. Что является эквивалентом в терминале Ubuntu, если я хочу перемещаться между разделами, от sda1 до sda2 например?
Хорошо, это одно из фундаментальных отличий между Windows и Linux. Файловая система Windows использует устройства в качестве отправных точек для каждого раздела файловой системы. Так что у тебя есть:
Системы Linux / Unix используют концепцию единой файловой системы. Все находится в корневой папке и может быть произвольно смешано. Пользователь и программы не знают об устройствах, потому что они были абстрагированы. Таким образом, все системы Linux будут иметь одинаковую общую иерархию .
Система Linux будет выглядеть примерно так:
Но эти папки могут находиться на одном жестком диске или на отдельных жестких дисках. Они могут даже быть сетевыми папками! Существует специальная папка / dev, если программе действительно нужно общаться с физическим устройством. Таким образом, в любом месте, куда вы хотите перейти в системе Linux, никогда не потребуется переключение устройств, как в Windows.
Однако иногда устройство не добавляется в файловую систему! Он будет подключен, ОС может видеть его как устройство, но он не был подключен . Современные системы Linux постараются сделать это для вас по мере необходимости. Иногда это не работает, и вы должны сделать это самостоятельно. Вот для чего предназначена команда mount . Это также оригинальная цель папки / mnt, поэтому у вас может быть очевидное место для монтирования новых разделов файловой системы.
Перед установкой диска:
После монтирования диска в / mnt / temp:
Таким образом, вы можете смонтировать диск, а затем использовать cd для его перемещения или в любом месте файловой системы. Это позволяет делать такие аккуратные вещи, как размещение вашего /home каталога на отдельном жестком диске, на случай, если вы захотите позже переключить дистрибутивы Linux, или вы можете создать его резервную копию. Папка / tmp часто вообще отсутствует на реальном устройстве! Это может быть какой-то баран, рассматриваемый как папка. Это позволяет легко помещать туда вещи, а затем очищать их при перезагрузке.
Современный Linux (2.6+) может обнаруживать новоподключенные устройства (на шинах, которые поддерживают hotplug). Их можно, так же отключать, предварительно отмонтировав файловые системы и сделав sync. Среди hotplug шин не только USB, но и SATA, SCSI и SAS (в теории, это же применимо и к PATA, но там много глупых контроллеров, которые не умеют адекватно реагировать на исчезновение устройства).
Отключать их лучше не дёргая на ходу физическое устройство, а сказав ядру полностью забыть про про него (гарантируя тем самым, что никаких операций ввода-вывода с устройством производиться не будет, даже если вспохватившийся кеш). Кроме того, иногда нужно выполнять эмуляцию процедуры plug-unplug без физического дёргания питания/шины данных (что не очень хорошо для железа). Самая типичная ситуация — это отладка скриптов udev.
(x — буква устройства, sda, sdb, etc).
Эта команда удаляет указанное устройство. Заметим, это низкоуровневая команда, которая не проверяет кеш и статус примонтированности, так что лучше сначала сказать umount & sync.
К сожалению, я не знаю метода совместить выключение шпинделя диска с его удалением с точки зрения ядра. Шпиндель можно отключить командой scsi-spin, однако, при попытке удалить устройство, оно будет раскручено заново и удалено. А у удалённого устройства уже нельзя ничего останавливать (нет устройства). Так что эта часть проблемы пока не решена.
Мы не можем «добавить» устройство, мы можем отдать контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдётся что-то интересное, ядру дадут знать.
X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди, ничего, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, это не даст.
Обратите внимание, host'ы нумеруются с 0, а не с 1. (а в dmesg ata устройства нумеруются с 1).
Так же осуществляется и сканирование USB-SATA переходников (usb-боксов и внешних винчестеров — они просто фигурируют как ещё один scsi_host).
Если мы говорим про SCSI, то вместо "- — -" можно указать точный номер устройства/шины/LUN'а сканируемого устройства (например, «200 1 2»). SATA, в силу архитектурных особенностей (один target для одного initiator) принимает туда только «0 0 0».
Ещё об удалении… Если вы не знаете буквы устройства, но знаете его физическое место подключения, то удалять можно «прямым текстом», записью «1» в "/sys/bus/scsi/devices/targetX:0:0/X:0:0:0/delete".
Добавляем новый диск к виртуальной машине vmware. ОС - ubuntu server.
Первым делом выключаем виртуалку и добавляем в vCenter новый диск:
В нашем случае у виртуалки был системный диск размером 16 GB, добавляем новый 50 GB.
При добавлении диска можно не только выбрать размер диска, но и тип "Disk Provisioning". Не буду подробно описывать их особенности, расскажу вкратце. Есть три варианта:
- Thick provision lazy zeroed - толстый ленивый (по умолчанию). При создании занимает выделенный объём, но нулями не заполняет сразу, а по мере записи. Быстро создаёт большие винты, но потом тратит ресурсы на заполнение блоков нулями. При долгой работе в итоге превращается в жадный.
- Thick provision eager zeroed - толстый жадный. При создании заполняет выделенный объём нулями. Долго создаёт большие винты, зато потом летает.
- Thin provision - тонкий. Быстро создаётся, не занимает места на диске. По мере наполнения - отжирает винт пока не заполнит весь выделенный для него объём. На это тратятся некоторые ресурсы. Опасен тем, что в один прекрасный момент места может не хватить, тогда с фризом нужно будет бороться танцами и бубном.
Винт создали, включаем машину и дальше работаем в консоли.
Посмотрим состояние партиций на диске:
Видим новый винт /dev/sdb. Строке 53.7 Гб не верим, потому как это округление от байтов. Если перевести 53687091200 байт в гигабайты, то получим ровно 50. Занимаемся разметкой жесткого диска:
Вводим "m" для справки:
Создаём новый раздел "n":
Создаём основной раздел "p" или просто жмём enter:
Выбираем номер раздела "1" или просто жмём enter:
Оставляем первый сектор по умолчанию, enter:
Оставляем последний сектор по умолчанию, enter:
Выведем таблицу разделов:
Видим, что появился новый раздел /dev/sdb1. Делаем запись таблицы разделов на диск "w":
Посмотрим состояние партиций на диске:
Теперь нужно создать файловую систему. Форматируем новый диск с помощью команды mkfs.ext4:
В данном случае параметр "-m 0" отвечает за процент резервных блоков. Дефолтные 5% меня не устраивают, супер-юзер обойдётся, винты дорогие, экономим место.
-m reserved-blocks-percentage
Specify the percentage of the filesystem blocks reserved for the super-user. This avoids fragmentation, and allows root-owned daemons, such as syslogd(8), to continue to function correctly after non-privileged processes are prevented from writing to the filesystem. The default percentage is 5%.
Получаем идентификатор раздела:
Полученный UUID понадобится для монтирования диска в папку. Здесь же можно посмотреть тип файловой системы. Создаём папку, в которую будем монтировать диск, в моём случае "opt":
Далее редактируем файл "/etc/fstab", дописываем строку:
Где UUID нами получен ранее. Монтируем:
Видим, что диск /dev/sdb1 смонтирован в opt. Теперь при загрузке он будет монтироваться автоматически.
На компе стоит Mageia 5 (второй системой стоит винда семёрка).
Нужно, при работающей системе, подключать sata диски. В bios горячее подключение включено. Включён ACHI.
Т.к. подубитых HDD в наличии нету, испытания провожу на оптическом приводе.
Под виндой всё четко работает, отключается и подключается с характерным, для винды, звуковым сигналом подключения и отключения устройства.
Под Mageia 5 привод подхватывается только первый раз. Если его отключить и снова включить, то привод очень долго жужжит, пытаясь инициализироваться и ничего не происходит.
dmesg | tail до подключения привода
dmesg | tail [ 4072.900877] ata7: hard resetting link [ 4073.207302] ata7: SATA link down (SStatus 0 SControl 300) [ 4073.207309] ata7: limiting SATA link speed to 1.5 Gbps [ 4078.197775] ata7: hard resetting link [ 4078.504197] ata7: SATA link down (SStatus 0 SControl 310) [ 4078.504203] ata7.00: disabled [ 4078.506184] ata7: EH complete [ 4078.506187] sr 6:0:0:0: rejecting I/O to offline device [ 4078.506189] sr 6:0:0:0: killing request [ 4078.506192] ata7.00: detaching (SCSI 6:0:0:0)
dmesg | tail после первого подключения
dmesg | tail [ 20.119736] ata7: SError: < DevExch >[ 20.119739] ata7: hard resetting link [ 20.891522] ata7: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 20.894641] ata7.00: ATAPI: CD-W540E, 1.0B, max UDMA/33 [ 20.898561] ata7.00: configured for UDMA/33 [ 21.056200] ata7: EH complete [ 21.381697] scsi 6:0:0:0: CD-ROM TEAC CD-W540E 1.0B PQ: 0 ANSI: 5 [ 21.625026] sr 6:0:0:0: [sr0] scsi3-mmc drive: 48x/48x writer cd/rw xa/form2 cdda tray [ 21.625027] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 21.625092] sr 6:0:0:0: Attached scsi CD-ROM sr0
dmesg | tail после отключения привода и второго включения
dmesg | tail [22622.447949] ata7: EH complete [22622.920048] ata7.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 [22622.920050] ata7.00: irq_stat 0x40000001 [22622.920053] ata7.00: cmd a0/00:00:00:00:00/00:00:00:00:00/a0 tag 29 Test Unit Ready 00 00 00 00 00 00res 80/00:00:00:00:00/00:00:00:00:00/a0 Emask 0x3 (HSM violation) [22622.920054] ata7.00: status: < Busy >[22622.920056] ata7: hard resetting link [22623.684598] ata7: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [22623.690913] ata7.00: configured for UDMA/33 [22623.770430] ata7: EH complete
Судя по строке "ata7.00: status: < Busy >" устройство после отключения не удаляется автоматом. И при повторном запуске, видимо, пытается новое устройство наложить на старое. Отсюда и проблема в подключении.
Пробовал команду echo 1 > /sys/block/sr0/device/delete не помогло.
Горячая замена вышедшего из строя диска SATA / dev / sda работала нормально, но когда я перешел на новый диск, он не был распознан:
Я попробовал пару вещей, чтобы сервер нашел новую / dev / sda, например, rescan-scsi-bus.sh, но они не сработали:
Я закончил тем, что перезагрузил сервер. / dev / sda был распознан, я установил программный RAID, и теперь все в порядке. Но в следующий раз, как я могу заставить Linux распознавать новый SATA-диск, на который у меня была горячая замена без перезагрузки?
Рассматриваемая операционная система RHEL5.3:
Жесткий диск представляет собой Seagate Barracuda ES.2 SATA 3.0-Gb / s 500-GB, модель ST3500320NS.
Вот вывод lscpi:
Обновление : возможно, в десятке случаев мы были вынуждены перезагрузить серверы, потому что «горячая замена» не «просто сработала». Спасибо за ответы, чтобы больше заглянуть в контроллер SATA. Я включил вывод lspci для проблемной системы выше (имя хоста: fs-2). Я все еще мог бы использовать некоторую помощь, чтобы понять, что именно не поддерживается аппаратно с точки зрения горячей замены для этой системы. Пожалуйста, дайте мне знать, какой другой вывод, кроме lspci, может быть полезен.
Хорошая новость заключается в том, что «горячая замена» сегодня «сработала» на одном из наших серверов (имя хоста: www-1), что очень редко для нас. Вот вывод lspci:
Я бы проверил состояние вашего контроллера SATA в той версии ядра Linux, которую вы используете. Это может быть ошибка или просто не поддерживается
Это была шина 0. / sys / class / scsi_host содержит host0 через host5. dmesg показывает от ata1 до ata6. ata1 соответствует host0, ata2 соответствует host1 и т. д.
Если ваш контроллер SATA поддерживает горячую замену, он должен «просто работать (тм)».
Чтобы принудительно выполнить повторное сканирование на шине SCSI (каждый порт SATA отображается как шина SCSI) и найти новые диски, вы будете использовать:
На вышесказанном, это номер шины.
Извините, нет радости; выполнение этой команды вызывает только то же автоматическое повторное сканирование, которое запускается, когда я первоначально подключаю диск. Спасибо хоть!
Вполне возможно, что на контроллере raid необходимо выполнить некоторые настройки, чтобы он увидел диск. В моем случае было необходимо добавить новый диск обратно в рейд.
На моей системе, которая загружалась с NVMe SSD, это помогло обнаружить недавно подключенный SATA HD. Я использую, powertop чтобы другие устройства отключились, поэтому, возможно, порт SATA, к которому я подключил накопитель, полностью спал. (Система имеет оптический привод SATA подключена и обнаружен при загрузке, но это, вероятно , спит, тоже.) Как другие полагают, чтобы избежать сброса ссылки SATA для активных дисков, выяснить , какие host идентификаторы уже находятся в использовании и не scan те , только тот, где вы подключили новый диск. (Или любой неиспользованный, если вы не знаете нумерацию.)
Будьте осторожны с этим: dmesg показал, что он жестко сбрасывает все мои ссылки SATA. Возможно, стоит протестировать его перед запуском в производство и потерять тонны записей.
Когда диск в некоторых случаях выходит из строя, Linux не поймет, что вы фактически извлекли его из массива. Если у вас есть эта проблема (как я сделал сегодня утром), вы можете сделать следующее:
Например, в моем случае / dev / sda не удалось, и я не хотел перезагружать сервер, поэтому я сделал:
После того, как я это сделал, новый диск (который уже был физически добавлен) был сразу виден.
Если он не виден в данный момент, вы также можете сделать это для повторного сканирования:
То, что "- - -" является символами подстановки для канала, идентификатора и LUN соответственно, поэтому вы можете ограничить сканирование некоторым подмножеством, если хотите, указав вместо этого числа.
Прежде чем начать, вы также можете:
Который покажет вам путь с правильным номером хоста, чтобы проверить / proc / scsi / scsi на предмет исчезновения после удаления.
Как насчет этого (похоже, работает в Ubuntu):
parted FTW . Вы должны знать , это хорошо , кроме обычных подозреваемых нравится fdisk , gdisk , cgdisk , testdisk .
Я не могу поверить, что никто еще не упомянул AHCI . Ваш контроллер SATA должен быть в режиме AHCI, чтобы включить горячую замену. Проверьте это, посмотрев на драйвер, который вы используете:
Посмотрите, как там написано "ачи".
Если это не так, просто включите его в BIOS. Кроме того, некоторые BIOS, особенно на серверах или в UEFI, имеют параметр «Горячая замена = включено / отключено» на диск, который также следует включить, если он существует.
Вот почему мне нужно было перезагрузить компьютер .
Я просто поменял местами мой / dev / sdc. Я использовал scsiadd -r 3 0 0, чтобы отключить старый диск перед тем, как вытащить его. Затем после установки нового диска новый диск не отображался как / dev / sdc, а как / dev / sdd. После перезагрузки диск снова появится как / dev / sdc.
Так что кажется, что hotswap работает Хорошо, может быть, просто / dev / sd * больше не то же самое.
Может ли это быть ответом на вашу проблему?
Хммм, хорошо, rescan-scsi-bus.sh уже работает с / proc / scsi / scsi, точно так же, как кажется, scsiadd. В любом случае, мы пытаемся найти другого поставщика серверов, поэтому, возможно, «горячая» замена в будущем нам просто подойдет.
Да, вы не можете обойти это, насколько я могу судить. Вот почему вы используете метку диска или UUID и монтируете свой fs таким образом (вручную или в fstab), вы можете установить его, и тогда он не изменится. Единственная хитрость - заставить ваш загрузчик установить на новый диск, но он все еще работает, когда он перезагружается, хотя из некоторых быстрых экспериментов с GRUB (я заменял sda на машине с sd [a, b, c, d] и программным обеспечением). raid1 для всей системной части фс).
Вы никогда не должны использовать устройства / dev / sd * в файлах конфигурации, таких как fstab. Вы никогда не должны предполагать, что имена всегда одинаковы. Вместо этого вы должны использовать синтаксис UUID = . (без кавычек), как вы видите в man fstab. Чтобы узнать UUID, используйте команду blkid. (в качестве альтернативы вы можете предпочесть метку или идентификатор; также смотрите / dev / disk / by- *)
Мой DVD на моей машине Fedora 16 подключен к интерфейсу SATA. Он был заперт и не открывался и не закрывался. Запуск partprobe , как корень получил мой CDROM / DVD снова работает. Я считаю, что это поможет на другой машине, где у меня иногда возникают проблемы с горячей заменой. Благодарность!
Контроллер SAS Fusion-MPT является низкоуровневым RAID-контроллером. Если вы не используете его для RAID, он все равно может обеспечить бесполезный уровень препятствий / абстракций.
Возможно, вам придется подсунуть RAID-контроллер с помощью mpt-status или lsiutil, чтобы он действительно сканировал шину.
В некоторых случаях горячая замена может потребоваться включить в BIOS материнской платы и / или контроллера SATA. Это полностью зависит от марки и модели обоих, но если у вас есть встроенные контроллеры SATA, которые должны поддерживать «горячую замену», то стоит пролистать BIOS материнской платы. Карты SATA могут иметь или не иметь свои собственные настройки BIOS, многие карты более низкого уровня не имеют, но карты серверного уровня обычно имеют.
Если я правильно помню, мне нужно было это с несколькими материнскими платами Gigabyte и, возможно, с некоторыми другими марками. Мне нужно было это для горячей замены лотка SATA для работы; при отключенной функции удаление диска не вызывало проблем, но новый диск не регистрировался до перезагрузки. Включение параметра сработало, как и ожидалось, диски, которые были помещены в лоток, были немедленно раскручены и доступны для ОС.
Я только что проверил на машине, которая, как я знаю, имела это; на нем установлена материнская плата Gigabyte Z77X-UD3H с встроенными контроллерами Marvell 88SE9172 и Intel 7 Series / C210
Я знаю, что этот вопрос старый, но у меня был некоторый успех, о котором я не видел нигде. Подобные проблемы возникли с Dell Precision 380 сегодня. В конце концов заставил его работать, выполнив некоторую комбинацию из следующего:
ВНИМАНИЕ: Это может нарушить работу других устройств ATA в системе. Если вы смонтировали файловые системы на этих устройствах, это может плохо закончиться. Моей ситуации было все равно, но твоя может.
Какие именно вышеперечисленные команды нужны и в каком порядке, мне пока неизвестно. Некоторые команды, возможно, придется повторить. Если бы мне пришлось угадывать, я бы сказал, сделать в порядке, показанном выше, а затем еще раз сканировать scsi_host в конце. Я сделал еще немало в своих исследованиях.
Первая команда (scsi_host scan) сообщает среднему слою SCSI сканировать все шины на наличие новых / измененных устройств. Вторая команда пытается сбросить цель SCSI (дисковое устройство). Последние два работают с драйвером для самого контроллера AHCI.
Я нашел эти предметы в основном путем подробного изучения и смелых экспериментов.
Вы можете сопоставить узлы scsi_device с маркой и моделью устройства (используя grep для печати имен файлов перед содержимым):
Первая цифра идентификатора устройства SCSI должна быть номером scsi_host. Затем вы можете сопоставить узлы scsi_host с узлами их устройств:
Я подозреваю, что у меня никогда не будет возможности доработать дальше, поэтому я хотел поделиться этой информацией в надежде сблизить других. Если я получу больше информации, я отредактирую этот ответ, чтобы отразить.
Читайте также: