Установите внешний накопитель во время загрузки, только если он подключен

Вы можете попробовать отменить inode для каталога, но это оставит вас с целым загруженным сиротским файлом, который fsck выйдет из строя.

rm так же хорош, как и он.

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

Если вы хотите удалить каталог и все в нем, я предлагаю вам:

rm -rf path/to/directory
[d6 ] rm будет внутренне перечислять файлы и каталоги, которые он собирается удалить. И это все в компиляции C. Это две причины, по которым это происходит быстрее.

Это очень заметно не то же самое, что rm -rf path/to/directory/*, которое внутренне на уровне оболочки и передает нагрузку аргументов в rm. Затем rm должен разбирать те, а затем рекурсировать от каждого. Это намного медленнее.

Точно так же, как «эталон», сравнивающий find path/to/directory -exec {} \;, вздор. Это запускает rm один раз за найденный файл. Так медленно. Найти аргументы команды xargs-style с помощью -exec rm {} +, но это так же медленно, как и расширение. Вы можете вызвать -delete, который использует внутренний вызов unlink в ядре (например, rm), но это будет работать только для файлов вначале.

Итак, повторим, если вы не выбросите диск в жидкую горячую магму, rm является королем.

В соответствующей заметке разные файловые системы удаляют вещи с разной скоростью из-за того, как они структурированы. Если вы делаете это на регулярной основе, вы можете захотеть сохранить эти файлы в разделе, отформатированном в XFS, который довольно быстро обрабатывает удаления.

Или используйте более быстрый диск. Если у вас много томов, использование /dev/shm (RAM-диск) может быть идеей.

56
задан 3 November 2011 в 03:08

14 ответов

Вы все на правильном пути. Я нашел способ, который является немного более чистой и лучшей формой.

Правильная опция добавления в fstab - nofail, однако она должна появиться после auto. Если вы измените его на noauto, он никогда не будет монтироваться во время загрузки. Если вы добавите nobootwait к загрузчику, вы можете пропустить что-то серьезное, например, установить раздел до того, как fsck завершит проверку его или не будет устанавливать раздел, который используется в процессе загрузки.

После внесения вышеуказанного изменения система начнет нормально (и смонтирует том), если устройство подключено, когда система выключена.

Единственное неудобство заключается в том, что если вы подключаете устройство во время работы системы, в зависимости от конфигурации (слишком много переменных для проверки), устройство может не монтироваться немедленно. Это можно устранить с помощью простых mount -a или mount /specific_device или перезагрузки.

44
ответ дан 26 May 2018 в 00:18
  • 1
    Каждый пример, который я могу найти в Интернете, показывает, что до авто. Есть ли документация для правильного заказа? – Hackeron 7 April 2017 в 21:30
  • 2
    «man fstab» не дает точности необходимого порядка (проверяется в centos 7 и Ubuntu 14.04). Хотя, как говорится, «nofail не сообщают об ошибках для этого устройства, если оно не существует». Мне интересно, не поможет ли это ждать ожидания при загрузке, если том nfs недоступен. – tisc0 10 December 2017 в 22:34

опция noauto позволяет продолжить процесс загрузки?

он не монтируется автоматически, если присутствует, но он знает, если присутствует, поэтому работает простой mount / jgdata ... тогда скрипт mount / jdata не нуждается в проверке вывода, просто поймайте ошибка и сохранить загрузку

edit: при некотором последующем чтении bootwait, вероятно, более правильная опция для передачи ... (обычно используется для общих сетевых ресурсов, которые могут отсутствовать дольше в процессе загрузки, но это все равно может вызвать зависание, idk)

, и скрипт монтирования может быть добавлен так: https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of -grub-и-меню LST

13
ответ дан 26 May 2018 в 00:18
  • 1
    Спасибо за ответ. Чтобы уточнить, параметры должны быть добавлены в строку fstab, правильно? (EDIT: Nvm, googled it. Похоже, nobootwait - это то, что мне нужно.) – Jeremy 24 November 2010 в 08:56
  • 2
    Я использовал опцию nobootwait в fstab, отлично работает, спасибо. – Jeremy 24 November 2010 в 09:04

У меня была такая же проблема - я сделал один дополнительный шаг

Если вы используете опцию nofail в /etc/fstab, система будет искать ваш диск (и раздел) во время загрузки , Если устройство подключено, файловая система будет смонтирована. Если нет, загрузка будет продолжаться как обычно.

См. Arch wiki: https://wiki.archlinux.org/index.php/Fstab

Пример

UUID=XXXXXXXXXXXXXXX    /myhdd ntfs  nofail,auto,noatime,rw,user    0   0

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

То, чего я не достиг, - это автоматизировать, когда диск вставлен после загрузки (когда isn ' t подключен к загрузке). Я должен использовать mount -a как root, чтобы снова установить все.

10
ответ дан 26 May 2018 в 00:18

Рекомендуемый способ монтирования во время загрузки инструктирует их систему через файл fstab. Глядя на ваш запрос, я видел, что вы почти там, не хватает только инструкции, которая позволяет устройству использовать параметры automount, позволяя вашей системе монтировать устройство, когда оно доступно.

Итак, просто перепишите строку в вашем fstab, как показано ниже:

# <file system>           <dir>       <type>    <options>         <dump> <pass>
UUID="680C0FE30C0FAAE0"   /jgdata      ntfs      user,auto,rw       0     0

После изменения и сохранения его попытайтесь установить вручную:

$ sudo mount -a

Важно отметить, что:

вы должны быть уверены в UUID устройства. UUID генерируются утилитами make-filesystem (mkfs. *) При создании файловой системы. Те <options> должны быть написаны в соответствии с очень конкретным форматом, разделенным запятыми, но без пробелов после каждой запятой. Будьте осторожны с этим ;-) Я не уверен, что это будет работать гладко, потому что вы пытаетесь автоматизировать файловую систему NTFS, которые можно использовать с помощью утилит NTFS-3G. Хотя мои инструкции должны работать правильно, я никогда не пробовал автомонтировать NTFS раньше. Итак, если это не удалось, я рекомендую вам посмотреть этот раздел для монтирования Windows для альтернативного использования NTFS.

Спасибо!

1
ответ дан 26 May 2018 в 00:18
  • 1
    я думаю, он получает большую часть того, что вы сказали, но он висит, когда диск не обнаружен. поэтому я предложил обходной путь к «правильному». путь – RobotHumans 23 November 2010 в 09:02
  • 2
    Спасибо за ответ. FYI команда sudo blkid - это хороший способ узнать UUID. – Jeremy 24 November 2010 в 08:44
  • 3
    Я только что пробовал эту точную строку в fstab. Когда жесткий диск подключен, система загружается нормально. Но во время загрузки, когда внешний жесткий диск не подключен, он по-прежнему предлагает мне Wait / Skip / Manualy Recover. Поскольку это приглашение не отключается, если я не на терминале, ящик не загружается, если внешний жесткий диск не подключен. – Jeremy 24 November 2010 в 08:53
  • 4
    Вам нужно добавить опцию nofail. – kkron 31 December 2015 в 00:06

У меня такая же проблема. Я редактировал fstab, чтобы прокомментировать запись, когда я знаю, что я не буду иметь приставку в следующий раз при загрузке. Затем, когда у меня есть привод, я просто редактирую fstab, чтобы удалить комментарий и поставить mount -a. Это не идеальное решение. Было бы здорово, если бы я смог выяснить, как система автоматически смонтирует диск, если он присутствует, или автоматически пропускает его, если он отсутствует. Такая же проблема возникает, если у вас есть общие сетевые ресурсы NFS, а sever отсутствует.

0
ответ дан 26 May 2018 в 00:18
  • 1
    Проверьте ответ, который я принял, просто добавьте nobootwait в опции mount в fstab. – Jeremy 24 November 2010 в 09:06
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

работал для меня.

nofail ... Не сообщайте об ошибках для этого устройства, если оно не существует. x-systemd.device-timeout = 30 ... Загрузка займет 30 секунд, если устройство не существует (по умолчанию 90 секунд).

Источник: https://wiki.archlinux.org/index .php / Fstab # External_devices

0
ответ дан 26 May 2018 в 00:18

У меня такая же проблема. Я редактировал fstab, чтобы прокомментировать запись, когда я знаю, что я не буду иметь приставку в следующий раз при загрузке. Затем, когда у меня есть привод, я просто редактирую fstab, чтобы удалить комментарий и поставить mount -a. Это не идеальное решение. Было бы здорово, если бы я смог выяснить, как система автоматически смонтирует диск, если он присутствует, или автоматически пропускает его, если он отсутствует. Такая же проблема возникает, если у вас есть общие сетевые ресурсы NFS, а sever отсутствует.

0
ответ дан 26 May 2018 в 00:18

У меня такая же проблема. Я редактировал fstab, чтобы прокомментировать запись, когда я знаю, что я не буду иметь приставку в следующий раз при загрузке. Затем, когда у меня есть привод, я просто редактирую fstab, чтобы удалить комментарий и поставить mount -a. Это не идеальное решение. Было бы здорово, если бы я смог выяснить, как система автоматически смонтирует диск, если он присутствует, или автоматически пропускает его, если он отсутствует. Такая же проблема возникает, если у вас есть общие сетевые ресурсы NFS, а sever отсутствует.

0
ответ дан 26 May 2018 в 00:18

У меня такая же проблема. Я редактировал fstab, чтобы прокомментировать запись, когда я знаю, что я не буду иметь приставку в следующий раз при загрузке. Затем, когда у меня есть привод, я просто редактирую fstab, чтобы удалить комментарий и поставить mount -a. Это не идеальное решение. Было бы здорово, если бы я смог выяснить, как система автоматически смонтирует диск, если он присутствует, или автоматически пропускает его, если он отсутствует. Такая же проблема возникает, если у вас есть общие сетевые ресурсы NFS, а sever отсутствует.

0
ответ дан 26 May 2018 в 00:18

У меня такая же проблема. Я редактировал fstab, чтобы прокомментировать запись, когда я знаю, что я не буду иметь приставку в следующий раз при загрузке. Затем, когда у меня есть привод, я просто редактирую fstab, чтобы удалить комментарий и поставить mount -a. Это не идеальное решение. Было бы здорово, если бы я смог выяснить, как система автоматически смонтирует диск, если он присутствует, или автоматически пропускает его, если он отсутствует. Такая же проблема возникает, если у вас есть общие сетевые ресурсы NFS, а sever отсутствует.

0
ответ дан 26 May 2018 в 00:18

У меня такая же проблема. Я редактировал fstab, чтобы прокомментировать запись, когда я знаю, что я не буду иметь приставку в следующий раз при загрузке. Затем, когда у меня есть привод, я просто редактирую fstab, чтобы удалить комментарий и поставить mount -a. Это не идеальное решение. Было бы здорово, если бы я смог выяснить, как система автоматически смонтирует диск, если он присутствует, или автоматически пропускает его, если он отсутствует. Такая же проблема возникает, если у вас есть общие сетевые ресурсы NFS, а sever отсутствует.

0
ответ дан 26 May 2018 в 00:18
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

работал для меня.

nofail ... Не сообщать об ошибках для этого устройства, если оно не существует. x-systemd.device-timeout = 30 ... Загрузка займет 30 секунд, если устройство не существует (по умолчанию 90 секунд).

Источник: https : //wiki.archlinux.org/index.php/fstab#External_devices

0
ответ дан 25 July 2018 в 22:51

Рекомендуемый способ монтирования во время загрузки инструктирует их систему через файл fstab . Глядя на ваш вопрос, я видел, что вы почти там, не хватает только инструкции, которая позволяет устройству использовать параметры automount, позволяя вашей системе смонтировать устройство, когда оно доступно.

Итак, просто перепишите строку в вашем fstab, как показано ниже:

# <file system>           <dir>       <type>    <options>         <dump> <pass>
UUID="680C0FE30C0FAAE0"   /jgdata      ntfs      user,auto,rw       0     0

После изменения и сохранения его попытайтесь установить его вручную:

$ sudo mount -a

Важно отметить, что:

  1. вы должны быть уверены в UUID устройства. UUID генерируются утилитами make-filesystem (mkfs. *) При создании файловой системы.
  2. Те <options> должны быть записаны в соответствии с очень конкретным форматом, разделенным запятыми, но без пробелов после каждой запятой , Будьте осторожны с этим; -)
  3. Я не уверен, что это будет работать плавно, потому что вы пытаетесь авторизовать файловую систему NTFS, которые можно обрабатывать с помощью утилиты NTFS-3G . Хотя мои инструкции должны работать правильно, я никогда не пробовал автомонтировать NTFS раньше. Итак, если это не удалось, я рекомендую вам посмотреть на это Установка разделов Windows для альтернативного использования NTFS.

Спасибо!

1
ответ дан 31 July 2018 в 11:30

У меня была такая же проблема - я сделал один дополнительный шаг

Если вы используете опцию nofail в /etc/fstab, система будет искать ваш диск (и раздел) во время загрузки , Если устройство подключено, файловая система будет смонтирована. Если нет, загрузка будет продолжена как обычно.

См. Arch wiki: https://wiki.archlinux.org/index.php/Fstab

Пример

UUID=XXXXXXXXXXXXXXX    /myhdd ntfs  nofail,auto,noatime,rw,user    0   0

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

То, чего я не достиг, - это автоматизировать, когда диск подключен после загрузки (когда он не подключен при загрузке). Я должен использовать mount -a как root, чтобы снова установить все.

13
ответ дан 13 August 2018 в 17:04

Другие вопросы по тегам:

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