Я удалил пространства имен (NS) на своем NVMe SSD, и Ubuntu не может распознать устройство.

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

У меня было два пространства имен (NS) на моем NVMe SSD (Samsung), и я удалил оба, чтобы создать только одно, но Ubuntu не может распознать устройство после удаления. Как мне восстановить диск сейчас?

Команда, использованная для удаления: sudo nvme delete-ns /dev/nvme0n1 -n 1

  • Ubuntu 18.04.1 LTS
  • Ядро 4.15

Вы все равно должны увидеть nvme0 в /dev — только записи –nX должны исчезнуть. Попробуйте sudo nvme create-ns -s 100000 -b 4096 /dev/nvme0, затем sudo nvme attach -n 1 /dev/nvme0, и посмотрите, сработают ли вещи снова.

По сути, после удаления всех пространств имен, пространства имен этого конкретного NVMe диска не будут отображаться в списке дисков, когда мы используем команды, такие как lsblk, fdisk -l или nvme list. Причина в том, что на контроллере нет выделенных пространств имен.

Но если вы выполните команду ls /dev/nvme*, он покажет диск /dev/nvme0. Теперь вам просто нужно создать пространство имен с использованием всей емкости, используя команду create-ns. Команда выглядит следующим образом:

Если размер вашего диска 120 ГБ, а размер блока, который вы хотите на диске, составляет 4 КБ, вам нужно рассчитать количество 4 КБ секторов в вашем 120 ГБ диске следующим образом:

x = (120 × 1024 × 1024 × 1024) / (4 × 1024) = 31457280

Так что команда для выполнения следующая:

nvme create-ns /dev/nvme0 -s 31457280 -c 31457280 -b 4096

После создания пространства имен нам нужно прикрепить его следующим образом:

nvme attach-ns /dev/nvme0 -n 1 -c 0

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

Для восстановления вашего NVMe SSD после удаления пространств имен (NS), выполните следующие шаги:

  1. Подтверждение наличия устройства: Проверьте, что ваше устройство все еще отображается в /dev. Выполните команду:

    ls /dev/nvme*

    Вы должны увидеть /dev/nvme0, но пространства имен (например, /dev/nvme0n1, /dev/nvme0n2) отсутствуют.

  2. Создание нового пространства имен: После удаления всех пространств имен вам необходимо создать новое пространство имен, которое будет использовать всю доступную емкость SSD. Для этого сначала разузнайте размер вашего SSD и размер блока, который вы хотите использовать. Например, если ваш SSD имеет размер 120 ГБ и вы хотите использовать блок размером 4 КБ, выполните следующие расчёты.

    Рассчитайте количество 4 КБ блоков, доступных на вашем SSD:
    [
    x = \frac{120 \times 1024 \times 1024 \times 1024}{4 \times 1024} = 31457280
    ]
    Таким образом, вы получите 31457280 блоков по 4 КБ.

  3. Создание пространства имен: Введите следующую команду для создания нового пространства имен:

    sudo nvme create-ns /dev/nvme0 -s 31457280 -c 31457280 -b 4096

    Здесь -s (size) и -c (capacity) обозначают количество блоков, а -b (block size) — размер блока.

  4. Прикрепление пространства имен: После создания пространства имен его необходимо прикрепить. Используйте следующую команду:

    sudo nvme attach-ns /dev/nvme0 -n 1 -c 0

    Параметры -n 1 указывают, что вы прикрепляете пространство имен с номером 1, а -c 0 указывает на дополнительный контроллер (если требуется).

  5. Проверка статуса: После этих действий проверьте, распознается ли новое пространство имен:

    lsblk

    или

    sudo nvme list

Если все шаги выполнены корректно, ваш NVMe SSD должен снова быть доступен в системе, и вы сможете использовать его как обычно. В случае возникновения ошибок или проблем с командами, пожалуйста, проверьте вывод команд на наличие сообщений об ошибках, которые могут помочь в диагностике.

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

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