Внешний жесткий диск с шифрованием LUKS смонтирован, но иногда больше не отображается в lsblk?

Вопрос или проблема

У меня есть старый ноутбук с Linux, который используется как домашний сервер. Он в основном запускает множество контейнеров Docker. У меня есть внешний жесткий диск, зашифрованный с помощью LUKS, подключенный к ноутбуку, который монтируется и расшифровывается с помощью скрипта. Контейнеры Docker используют монтирование Docker к тому же смонтированному месту, так что файлы в конечном итоге сохраняются на моем внешнем жестком диске из контейнеров Docker.

Я расшифровываю и монтирую диск следующим образом:

sudo cryptsetup luksOpen --key-file=$KEY_FILE UUID=$DRIVE_UUID $PARTITION_NAME
sudo mount /dev/mapper/$PARTITION_NAME /mnt/storage

Результат команды lsblk -o NAME,KNAME,UUID,FSTYPE,TYPE,MOUNTPOINT,SIZE выглядит следующим образом.

 sdc                         sdc                                                      disk                     10.9T
 |-sdc1                      sdc1  67E3-17ED                              vfat        part                      200M
 |-sdc2                      sdc2  91c4ccef-ebf2-4976-8c93-93d48340022b   apfs        part                    465.7G
 `-sdc3                      sdc3  0d8b7631-030b-4e29-9eb4-079566c114a6   crypto_LUKS part                     10.5T
  `-seagate-external-hd-123 dm-2  f21491cc-ce4e-420d-8a76-585ea5fd57ab   ext4        crypt /mnt/storage       10.5T

Однако спустя некоторое время (несколько дней или может быть пару недель?) я замечаю в своих логах, что результат той же команды lsblk теперь показывает:

 sdc                         sdc                                                      disk                     10.9T                                                                       
 |-sdc1                      sdc1  67E3-17ED                              vfat        part                      200M                                                                       
 |-sdc2                      sdc2  91c4ccef-ebf2-4976-8c93-93d48340022b   apfs        part                    465.7G                                                                     
 `-sdc3                      sdc3  0d8b7631-030b-4e29-9eb4-079566c114a6   crypto_LUKS part                     10.5T  

Тем не менее, когда я запускаю ls -lah /mnt/storage, я действительно вижу данные на жестком диске. Что происходит? Почему lsblk больше не показывает точку монтирования? Будет ли запись в эту точку монтирования по-прежнему сохранять данные на мой жесткий диск?

Также, какой правильный способ определить, что зашифрованный жесткий диск открыт и смонтирован, если я не могу просто использовать lsblk?

Мой скрипт выполняется по расписанию cron, потому что по какой-то причине, после некоторого продолжительного времени, монтирование внешнего жесткого диска снимается. Если скрипт обнаруживает это, он пытается выполнить luksopen и монтирование. Тем не менее, скрипт определял, открыто ли luks, основываясь на наличии $LUKS_UUID в команде lsblk, и теперь, кажется, это ненадежный способ обнаружения, что диск открыт. Какой правильный способ определить, могу ли я получить к нему доступ? Достаточно ли просто проверить df -h | grep /mnt/storage ? Мне не совсем ясно, достаточно ли этого, чтобы сказать, что диск действительно открыт / расшифрован / используется, поэтому я изначально использовал команду lsblk.

Ответ или решение

Проблема, с которой вы столкнулись, может быть вызвана несколькими факторами, связанными с управлением внешними накопителями в Linux. Давайте разберем ваши вопросы подробно.

Почему lsblk не показывает точку монтирования?

Команда lsblk отображает текущее состояние блоковых устройств и их соответствующих точек монтирования. Когда вы не видите монтирование в выводе lsblk, это может указывать на то, что файловая система не была должным образом монтирована или отключилась, однако ваша команда ls -lah /mnt/storage показывает данные. Это может происходить по следующим причинам:

  1. Неожиданное отключение привода: Если ваш внешний привод временно отключается (например, из-за энергосберегающих функций), то монтирование может стать нестабильным. В этом случае содержимое каталога остается доступным, но связь с устройством может потеряться.

  2. Таймаут монтирования: Если ваш скрипт монтирует диск через cron, а система не может завершить процесс монтирования (например, по проблемам с подключением), то она может оставить монтирование в состоянии "неактивно".

Как узнать, открыт ли зашифрованный диск и смонтирован ли он?

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

  1. Команда mount: Выполнив команду mount, можно увидеть все смонтированные файловые системы и их точки монтирования. Вы можете проверить, что ваша точка /mnt/storage действительно смонтирована:

    mount | grep /mnt/storage
  2. Состояние LUKS: Вы можете использовать cryptsetup status для проверки состояния LUKS-проверки:

    sudo cryptsetup status seagate-external-hd-123

    Это покажет, открыт ли ваш зашифрованный раздел.

  3. Команда df -h: Как вы правильно заметили, команда df -h | grep /mnt/storage также полезна. Она покажет, что файловая система действительно монтирована и доступна. Это можно считать достаточно надежным индикатором.

Как предотвратить автоматическое размонтирование диска?

Если ваш скрипт запускается через cron, убедитесь, что он содержит условия для повторного монтирования при обнаружении, что диск отключен. Например:

# Проверка, открыт ли LUKS
if ! cryptsetup status seagate-external-hd-123 | grep -q "is active"; then
    echo "Диск не открыт, открываю..."
    sudo cryptsetup luksOpen --key-file=$KEY_FILE UUID=$DRIVE_UUID $PARTITION_NAME
fi

# Проверка, смонтирован ли диск
if ! mount | grep -q "/mnt/storage"; then
    echo "Диск не смонтирован, монтирую..."
    sudo mount /dev/mapper/$PARTITION_NAME /mnt/storage
fi

С помощью вышеупомянутых методов вы сможете более надежно контролировать доступ к вашему зашифрованному внешнему жесткому диску и избежать проблем с его стабильностью в будущем.

Оцените материал
Добавить комментарий

Капча загружается...