В некоторых случаях Windows 10, 8.1 и 7 может распознавать внутренний жесткий диск (SATA или SSD) как съемное устройство. В результате в системном трее для такого локального диска отображается значок безопасного извлечения устройства (как у обычной USB флешки).
Конечно, вы не сможете извлечь на лету SATA диск, на котором установлена Windows, но запросто сможете случайно извлечь дополнительный SATA диск. Еще один недостаток таких “Removable” дисков — в Windows 7 нельзя было разбить такой жесткий диск на разделы (в Windows 10 1703 и выше это возможно).
Эта проблема связан с тем, что в Windows по-умолчанию использует универсальный драйвер как для SATA (внутренних), так и для eSATA (внешних) жестких дисков — Standard SATA AHCI controller. Операционная система при подключении таких дисков проверяет поддержку режима HotPlug (извлечения диска “на-горячую”). Данный функционал всегда поддерживается при работе контроллера в режиме AHCI, поэтому в теории, подключенные в таком режиме SATA диски, всегда должны отображаться в списке “Безопасное извлечение устройств”. Однако большинство производителей чипсетов встраивают в драйвер своих устройств или дополнительное ПО функционал автоматического скрытия внутренних SATA дисков.
Установка драйвера SATA контроллера
Если у вас внутренний SATA/SSD диск отображаются в списке безопасного извлечения, скорее всего стоит попробовать установить более подходящий драйвер. Попытайтесь найти последнюю версию драйвер контроллера жесткого диска на сайте производителя вашей материнской платы или компьютера. Также установите родной драйвер чипсета, через который подключен ваш жесткий диск (Intel Rapid, RST and AHCI Driver and GUI, Intel Matrix Storage Manager и т.д.)
Настройки SATA контроллера в BIOS
В некоторых версиях BIOS/UEFI в расширенных настройках возможно отключить горячее подключение (HotSwap или HotPlug) для разъёма, через который подключается жесткий диск. Проверьте, доступна ли у вас эта функция. Также можно изменить режим работы контролера с AHCI на IDE, но вы лишитесь всех преимуществ AHCI.
TreatAsInternalPort: Настройка режима работы SATA дисков через реестр
Для NVIdia контроллеров можно отключить безопасное извлечение на внутренних дисках через реестр. Перейдите в ветку реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvata и создайте DWORD параметр с именем DisableRemovable и значением 1 (обратите внимание, что вместо раздела nvata может быть ключ nvatabus).
Также есть универсальный способ выставить для конкретного порта контроллера атрибут диска “внутренний порт” через реестр.
Сначала нужно определить номер шины контроллера, через который подключен жесткий диск. Для этого откройте диспетчер устройств devmgmt.msc, найдите в разделе дисков свой диск, откройте его свойства. Запомните номер шины (Bus Number) и номер порта (канала) диска (Target ID). В моем примере номер шины и порта — 0.
В Windows пометить порт контроллера как внутренний можно с помощью параметр реестра TreatAsInternalPort. Для этого перейдите в HKLM\SYSTEM\CurrentControlSet\Services\msahci\Controller(n)\Channel(N), где (n) – номер контроллера, через который подключен диск, а (N) номер канала контроллера.
Создайте в данном ключе реестра DWORD параметр с именем TreatAsInternalPort и значением 1.
Это действие нужно выполнить для всех SATA дисков, которые вы хотите пометить внутренними. Например, у вас на компьютере 2 контроллера, к первому подключено 2 SATA диска, а ко второму еще 1. Чтобы пометить их внутренними, нужно выполнить команды:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\msahci\Controller0\Channel0" /f /v TreatAsInternalPort /t REG_DWORD /d 0x00000001
reg add "HKLM\SYSTEM\CurrentControlSet\Services\msahci\Controller0\Channel1" /f /v TreatAsInternalPort /t REG_DWORD /d 0x00000001
reg add "HKLM\SYSTEM\CurrentControlSet\Services\msahci\Controller1\Channel0" /f /v TreatAsInternalPort /t REG_DWORD /d 0x00000001
После внесения изменений нужно перезагрузить компьютер.
В Windows 10 и 8.1 вместо MSAHCI используется драйвер StorAHCI, поэтому местоположение параметра реестра TreatAsInternalPort другое. Перейдите в ветку реестра HKLM\SYSTEM\CurrentControlSet\Services\storahci\Parameters\Device, создайте мультистроковый (REG_MULTI_SZ) параметр TreatAsInternalPort, в каждой строке которого нужно указать номер порта SATA контроллера, который нужно пометить “внутренним”. Например, чтобы пометить внутренними все диски с 0 до 3, в качестве значения TreatAsInternalPort нужно указать:
0
1
2
3
Осталось перезагрузить компьютер, и все SATA/SSD диски с портами от 0 до 3 пропадут из безопасного извлечения и перестанут отображаться как removable.