Как я могу безопасно удалить диск SATA из рабочей системы?

set MONGODB="/usr/local/mongodb/bin"

Это не переменное присвоение. (Это один в оболочке C (csh, tcsh), но не в оболочках стиля Границы (sh, пепел, удар, ksh, zsh, …).) Это - вызов к set встроенный, который устанавливает позиционные параметры, т.е. $1, $2, и т.д. Попытайтесь выполнить эту команду в терминале, затем echo $1.

Для присвоения значения переменной оболочки просто запишите

MONGODB="/usr/local/mongodb/bin"

Это создает переменную оболочки (также названный (именованным) параметром), с которым можно получить доступ $MONGODB. Переменная остается внутренней к оболочке, если Вы не экспортировали ее с export MONGODB. Если экспортируется, переменная также видима ко всем процессам, запущенным той оболочкой через среду. Можно уплотнить присвоение и экспорт в одну строку:

export MONGODB="/usr/local/mongodb/bin"

Поскольку, что Вы делаете, кажется, нет потребности в MONGODB вне сценария, и PATH уже экспортирован (после того как переменная экспортируется при присвоении нового значения она отражается в среде). Таким образом, можно записать:

MONGODB="/usr/local/mongodb/bin"    
PATH=${PATH}:${MONGODB}
66
18.07.2012, 23:04
6 ответов
  1. Размонтируйте любые файловые системы на диске. (umount ...)
  2. Деактивируйте любые группы LVM. (vgchange -an)
  3. Удостоверьтесь, что ничто не использует диск ни для чего.
  4. После того как Вы сделали это, должно быть безопасно отключить.

Если Вы хотите быть дополнительны осторожный, сделать echo 1 > /sys/block/(whatever)/device/delete сначала. Это не зарегистрирует устройство от ядра, таким образом, Вы будете знать, что ничто не использует его при отключении его. Когда я делаю это с диском в eSATA корпусе, я могу услышать, что верхние части диска паркуют себя, таким образом, ядро, по-видимому, говорит диску подготовиться к выключению питания.

При использовании контроллера AHCI он должен справиться с отключаемыми устройствами. При использовании некоторого другого вида контроллера SATA драйвер мог бы быть перепутан путем замены в горячем режиме.

По моему опыту, замена в горячем режиме SATA (с AHCI) работает вполне прилично в Linux. Я отключил оптический диск, включил жесткий диск, просканировал его для ошибок, сделал файловую систему и скопировал данные в него, размонтированный и отключил его, включил differerent DVD-привод и записал диск, все с машиной и выполнением.

83
27.01.2020, 19:32
  • 1
    у меня была потребность отключить жесткий диск, который я хотел стереть полностью. После вытаскивания диска из отсека,/dev/sdXY все еще обнаружился. Запись 1 кому: delete сделанный им исчезнуть и я мог услышать, что диск вращался вниз. Просто hdparm -Y был недостаточно потому что /dev/ записи все еще существовали бы.Спасибо! –  Lekensteyn 09.08.2012, 12:25
  • 2
    I сильно совет всегда выйти echo 1 > /sys/block/(whatever)/device/delete управляйте, потому что диск будет парковать головы, полностью остановите диск и отключите, включают шину. Если непаркуемая голова касается вращающейся пластины, диск может быть постоянно уничтожен. –  drumfire 12.02.2014, 23:21
  • 3
    Также - если smartd, оказывается, работает, это - хорошая идея выпустить SIGHUP к процессу так, чтобы это перезагрузило информацию о диске. Особенно важный, если Вы заменяете диски, потому что smartd перезагрузит информацию для того диска и всех других. –  drumfire 12.02.2014, 23:23
  • 4
    Всего одно примечание, которое стоит упомянуть, echo 1 > /sys/block/(whatever)/device/delete не будет работать под sudo, "Разрешение, отклоненное" ошибка, будет брошено. Необходимо будет стать реальным корнем, так простое использование su вместо этого. –  Neurotransmitter 29.03.2015, 13:59
  • 5
    @TranslucentCloud можно передать его по каналу через sudo tee эмулировать перенаправление как корень: echo 1 | sudo tee /sys/block/(whatever)/device/delete –  Oli 15.04.2015, 23:54

Те два раздела для разных вещей.

Первое для отключения. Второе для включения.

Для отключения ОС будет синхронизировать данные во время операции размонтирования. Таким образом, если диск размонтирован (предположение, что у Вас на самом деле есть полная поддержка оборудования), можно выключиться, диск затем отключают его без риска потери данных или повреждения.

Для включения должно быть автоматически распознано устройство. В противном случае можно выполнить ту команду для инициирования сканирования шины. После того как устройство распознано, можно смонтировать его.

И позвольте мне протест это путем высказывания, что я только когда-либо делал этот вид вещи с Картами памяти.

5
27.01.2020, 19:32
  • 1
    Спасибо за Ваш ответ, но я все еще не убежден, каково корректное действие было бы. SSD имеют "Небезопасное поле S.M.A.R.T." количества Завершения работы, просто отключение его, ничего не делая не звучит безопасным мне. –  Lekensteyn 19.07.2012, 00:58
  • 2
    Если это помогает, я обычно заменяю в горячем режиме, и горячий - отключают жесткие диски с интерфейсом SATA как часть моего задания, без больше, чем проверки, что это размонтировалось сначала, и я никогда не сталкивался с проблемой. Это анекдотично, не берите его в качестве евангелия, но это - по крайней мере некоторое доказательство, что это, вероятно, безопасно. В любом случае я считал бы это ошибкой ядра, если ОС не гарантирует, что данные полностью записаны в конце операции размонтирования, особенно в мире замены в горячем режиме. –  Jander 19.07.2012, 03:24
  • 3
    @Lekensteyn, hdparm -Y будет заботиться об этом. Это в основном, что система делает каждый раз, когда Вы приостанавливаете или завершаете работу. –  psusi 19.07.2012, 16:16

что относительно eject /dev/sdX? На моей установке это управляет umounts, синхронизирует и выключает диск.

5
27.01.2020, 19:32
  • 1
    я попробовал это диском, соединенным по eSATA, но команде, отказавшей с "не заменяемый в горячем режиме" или что-то. –  Lekensteyn 30.08.2013, 12:29
  • 2
    Afaik, извлекают разъемы сменный диск а не устройство. Это зависит, на котором драйвер блочного устройства поддерживает ioctl() операция, используемая eject инструмент. Жесткие диски Esata не поддерживают его, но оптические устройства, дискеты и вероятно флеш-накопители, да. –  peterh - Reinstate Monica 31.07.2015, 07:11

У меня есть пара скриптов, основанных на ответе Wyzard . Первый, scsi-drop , предназначен для безопасного отключения одного диска:

#!/bin/sh

if test -h "$1"
then
    disk=$(chase "$1")
else
    disk="$1"
fi

if test -b "$disk"
then
    echo 1 >/sys/block/$(basename "$disk")/device/delete
else
    echo "$0: not a block device: $1" >&2
    exit 1
fi

Его главное преимущество заключается в том, что вы можете передать ему символическую ссылку, например, найденную в / dev / disk / by-id / , и он разрешит это на реальное устройство. Требуется установить chase ; вы можете получить тот же результат, используя readlink -e .

Второй сценарий, scsi-rescan , используется после горячего подключения нового устройства:

#!/bin/bash

exec tee /sys/class/scsi_host/host*/scan <<<'- - -' >/dev/null

Это заставляет все адаптеры повторно сканировать устройства. Это был единственный способ получить для чтения новую емкость и таблицу разделов.

2
27.01.2020, 19:32

На самом деле диски SATA автоматически паркуют головки при отключении питания. Вытягивание диска во время его вращения не должно вызывать проблем. Тем не менее, вращающиеся диски склонны к звону, если их ударить. Вы можете услышать это, когда у вас есть нестабильное питание или солнечные вспышки.

Большинство повреждений обычно вызывается неочищенным кешем, незафиксированными записями в буферы и т. д. Вот почему НЕОБХОДИМО размонтировать диск перед его извлечением. Команда SCSI — это просто хорошая мера, и она работает с той же целью.

0
27.01.2020, 19:32

Я написал для этого скрипт, используя umountи hdparm suspend. Не стесняйтесь редактировать скрипт и использовать на свой страх и риск. Скрипт интерактивный или может быть запущен с опциями.

https://github.com/BMarkley/ParkDrive

-2
07.07.2020, 04:33

Теги

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