Конференция "WinAPI" » Про диски.
 
  • OlegNik © (20.01.10 13:20) [0]
    Как узнать какому физическому диску пренадлежит логический диск?
    (что то вроде того
     NumDisk := GetPhDisk('H:\')';
     где NumDisk номер физического диска
    )
  • Riply © (20.01.10 13:35) [1]
    > [0] OlegNik ©   (20.01.10 13:20)
    > Как узнать какому физическому диску пренадлежит логический диск?

    Попробуй пройтись поиском по форуму - эта тема поднималась неоднократно.
  • brother © (20.01.10 13:36) [2]
    и отпишись о результатах ;)
  • Игорь Шевченко © (20.01.10 13:37) [3]
    Это сложно и нафиг не нужно
  • Sha © (20.01.10 16:13) [4]
    Иногда это полезно знать, например, для быстрого копирования файлов.
  • Игорь Шевченко © (20.01.10 17:03) [5]
    Sha ©   (20.01.10 16:13) [4]

    Да ну ? Ты будешь на другой диск копировать, если что ? :)
  • Sha © (20.01.10 17:19) [6]
    Не совсем так.
    Например, эксплорер использует разную стратегию копирования файлов для случая одного физического диска и двух физических дисков.
    Если диски разные, то операции чтения/записи выполняются параллельно, если диск один, то операции чередуются: сначала выполняется чтение большого объема данных, потом запись прочитанного. Это позволяет добиться высокой скорости копирования в обоих случаях.
  • Игорь Шевченко © (20.01.10 17:25) [7]
    Sha ©   (20.01.10 17:19) [6]

    Я сильно извиняюсь, но по-моему explorer использует SHFileOperation, а та, в свою очередь, CopyFileEx. Буду признателен за указание материалов, опровергающих это представление.
  • Sha © (20.01.10 17:34) [8]
    > Игорь Шевченко ©   (20.01.10 17:25) [7]
    Я нигде не говорил, что именно использует эксплорер, поэтому не совсем ясно, о каких материалах речь.
    Я говорил об оптимальной стратегии копирования файлов, которую он, по моему мнению, использует. Куда именно зашита эта стратегия мне неведомо.
  • Игорь Шевченко © (20.01.10 18:04) [9]
    Sha ©   (20.01.10 17:34) [8]

    Я до сих пор считал, что explorer использует одну стратегию, вне зависимости от расположений файлов, если ошибаюсь, просьба ткнуть в ссылку :)
  • Игорь Шевченко © (20.01.10 19:04) [10]
    Диски бывают разные. Бывают диски, для которых вопрос: К какому физическому диску относится логический, не имеет смысла, это разного уровня RAID, где невозможно сказать, на каком, черт возьми, физическом диске расположен мой файл, потому что ответ будет - на нескольких.
    Бывает, что отдельный физический диск присоединен, как каталог, к файловой системе другого физического диска, с помощью точки повторного разбора, здесь вопрос о физических дисках тоже не очень уместен, так как один логический диск распадается на несколько физических.

    Это все больше заставляет меня сомневаться в том, что Explorer или какие-либо другие программы используют разные стратегии для копирования файлов, в зависимости от их месторасположения. Диспетчер ввода-вывода в совокупности с диспетчером томов справится с задачей оптимизации доступа к устройствам гораздо легче, потому что только им известна доскональная информация о расположении конкретных логических блоков на конкретном физическом устройстве.
  • Sha © (20.01.10 20:02) [11]
    > Я до сих пор считал, что explorer использует одну стратегию, вне зависимости от расположений файлов.

    Он может и не знать, что их две или больше, например, если она зашита в CopyFileEx. Кроме того, свой вклад в переупорядочивание исполнения запросов на ввод-вывод могут внести процедуры кеширования, драйвер ОС или прошивка устройства. Но я не думаю, что их вклад слишком велик. Все это можно проверить грамотно поставленными экспериментами.

    > Диски бывают разные...

    Это понятно, но если тип одного - CDROM, а другого - HDD, то весьма вероятно, что это - разные диски :)

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

    Думаю, что эксплорер (или одна из функций в него входящих, например, та же CopyFileEx) вполне могли бы использовать (или попытаться использовать) доступную информацию о идентичности физического носителя, если она поможет увеличить скорость копирования. К этой мысли меня привели наблюдения за компьютерами, на которых или между которыми происходит копирование файлов. Как ни странно, щелкание механизма перемещения головок и загорание лампочек может порождать мысли, а не отвлекать от них.

    > Диспетчер ввода-вывода в совокупности с диспетчером томов справится с
    > задачей оптимизации доступа к устройствам гораздо легче, потому что
    > только им известна доскональная информация о расположении конкретных
    > логических блоков на конкретном физическом устройстве.

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

    > просьба ткнуть в ссылку

    ЕМНИП не так давно, в одном листе улучшений очередного сервис-пака XP, Свисты или 7 мелькнула инфа об улучшениях сделанных в процедуре копирования или как-то так.
  • Игорь Шевченко © (20.01.10 20:17) [12]
    Sha ©   (20.01.10 20:02) [11]


    > Это понятно, но если тип одного - CDROM, а другого - HDD,
    >  то весьма вероятно, что это - разные диски :)


    если тип принимающего диска CDROM - то точно разные :)


    >  Как ни странно, щелкание механизма перемещения головок
    > и загорание лампочек может порождать мысли, а не отвлекать
    > от них.


    Есть filemon, который показывает все IRP, появившиеся в результате копирования.


    > Не проще ли допустить, что процедура копирования чуть более
    > интеллектуальна, чем принято считать?


    Это не ее задача, а подсистемы ввода-вывода. В ядре. Как ты собираешься интеллектуализировать копирование на/с зеркалированного тома, например ?
    И еще раз хочу отметить, что файл может начинаться на одном физическом диске, а заканчиваться на другом.
  • Sha © (20.01.10 20:29) [13]
    > Есть filemon, который показывает все IRP, появившиеся в результате копирования.

    Если серьезно займусь этим, буду иметь в виду.

    > Как ты собираешься интеллектуализировать копирование на/с зеркалированного тома, например ?...

    Я пока не собираюсь ничего оптимизировать.
    Но это не значит, что этого иногда не делает эксплорер.
  • Sha © (20.01.10 20:39) [14]
    > И еще раз хочу отметить, что файл может начинаться на одном физическом диске, а заканчиваться на другом.

    было б очень интересно понаблюдать за копированием такого файла.
  • Игорь Шевченко © (20.01.10 21:00) [15]
    Sha ©   (20.01.10 20:39) [14]

    У меня нет raid и серверной системы, помочь в наблюдении не могу.

    Более того, файл на разных дисках может быть как исходный, так и целевой.

    Я все-таки склоняюсь к мнению, что explorer и(или) функция копирования не мудрит с интеллектуализацией, а полагается на подсистему ввода-вывода.

    Среди документированных API вызова для получения расположения файла в случае нетривиальных томов я не видел.

    По вопросу автора - для тривиальных томов с помощью
    (не)документированных функций получить информацию можно, вот только нафиг она нужна - я не понимаю. Единственное место, где встретилась такая нужда, это программа установки, которая определяет первое физическое устройство, с которого произойдет загрузка системы, чтобы записать на это устройство необходимые файлы. А так как файлы создать надо из-под windows, то для такого устройства надо букву логического диска определить.
  • Sha © (20.01.10 22:01) [16]
    Дело в подсистеме ввода-вывода, в прошивке диска или в последовательности вызова функций чтения-записи можно проверить экспериментально.

    На большинстве офисных всего 1 HDD и в большинстве случаев копирование выполняется с/на него, следовательно в большинстве случаев достаточно простейшей оптимизации, основанной на знании типа диска. Ничто не мешает эксплореру пойти чуть дальше.

    Очевидно, что использование подходящей последовательности вызовов в каждом случае совсем не повредит. При наличии свободного времени постараюсь прояснить ситуацию. Не обещаю, что это будет скоро.
  • Игорь Шевченко © (20.01.10 22:10) [17]

    > При наличии свободного времени постараюсь прояснить ситуацию.
    >  Не обещаю, что это будет скоро.


    взаимно :)
  • SPeller © (21.01.10 09:23) [18]
    В Total Commander, например, надо руками прописывать какие разделы на одном диске. При неправильном указании, например, если диски указаны как на разных носителях, а на самом деле на одном, то скорость копирования заметно падает.
  • Sha © (21.01.10 10:04) [19]
    > SPeller ©   (21.01.10 09:23) [18]

    А падает ли скорость, если указать, что диски на одном носителе, а на самом деле они на разных?
 
Конференция "WinAPI" » Про диски.
Есть новые Нет новых   [134430   +2][b:0][p:0.001]