Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз мы с вами научились выходить из ситуации, когда ваш USB диск защищен от записи, поняли как этого избежать. Сегодня я хочу поговорить на тему серверного оборудования, а именно разберем ситуацию, когда у меня перестал работать сервер PowerEdge M630, определяя загрузочные диски в статусе «Fault detected on drive 1 in disk drive bay 1».
Описание проблемы
В один прекрасный рабочий день система мониторинга прислала оповещение, что перестал отвечать по сети (через команду PING) один из серверов. В результате разбора полетов, это оказалось лезвие PowerEdge M630. Сервер по RDP не отвечал, поэтому пришлось воспользоваться интерфейсом порта управления IDRAC. Когда я попал в форму веб управления корзиной PowerEdge M1000e, то на против нужного мне лезвия, стоял статус с ошибкой, где на против пункта «Health» красовался красный круг с крестом.
Change These PSVR2 Settings BEFORE Playing!
Перейдя в интерфейс с управлением самого лезвия уже было более понятно в чем дело. IDRAC System Event Log сообщал, что оба диска на которых была установлена система были недоступны и имели статус «Fault detected on drive 1 in disk drive bay 1».
Открыв консольное подключение к серверу я увидел вот такую прекрасную надпись:
There are offline or missing virtual drives with preserved cache. Please check the cables and ensure that all drives are present. Press any key to enter the configuration utility
Далее я попытался войти в PowerEdge Expandable RAID Controller BIOS, через сочетание клавиш CTRL+R. Конфигурация пропала, был статус «No Configuration Present»
На всякий случай я подсветил оба диска и включил на них LED подсветку.
Статус на RAID контроллере PERC H730P Mini был «Need Attention».
Fix DOOM Eternal No Physical Devices Error On PC
Устранение проблем с отсутствующими дисками
Я понимаю, что если бы вышел из строя один диск, то это возможно, но вот оба одновременно, это мало вероятно. Первое, что советует сделать Dell, это полностью выключить лезвие и желательно его вытащить на часик и более, я видел случаи, что у люди оставляли его вытащенным на сутки и потом все заводилось. Для начала я вытащил диски и заново воткнул. Видно, что диски получали статус «Remove», сервер видит два диска и один виртуальный массив.
Диски получили статус Online на какое-то время.
Но virtual drive все еще имел статус «»Degraded
Раз просто переподключить диски не помогло, то я обесточил лезвие, вытащил на 30 минут его, в IDRAC на корзине вы сразу увидите статус «Reconnecting» после его подключения.
После восстановления связи с лезвием я получил новую ошибку на дисках:
RAC0501: There are no physical disks to be displayed. 1. Check if the host system is powered off or shutdown. 2. Check if the physical disks are inserted into the enclosure or attached to the backplane. 3. There are no out-of-band capable controllers detected
Теперь они вообще не определялись.
Физические диски отсутствовали и была надпись
RAC0503: There are no out-of-band capable controllers to be displayed. Check if the host system is powered off or shutdown.
Чтобы устранить данную ошибку, вам нужно произвести Power Off вашему лезвия, далее в интерфейсе IDRAC выбрать пункт «Server — Properties» В разделе «Quick Launch Tasks» необходимо произвести перезагрузку IDRAC, выбираем пункт «Reset IDRAC».
Соглашаемся с перезагрузкой IDRAC.
Вы получите сообщение, что
iDRAC is resetting, it may take several minutes for iDRAC to reset. You will not be able to access the iDRAC with this browser session. Please close and reconnect to the iDRAC using new browser session.
Волноваться не нужно настройки IP-адреса у IDRAC не слетят.
Проверяем статусы ваших дисков и загрузку сервера, иногда приходится после этого сделать еще один раз «Reset IDRAC», но уже на включенном сервере. На этом у меня все, мы рассмотрели интересную ситуацию, когда блейд PowerEdge M630 перестает видеть свои диски. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Популярные Похожие записи:
Замена сбойного диска на RAID PERC H740P Adapter в ЦОД
- Ошибка JCP024 Lifecycle Controller in use
- Как создать RAID на Dell PERC H330 Adapter
- Как установить диск в сервер Dell Power Edge R740xd
- Не грузится сервер Dell PowerEdge R740
Ошибка RAC0509 the server temporarily unavailable
Источник: pyatilistnik.org
VBOMesh
После того как Вулкан был проинициализирован, мы можем начать работу с основными основными объектами API — устройствами (devices) и очередями (queues). В этой статье представлена информация о физических устрйоствах и приведен небольшой пример инициализации Вулкана и перечисления некотрых свойств инстанса и устройства.
Вулкан разделяет концепцию физических и логических устройств. Физические устройства это обычно конкретное устройство в системе (возможно — составленное из нескольких отдельных устройств, но работающих вместе), их количество конечно. Логическое устройство это отображение этого устройства для приложения.
Чтоб получить список физических устройств в системе необходимо вызвать:
VkResult vkEnumeratePhysicalDevices (
VkInstance instance,
uint32_t * pPhysicalDeviceCount,
VkPhysicalDevice * pPhysicalDevices);
• instance — хэндл инстанса Вулкана (VkInstance), созданного через vkCreateInstance.
• pPhysicalDevices — если NULL, тогда количество доступных физических устройств возвращается через pPhysicalDeviceCount, иначе,
• pPhysicalDeviceCount должен указывать на переменную, содержащую размер выделеннйо памяти под pPhysicalDevices, после выполнения там будет актуальное количество физических устройств, записанных в pPhysicalDevices.
Возвращаемые коды ошибок:
• VK_SUCCESS
• VK_ERROR_OUT_OF_HOST_MEMORY
• VK_ERROR_OUT_OF_DEVICE_MEMORY
• VK_ERROR_INITIALIZATION_FAILED
После того как был получен список физических устройств можно получить свойства этого физического устройства вызвав:
void vkGetPhysicalDeviceProperties (
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceProperties * pProperties);
• physicalDevice хэндл ( VkPhysicalDevice ) физического устройства, чьи свойства мы хотим получить.
• pProperties — указатель на структуру VkPhysicalDeviceProperties , в которую будут возвращены свойства устройства.
Структура VkPhysicalDeviceProperties определена как:
typedef struct VkPhysicalDeviceProperties <
uint32_t apiVersion;
uint32_t driverVersion;
uint32_t vendorID;
uint32_t deviceID;
VkPhysicalDeviceType deviceType;
char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
uint8_t pipelineCacheUUID[VK_UUID_SIZE];
VkPhysicalDeviceLimits limits;
VkPhysicalDeviceSparseProperties sparseProperties;
> VkPhysicalDeviceProperties;
• apiVersion — версия Вулкана, поддерживаемая устройством.
• driverVersion — указанная вендором версия драйвера.
• vendorID — уникальный идентификатор вендора физического устройства.
• deviceID — уникальный идентификатор физического устройства (в рамках вендора).
Поля vendorID и deviceID позволяют приложению адаптироваться под характеристики устройства.
• deviceType — VkPhysicalDeviceType — тип устройства.
• deviceName — UTF-8 строка, содержащая имя устройства.
• pipelineCacheUUID — массив размером VK_UUID_SIZE, содержащий 8-ми битное представление универсального уникального идентификатора устройства (UUID).
• limits — структура VkPhysicalDeviceLimits , которая определяет специфические для устройства ограничения.
• sparseProperties — структура VkPhysicalDeviceSparseProperties , которая определяет некоторые специфичные свойства физического устройства.
Тип физического устройства определяется как:
typedef enum VkPhysicalDeviceType <
VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
> VkPhysicalDeviceType;
• VK_PHYSICAL_DEVICE_TYPE_OTHER — устройство не совпадает ни с одним из доступных типов.
• VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU — устройство обычно встроенное или тесно связано с хостом.
• VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU — обычно это отдельный процессор подключенный к хосту.
• VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU — устройство обычно является виртуальной нодой в виртуальном окружении.
• VK_PHYSICAL_DEVICE_TYPE_CPU — устройство работает на том же процессоре что и хост.
Тип физического устройства имеет только информативное значение и не оказывает влияния на работу системы. Однако, тип устройства может коррелировать с другими предоставляемыми системой ресурсами, такими как количество доступной памяти.
Прежде чем перейти к рассмотрению/переводу остальной части спецификации, хотелось бы подвести черту под инициализацией, в виде небольшой демки с инициализацией Вулкана. Из предыдущей главы мы уже знаем что для этого необходимо создать инстанс через vkCreateInstance , заполнив соответствующие структуры. Чтоб проверить что Вулкан проинициализировался и что инстанс создался успешно попробуем получить кое-какую информацию о свойствах инстанса и имеющихся в системе устройствах.
Так как импортировать все функции вручную это долго, то воспользуюсь рекомендацией Хроноса и использую для этого их загрузчик:
Создание проекта и компиляция библиотеки в целом задача тривиальная, следуйте инструкциям. На выходе у вас будет библиотека “ vulkan-1.lib ”, которую нужно будет прилинковать к вашему проекту.
Для проекта вам так же потребуются заголовочные файлы Вулкана, их так же можно найти в проекте Vulkan-LoaderAndValidationLayers.
Включаем в программу заголовочные файлы:
И переходим к инициализации Вулкана. Для того, чтоб создать инстанс через vkCreateInstance нам необходимо заполнить структуру VkInstanceCreateInfo. Поля этой структуры были детально описаны в предыдущей статье:
VkInstanceCreateInfo inst_info = <
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.pNext = NULL,
.pApplicationInfo = NULL,
.enabledLayerCount = 0,
.ppEnabledLayerNames = NULL,
.enabledExtensionCount = 0,
.ppEnabledExtensionNames = NULL,
Как видите — все просто 🙂 Главное правильно указать тип структуры.
При желании можно заполнить структуру VkApplicationInfo, в которой вы можете указать различную информацию о вашем приложении, но это действие не обязательно.
Отдельно стоило бы упомянуть о полях ppEnabledLayerNames и ppEnabledExtensionNames, однако в спецификации пока было лишь одно упоминание о них, молв если вы хотите использовать дополнительные лееры или расширения, то вы должны их активировать через соответствующие структуры. Мы пока понятия не имеем что это такое и нужно ли оно нам, и уж точно сейчас мы ничего из этого не будем использовать, поэтому смело указываем там NULL.
Все, этого достаточно чтоб проинициализировать вулкан и создать наш инстанс.
Останется только вызвать соответствующую команду и проверить что у нас нет ошибок:
VkInstance inst;
VkResult err = vkCreateInstance(inst);
Если функция отработает успешно, то она вернет код ошибки VK_SUCCESS, в противном случае может быть одна из перечисленных ошибок:
• VK_ERROR_OUT_OF_HOST_MEMORY
• VK_ERROR_OUT_OF_DEVICE_MEMORY
• VK_ERROR_INITIALIZATION_FAILED
• VK_ERROR_LAYER_NOT_PRESENT
• VK_ERROR_EXTENSION_NOT_PRESENT
• VK_ERROR_INCOMPATIBLE_DRIVER
Так как работать с памятью мы еще не умеем, то в обоих случаях у нас в качестве аллокатора в функциях указан NULL, на этом этапе этого достаточно.
Первым желанием, после того как я создал инстанс, было узнать, какие устройства будут обнаружены в моей системе (AMD Kaveri + NVidia) и какие свойства у них оно мне покажет. Для этого воспользуемся описанной ранее функцией: vkEnumeratePhysicalDevices . Для начала нам нужно запроситьколичество физических устрйоств в системе:
err = vkEnumeratePhysicalDevices (inst,
Первым параметром мы передаем созданный нами инстанс, вторым параметром — переменную, куда мы будем сохранять количество устройств, в качестве третьего параметра указываем NULL, что означает что нас интересует только количество устройств.
Узнав количество устройств выделяем под их описание память, к примеру так:
VkPhysicalDevice *physical_devices = malloc(sizeof(VkPhysicalDevice) * dev_count);
И повторно вызываем эту же функцию, чтоб получить список этих устройств:
err = vkEnumeratePhysicalDevices(inst,
Полученные физические устройства пригодятся нам позже, а пока они не несут нам никакой информации (а мы любопытны). Чтоб получить информацию о типе устройства необходимо вызвать описанную ранее функцию: vkGetPhysicalDeviceProperties .
VkPhysicalDeviceProperties dev_props;
vkGetPhysicalDeviceProperties (physical_devices[i],
Эту функцию нужно вызывать для каждого найденного физического устройства (если конечно вам нужно получить о них информацию, что не обязательно для работы приложения).
Проверили? работает? Тогда этот инстанс можно удалить с чистой совестью:
vkDestroyInstance (inst, NULL);
Естественно на этом мы завершаем нашу работу с Вулканом.
Не знаю как вас, а меня смутило то, что при создании инстанса туда нужно передать список используемых лееров и расширений, мне сразу стало интересно — что это и нельзя ли получить список доступных нам лееров? Оказалось что можно, и для этого не нужно даже создавать инстанс Вулкана!
Для этих целей предназначена функция:
VkResult vkEnumerateInstanceLayerProperties (
uint32_t *pPropertyCount, VkLayerProperties* pProperties);
Предполагаю что эта функция будет описана позже, пока, забегая на перед, могу сказать что используется она так же как и описанные в этой главе vkEnumeratePhysicalDevices, где первый вызов функции с указателем на pPropertyCount и NULL вместо pProperties запрашивает количество доступных слоев, а второй вызов, с переданным pProperties нужного размера — возвращает массив строк. Если вам не жалко памяти, то сюда можно передать массив большего размера, актуальное количество элементов будет так же возвращено в pPropertyCount. Результат возвращается в виде структуры:
typedef struct VkLayerProperties <
char layerName[VK_MAX_EXTENSION_NAME_SIZE];
uint32_t specVersion;
uint32_t implementationVersion;
char description[VK_MAX_DESCRIPTION_SIZE];
> VkLayerProperties;
Аналогичным образом можно получить и список поддерживаемых расширений, для этого существует функция:
VkResult vkEnumerateInstanceExtensionProperties (
const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties);
Отличие от предыдущей функции только в том, что первым параметром мы можем указать имя леера, для которого нам нужно получить список поддерживаемых расширений, если указать там NULL — получим полный(глобальный) список поддерживаемых расширений в виде VkExtensionProperties:
typedef struct VkExtensionProperties <
char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
uint32_t specVersion;
> VkExtensionProperties;
Как видно из объявления структур, каждая из них имеет то самое имя слоя/расширения, которое нам нужно передать при создании инстанса + некоторую информацию о версии спецификации/имплементации. Коды ошибок в обоих случаях будут следующими:
VK_SUCCESS
VK_INCOMPLETE
VK_ERROR_OUT_OF_HOST_MEMORY
VK_ERROR_OUT_OF_DEVICE_MEMORY
VulkanTest1.zip — з десь вы можете найти исходный код описанного примера и бинарник, он основан на примере cube.c из набора LoaderAndValidationLayers, предоставляемый Хроносом, который был разработан ими совместно с Valve Corporation и LunarG, Inc.
Источник: vbomesh.blogspot.com
Vk get physical device features 2 не найден
При переключении в NVIDIA-Prime на Intel Steam нормально работает и игры запускаются(тестирую на WoT Blitz)
В PortSteamX64-22 игры запускается и после заставки просто вылетает.
Вот лог с PortSteam
При переключении на Nvidia в Steam игры зависает при запуске, в PortSteam вылетает ошибка
render error 01(после 50-ой перезагрузке компа игра стала вылетать после заставки)
вот лог
Интересно то, что в логе видеокарта выбрана Intel,а драйвера Nvidia.
Вот с gpu-manager
Ето лог с gpu-manager
Я так понимаю хоть NVIDIA и работает игры запускаются все равно с Intel.
Драйвера Nvidia 390 запустились только из Synaptic и только 390, остальные не работают(пробывал около 50-ти способов и драйверов).
С неофициального PPA не работают.
Nouveau в blacklist добавлен.
32-х битные библиотеки NVIDIA добавлены
Архитектура i386 добавлена
На Mint Sonya 32бит с драйверами Nvidia 384 все нормально работало и переключалось.
Запуск Steam командой «STEAM_RUNTIME=0 steam» не помогает. Ничего не меняется.
Вывода команд:
~$ lspci -knn | grep -EA2 ‘VGA|3D’ 00:02.0 VGA compatible controller [0300]: Intel Corporation 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) Subsystem: ASUSTeK Computer Inc. 3rd Gen Core processor Graphics Controller [1043:124d] Kernel driver in use: i915 — 01:00.0 3D controller [0302]: NVIDIA Corporation GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] [10de:1140] (rev a1) Subsystem: ASUSTeK Computer Inc. GeForce GT 720M [1043:124d] Kernel driver in use: nvidia
~$ lsmod | grep nvidia nvidia_uvm 761856 0 nvidia_drm 45056 3 nvidia_modeset 1048576 3 nvidia_drm nvidia 14381056 189 nvidia_uvm,nvidia_modeset drm_kms_helper 180224 2 nvidia_drm,i915 drm 483328 6 drm_kms_helper,nvidia_drm,i915 ipmi_msghandler 102400 2 ipmi_devintf,nvidia
nvidia-smi Mon Mar 9 21:11:14 2020 +——————————————————————————+ | NVIDIA-SMI 390.116 Driver Version: 390.116 | |——————————-+———————-+———————-+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GT 720M Off | 00000000:01:00.0 N/A | N/A | | N/A 50C P0 N/A / N/A | 142MiB / 1985MiB | N/A Default | +——————————-+———————-+———————-+ +——————————————————————————+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 Not Supported | +——————————————————————————+
~$ dpkg -l | grep -i nvidia ii libnvidia-cfg1-390:amd64 390.116-0ubuntu0.18.04.3 amd64 NVIDIA binary OpenGL/GLX configuration library ii libnvidia-common-390 390.116-0ubuntu0.18.04.3 all Shared files used by the NVIDIA libraries ii libnvidia-common-410 410.104-0ubuntu0~18.04.1 all Shared files used by the NVIDIA libraries ii libnvidia-compute-390:amd64 390.116-0ubuntu0.18.04.3 amd64 NVIDIA libcompute package ii libnvidia-compute-390:i386 390.116-0ubuntu0.18.04.3 i386 NVIDIA libcompute package rc libnvidia-compute-415:amd64 415.27-0ubuntu0~gpu18.04.2 amd64 NVIDIA libcompute package ii libnvidia-decode-390:amd64 390.116-0ubuntu0.18.04.3 amd64 NVIDIA Video Decoding runtime libraries ii libnvidia-decode-390:i386 390.116-0ubuntu0.18.04.3 i386 NVIDIA Video Decoding runtime libraries ii libnvidia-encode-390:amd64 390.116-0ubuntu0.18.04.3 amd64 NVENC Video Encoding runtime library ii libnvidia-encode-390:i386 390.116-0ubuntu0.18.04.3 i386 NVENC Video Encoding runtime library ii libnvidia-fbc1-390:amd64 390.116-0ubuntu0.18.04.3 amd64 NVIDIA OpenGL-based Framebuffer Capture runtime library ii libnvidia-fbc1-390:i386 390.116-0ubuntu0.18.04.3 i386 NVIDIA OpenGL-based Framebuffer Capture runtime library ii libnvidia-gl-390:amd64 390.116-0ubuntu0.18.04.3 amd64 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD ii libnvidia-gl-390:i386 390.116-0ubuntu0.18.04.3 i386 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD ii libnvidia-ifr1-390:amd64 390.116-0ubuntu0.18.04.3 amd64 NVIDIA OpenGL-based Inband Frame Readback runtime library ii libnvidia-ifr1-390:i386 390.116-0ubuntu0.18.04.3 i386 NVIDIA OpenGL-based Inband Frame Readback runtime library ii nvidia-compute-utils-390 390.116-0ubuntu0.18.04.3 amd64 NVIDIA compute utilities ii nvidia-dkms-390 390.116-0ubuntu0.18.04.3 amd64 NVIDIA DKMS package ii nvidia-driver-390 390.116-0ubuntu0.18.04.3 amd64 NVIDIA driver metapackage ii nvidia-kernel-common-390 390.116-0ubuntu0.18.04.3 amd64 Shared files used with the kernel module ii nvidia-kernel-source-390 390.116-0ubuntu0.18.04.3 amd64 NVIDIA kernel source package ii nvidia-prime 0.8.8.2 all Tools to enable NVIDIA’s Prime ii nvidia-settings 390.77-0ubuntu0.18.04.1 amd64 Tool for configuring the NVIDIA graphics driver ii nvidia-utils-390 390.116-0ubuntu0.18.04.3 amd64 NVIDIA driver support binaries ii xserver-xorg-video-nvidia-390 390.116-0ubuntu0.18.04.3 amd64 NVIDIA binary Xorg driver
Источник: linuxmint.com.ru