PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » OpenSource » HDD ON - предотвращение выключения внешнего HDD в режиме простоя


HDD ON - предотвращение выключения внешнего HDD в режиме простоя

Сообщений 1 страница 28 из 28

1

Сейчас во внешние жёсткие диска стали встраивать микропрограмму, которая при не активности диска в течение нескольких минут просто выключает его. А как известно давно - постоянные циклы включения и выключения жёсткого диска приводят к исчерпанию ресурсов механики (подшипников) и стрессу для электродвигателя и контроллера во время раскрутки шпинделя. Моя данная программа HDD ON позволяет не выключаться внешнему жёсткому диску во время простоя, потребляет минимум ресурсов и способна продлению службы жёсткому диску со встроенной микропрограммой его выключения при простое. Программа распространяется бесплатно и с исходниками. Это улучшенная версия. Загрузить для Windows можно отсюда Ссылка

Код:
DataSection
  Icon:
    IncludeBinary "Icon.ico"
EndDataSection
Procedure Write(Value)
  Repeat
    CreateFile(0, "dummy.bin")
    WriteAsciiCharacter(0,0)
    FlushFileBuffers(0)
    CloseFile(0)
    Delay(60000)
  ForEver
EndProcedure
CreateThread(@Write(),  0)
OpenWindow(0,1,1,1,1,"",  #PB_Window_Invisible)
CatchImage(0, ?Icon)
AddSysTrayIcon(0, WindowID(0),  ImageID(0))
CreatePopupImageMenu(0, #PB_Menu_SysTrayLook)
  MenuItem(0, "О...")
  MenuItem(1, "Выход")
SysTrayIconMenu(0, MenuID(0))
Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case  0
            MessageRequester("HDD ON",  "©2025 madpsychocell, psyj@rambler.ru")
          Case 1
            End
        EndSelect
    EndSelect
ForEver

0

2

А не проще изменить настройку "Электропитание" -> Отключить жёсткий диск через 20 минут?
Вообще ещё не ясно что больше наносит ущерб - длительная работа или запуск? Остановка даёт возможность остыть.

0

3

Нет не проще - новые жёсткие диски ВНЕШНИЕ не управляются электропитанием с панели управления. Вы внимательно читали - у них встроенная микропрограмма по выключению

0

4

Внешние диски разве не винда выключает или контроллер, к которому подключен диск?
У меня пару штук дисков я их вытаскиваю после использования и да, они выключаются через некоторое время. Я думаю это фича. Бывает забудешь и он часов 10 прицеплен без активности, а некоторые проги вынуждают его запускаться, и вот тут я вспоминаю про него и делаю сначала программное выключение, дав ему остановиться, потом выдёргиваю. Я их вообще как хранилище использую, не для постоянного подключения, иначе бы я его через Sata подключил.
Боюсь я постоянно его в работе держать, упадёт случайно и конец ему придёт. Если не работающий упадет, то ничего не будет или не так критично, один раз падал, вроде работает нормально.

Отредактировано AZJIO (18.01.2025 19:41:36)

0

5

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

0

6

PSY написал(а):

способна продлению службы жёсткому диску

Думаете?
А то что головки будут постоянно парковаться и распарковываться и то что диск все время крутится изнашивая подшипники, значит не сокращает срок службы?

PSY написал(а):

он уже вращается полтора года почти без остановок

Зачем?
Доступ к нему нужен каждую минуту или раз в несколько месяцев?

Покажите смарт диска. Посмотрим к чему привели ваши "оптимизации".

0

7

Доступ нужен почти всегда к диску - у меня там стоят игры и музыка, я мало сплю. Если поставить диск по уровню, то думаю он прослужит лет эдак 10 если конечно выключать компьютер, а у меня только тухнет экран и всё. я ленивый в этом плане и не люблю ждать, поэтому комп всегда работает вырубая только монитор через 15 минут бездействия. 3 года полёт нормальный был постоянно включенным, но он слабый был и я купил новее. История будет та же - постоянно включенный, и ничего ему не будет почти. В нём нет вентиляторов, он маломощный.

Отредактировано PSY (18.01.2025 22:46:51)

0

8

Тогда почему это внешний, а не внутренний диск?
Игры лучше ставить на SSD. Быстрее загружаются и в дальнейшем быстрее прогружаются данные уровня.

PSY написал(а):

не люблю ждать, поэтому комп всегда работает

Винда загружается за 12 секунд с SSD. Долго?

0

9

Это скорее дело привычки, внешний потому как у ноутбука ограничена внутренняя память.

0

10

PSY
Linux + Cinnamon включается 2 сек, при этом экран появляется мгновенно. Он вырубает всё кроме памяти, такой у него один из видов сна. При этом выключаются вентиляторы. Но как и у винды такой сон длится неделю или 10 выходов из сна, потом просто сбойнёт автоматически и перезагрузится. Удобно перед работой что-то посмотреть, зная что ждать не придётся, даже если уже пора выходить (погоду например глянуть).

0

11

Зачем вообще комп выключать? Это устройство воздано для круглосуточной непрерывной работы.
Такие размышления как «дайте ему отдохнуть, он устал» наделяют машину ненужным антропоморфизмом, чувствами, эмоциями и переживаниями, чего даже в сказках не бывает.

0

12

Программы мониторинга состояния диска типа CrystalDiskInfo решают проблему - постоянно опрашивают диск, не давая ему уснуть и заодно показывая "здоровье" диска.

0

13

Ну вот, я просто не нашёл ничего по запросам в поиске удовлетворяющее моему решению сделать диск не выключаемым. Там только писали что панели управления, я это и так уже давно ставил "Никогда" не выключать диск, но это не помогает если у диска микропрограмма по выключению. Мне вполне хватило того что я налепил "на коленке" для себя, вот и решил поделиться простым способом как это сделать,- быть может я не один кто просто ставит на внешний и игры и программы и всё что можно. К тому же программа потребляет всего 1.5Мб памяти ОЗУ и лишь каждую минуту пишет 1 байт данных на диск. Не грузит процессор и просто полезная.

0

14

PSY
1. Если улучшать программу, то в ini-файле можно задать время ожидания. Не уж то через минуту выключается?
2. Не обязательно писать на диск что-то, вроде как достаточно открыть диск, получив дескриптор операции, потом закрыть. Вот пример DriveGetNumber, удалить лишнее, подрезав. И использовать не букву, а физический диск "CreateFile_("\\.\PhysicalDrive" + NumDrive$"
3. Нужно сделать детектор USB дисков, либо в ini-файле задавать номер устройства, из кода понятно, что он работает с диском из которого запущен, но в идеале это должна быть программа в автозагрузке, и кроме проверки USB надо ещё определить что диск шпидельный, а не флешка. Можно использовать маркерный файл, который будет проверен на существование на диске при старте проги, а потом при подключении других проверить подключенные. Это наверно идеальный вариант минимизирующий ошибки детектирования.

0

15

PSY
В винде в планах электропитания галочка есть, только не уверен, влияет ли она на внешние хдд. Имхо, внешние лучше ссд!)

0

16

bizdon написал(а):

PSY
В винде в планах электропитания галочка есть, только не уверен, влияет ли она на внешние хдд. Имхо, внешние лучше ссд!)

А ты попробуй покачай фильмы в блюрэй качестве, долго ссд не проживёт от постоянной записи. Надеюсь что это когда-то решиться.
Да и за цену одного такого ссд - проще купить несколько винтов или один но на большой размер
AZJIO, ну откроешь ты дескриптор диска, я например при выключенном винте мог посмотреть его корневое содержимое и он не включался даже... не знаю, я предложил среднее решение, можно хоть на линукс собрать, только системный лоток не работает.. там всё туго с этим, все эти KDE,Gnome,xfce...

Отредактировано PSY (19.01.2025 21:54:59)

0

17

PSY написал(а):

попробуй покачай фильмы в блюрэй качестве, долго ссд не проживёт от постоянной записи.

С чего вдруг? Берете SSD 2+ТБ нормально производителя и у него будет ресурс больше петабайта.
Торрент не создает сильную нагрузку на SSD. Это очередная байка которой не стоит верить. А вот для HDD постоянное позиционирование вредно, т. к. изнашивается механика.

0

18

PSY
Возможно лучше открыть файл для записи (не создать), перевести позицию в начало файла и записать байт. Тем самым записывается в ту же позицию. Если писать каждый раз заново, то при копировании файлов получится дефрагментация из-за создания нового файла dummy.bin. Можно раз в сутки пересоздать файл, а то запись в одну точку наверняка испортит кластер. Или через 100 записей пересоздавать файл, чтобы сменить точку записи.

Пример, если произведено чтение или запись, то возвращает число записанного и прочитанного, соответственно если диск активен, то функция записи перестаёт работать. Если смотришь кино с диска, то полтора часа функция ничего не пишет, так как диск и так активен.

Код:
EnableExplicit

#IOCTL_DISK_PERFORMANCE     = $70020;

Structure DISK_PERFORMANCE
  BytesRead.q;
  BytesWritten.q;
  ReadTime.q;
  WriteTime.q;
  IdleTime.q;
  ReadCount.l;
  WriteCount.l;
  QueueDepth.l;
  SplitCount.l;
  QueryTime.l;
  StorageDeviceNumber.l;
  StorageManagerName.l[8];
EndStructure

Global Count_Read, Count_Write
Global hDevice
Global lBytesReturned
Global hdd_st

hDevice = CreateFile_("\\.\PhysicalDrive1",0,0,0,#OPEN_EXISTING, 0, 0)
If hDevice = #INVALID_HANDLE_VALUE
  End
EndIf
   
Global dp.DISK_PERFORMANCE

Procedure DiskActivation()
	Protected hdd_st
	If DeviceIoControl_(hDevice, #IOCTL_DISK_PERFORMANCE, 0, 0, @dp, SizeOf(DISK_PERFORMANCE), @lBytesReturned, 0)
    hdd_st = (dp\ReadCount - Count_Read + dp\WriteCount - Count_Write)
    Count_Read = dp\ReadCount
    Count_Write = dp\WriteCount
	EndIf
	ProcedureReturn hdd_st
EndProcedure

Repeat
	hdd_st = DiskActivation()
	If hdd_st
    Debug "Не требуется выполнять запись " + Str(hdd_st)
	Else
    Debug "Требуется выполнить запись " + Str(hdd_st)
	EndIf
    Delay(1500)
ForEver

Вот не знаю, если просматриваешь папки является ли это чтением? Ведь чтение как я понимаю чтение файлов, а не MFT.
В структуре есть поле IdleTime (простой), может его использовать для проверки? Если время простоя более минуты, то выполнить запись.

Отредактировано AZJIO (20.01.2025 17:04:32)

0

19

AZJIO написал(а):

Возможно лучше открыть файл для записи (не создать)

Зачем записывать?
Можно читать байт из файла выключив буферизацию. Но сама по себе затея держать постоянно включенным внешний диск, не самая лучшая. При его работе возникают вибрации т. к. диск не закреплен и просто лежит на столе. Есть вероятность ударов головок о блины. Не зря же внешние диски паркуются и выключаются при бездействии.

0

20

Пётр
Я забыл про отключение буферизации (FileBuffersSize()) задав 0, думал будет в память писать, а так, конечно правильнее использовать чтение.

Я же сказал что против, но если автор хочет, то сделать это максимально оптимизировано.

0

21

Жёсткий диск не ограничен в отличие от Ssd тем что можно боятся за запись. Он же магнитный. А пишет куда попало, к тому же фрагментация на Ntfs - это дело ничего не доказывающее в уменьшении быстродействия (или заметным уменьшением). Делайте как хотите, я привёл идею реализации которую уже использовал несколько лет на друугих винтах, которые после сильной попойки выбросил из окна. И они пахали лет 3-4.

0

22

PSY написал(а):

Жёсткий диск не ограничен в отличие от Ssd тем что можно боятся за запись.

Вы попробуйте запишите больше петабайта на SSD.
Это не так просто как кажется. Предположим вы каждый день пишите по 100 ГБ на SSD. Ресурс 1 ПБ будет исчерпан через 10000 дней или 27 лет. Мало?
Да, по мере исчерпания ресурса ухудшается способность ячеек флеша удерживать заряд, но если диск не китайский из отбраковки, он обычно служит долго несмотря на постоянную запись.

PSY написал(а):

Он же магнитный.

И механический. Это значит что со временем подшипники изнашиваются и появляется люфт. А это биения блинов, неправильное позиционирование и т. д. Особенно быстро это происходит в ноутбучных и внешних HDD, т к. они небольшого размера и точность позиционирования должна быть выше чем у внутренних 3.5 при том же объеме. А если диск черепичный, то ему вообще противопоказана долгая работа.

0

23

Пётр написал(а):

по 100 ГБ на SSD. Ресурс 1 ПБ будет исчерпан через 10000 дней или 27 лет.

А вы теперь представьте что контроллер SSD пишет не всегда в разные места памяти, а в одни и те же. Где-то читал что раз 600 переустановить винду - и хана SSD.

0

24

PSY написал(а):

что раз 600 переустановить винду - и хана SSD

Это же сколько жизней надо прожить.

Смотрели сегодня с коллегой по работе ресурсы NVMe, у его купленных дисков 360 Тб, вот сейчас смотрю, есть 480 Тб. Хвалится что за 2 года потратил 16 Тб. 360/16=22, умножаем на 2 года, получаем 44 года ресурс.

Говорит винда с него грузится 3 секунды.

Не вижу смысла не верить производителям, они же берут к примеру минимальную память и начинают активно в неё писать, читать и потом выводят сколько их микросхема может выдержать перезаписей. 480 Тб делим на 1 Тб памяти, получаем 480 раз перезапись одного места. Так что даже меньше. Вероятно контроллер должен уметь писать в разные участки равномерно.

Отредактировано AZJIO (21.01.2025 20:22:55)

0

25

Azjio и я о том же, сам посуди процессор с частотой 2Ггц - это до 2 миллиардов операций в секунду, контроллер и того меньше, так как ему санализировать кучу файлов за такой малый период времени, он по сути пишет как попало, а тесты - это скорее как полные проходы от нулевого адреса до конца. Эти тесты как сейчас китайские ватты на акустические системы - пишут мощность с искажениями и не на частоте 1кГц как писали в СССР при малом уровне искажений. Для сравнения ваттов я собирал ламповый усилитель 2 на 20 Ватт, так он орал так что себя не слышишь и сейчас имею китайские колонки которые на эти ватты ничего толком различимого не играют и тише намного... Вот было же когда то у нас своё всё отечественное и дешево и сердито, а щас...
Поэтому я имею старый добрый жёсткий диск, повторюсь если его выставить по уровню - то ему почти ничего не будет.
В моей коллекции остался ещё один жёсткий диск только не внешний, так он до сих пор (отдал) пашет у человека, ему 22 года на 80Гб. Работал с утра до ночи, всего 2 битых сектора и они маркируются котроллером как пропускать их.

Отредактировано PSY (21.01.2025 22:55:58)

0

26

PSY написал(а):

А вы теперь представьте что контроллер SSD пишет не всегда в разные места памяти, а в одни и те же.

Тогда никогда не покупать такой SSD!
Даже в дешевых китайских, контроллеры умеют выравнивать износ что хорошо видно на смарте по минимуму, среднему и максимуму стираний.
Вы можете все время переписывать один и тот же сектор диска, а контроллер будет записывать данные в разные области флеша.

PSY написал(а):

процессор с частотой 2Ггц - это до 2 миллиардов операций в секунду

Нет.
Инструкции бывают разные. Не все выполняются за такт. Не всегда инструкции или данные есть в кэше и нужно грузить из ОЗУ и много других нюансов.

PSY написал(а):

он по сути пишет как попало

Нет. Это дешевые флешки могут работать как попало, но не SSD.

0

27

Хорошо, а таблица хранения данных в файловой системе Ssd тоже чтоль хотите сказать путешествует там по памяти? Она же в одном месте. И если её изменять периодически то ресурс скорее выйдет из строя, не так ли?
Поживём увидем весь этот Ssd очередной. у меня он на этом ноуте.

0

28

PSY написал(а):

Где-то читал что раз 600 переустановить винду - и хана SSD.

SSD бывают разные. Если это дешевый китайский объемом 64 ГБ (отбраковка из отбраковки), то все может быть.
А если нормальный SSD, ему эти 600 переустановок ничего не сделают. Только зачем столько переустанавливать систему? Она должна работать годами.

PSY написал(а):

Хорошо, а таблица хранения данных в файловой системе Ssd тоже чтоль хотите сказать путешествует там по памяти?

Таблица трансляции? Да должна записываться в разные места флеша.

https://dzen.ru/a/ZJWK9OD5kx03ywnn
https://ru.transcend-info.com/embedded/ … r-leveling
https://habr.com/ru/companies/vdsina/articles/564470/
https://habr.com/ru/companies/dsol/articles/504380/

Суть FTL – преобразование логических адресов устройства в физичеcкие адреса NAND флеш-памяти.

https://habrastorage.org/r/w1560/webt/tq/n3/cg/tqn3cgsslzeonzbglewg1thwfny.png

Каждому логическому LBA ставится область памяти в NAND. Это называется Logical Unit Number Table (LUN table). Для перезаписи логического блока стираются данные свободного физического блока, после чего происходит замена в LUN table, что создает для пользователя видимость перезаписи. От того, какого размера выбираются логические блоки, зависит размер LUN table (не во всех устройствах целесообразно иметь большие объемы памяти). Существуют два принципиально разных подхода в реализации FTL: блочная адресация и страничная адресация.

Блочная адресация

В блочной адресации размер логического блока соответствует размеру физического блока. В свою очередь в массиве LUN table с индексом, равным адресу логического блока, указывается значение, соответствующее адресу физического блока. Для изменения части блока необходимо переписать весь блок целиком.

Преимуществом блочной адресации является малый размер LUN table, что актуально для устройств с малым объемом оперативной памяти, таких как USB-флеш-накопитель или карта памяти microSD. Недостатком является то, что размер блока довольно большой (порядка мегабайтов), и для перезаписи малых объемов данных (например, 512 байт) приходится переписывать весь блок.

Страничная адресация

В страничной адресации в LUN table сохраняются адреса физических страниц. Размер логического блока при этом составляет порядка десятков килобайт.

Преимуществом страничной адресации является высокая скорость перезаписи данных, как последовательно, так и в случайном порядке. Недостатком является большой размер LUN table. Поэтому в состав большинства SSD входит микросхема оперативной памяти, объемом более 100 Мбайт.

На практике в основном применяются гибридные алгоритмы, сочетающие в себе оба варианта адресации. Например, в компактных накопителях (USB-флеш-накопитель, карта памяти SD) основная часть объема адресуется блочным методом, в то время, как часть объема, к которой часто производится обращение, адресуется постранично.

0


Вы здесь » PureBasic - форум » OpenSource » HDD ON - предотвращение выключения внешнего HDD в режиме простоя