Вопрос или проблема
У меня было два пространства имен (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), выполните следующие шаги:
-
Подтверждение наличия устройства: Проверьте, что ваше устройство все еще отображается в
/dev
. Выполните команду:ls /dev/nvme*
Вы должны увидеть
/dev/nvme0
, но пространства имен (например,/dev/nvme0n1
,/dev/nvme0n2
) отсутствуют. -
Создание нового пространства имен: После удаления всех пространств имен вам необходимо создать новое пространство имен, которое будет использовать всю доступную емкость SSD. Для этого сначала разузнайте размер вашего SSD и размер блока, который вы хотите использовать. Например, если ваш SSD имеет размер 120 ГБ и вы хотите использовать блок размером 4 КБ, выполните следующие расчёты.
Рассчитайте количество 4 КБ блоков, доступных на вашем SSD:
[
x = \frac{120 \times 1024 \times 1024 \times 1024}{4 \times 1024} = 31457280
]
Таким образом, вы получите 31457280 блоков по 4 КБ. -
Создание пространства имен: Введите следующую команду для создания нового пространства имен:
sudo nvme create-ns /dev/nvme0 -s 31457280 -c 31457280 -b 4096
Здесь
-s
(size) и-c
(capacity) обозначают количество блоков, а-b
(block size) — размер блока. -
Прикрепление пространства имен: После создания пространства имен его необходимо прикрепить. Используйте следующую команду:
sudo nvme attach-ns /dev/nvme0 -n 1 -c 0
Параметры
-n 1
указывают, что вы прикрепляете пространство имен с номером 1, а-c 0
указывает на дополнительный контроллер (если требуется). -
Проверка статуса: После этих действий проверьте, распознается ли новое пространство имен:
lsblk
или
sudo nvme list
Если все шаги выполнены корректно, ваш NVMe SSD должен снова быть доступен в системе, и вы сможете использовать его как обычно. В случае возникновения ошибок или проблем с командами, пожалуйста, проверьте вывод команд на наличие сообщений об ошибках, которые могут помочь в диагностике.