SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Падение fb3 при параллельном подключении (firebird, nbackup, mklink)
Падение fb3 при параллельном подключении [сообщение #5541] Tue, 08 October 2024 23:07 Переход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
У меня часто возникает потребность работать с большими базами (20-40 Gb).

Типичная моя работа выглядит так:
1. Делаю рестор базы data.fdb
2. После рестора делаю файловую копию в data-0.fdb
3. Проверяю, делаю модификации. У меня есть эталонная БД с которой можно сравнивать данные и метаданные.
4. Если запорол БД, то вместо повторного рестора, я копирую data-0.fdb в data.fdb


При таком подходе все нормально, кроме того, что копирование занимает много времени и базы занимают много места.
Сейчас я решил сэкономить место таким подходом:

1. Делаю рестор базы data.fdb
2. Блокирую файл базы  
nbackup -L data.fdb -user SYSDBA -password masterkey
3. Создаю жесткую ссылку на файл
mklink /h data-0.fdb data.fdb
В Far делается при помощи Alt+F6
4. Делаю копию файла data.fdb.delta в data-0.fdb.delta
5. Опционально. Архивирую data.fdb.delta в data-0.fdb.delta для возможности легко вернуться в исходное состояние

Таким образом у меня есть "общее тело" базы данных и независимые дельты.
При необходимости вернуть БД в исходное состояние, копируем только дельту, копия базы не занимает дополнительного места, "копий" можно сделать неограниченно много.

Минусы такого подхода:

1. Подключаться только через Classic или SuperClassic
2. Если каким-то образом разблокировали любую из БД, в лучшем случае остальные БД превращаются в тыкву.

Но такой подход в моих условиях очень удобен.

А теперь собственно ошибка.

В IBExpert
1. Подключаюсь к обеим БД одновременно.
2. Просматриваю любую таблицу в первой БД
3. Пытаюсь просмотреть любою таблицу во второй БД и получаю падение сервера с сообщением

Цитата:
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
connection shutdown.
  ------------------------------------------------------------ -------------------------------------------------
SQLCODE: -902
SQLSTATE: 08003
GDSCODE: 335544856
Connection will be closed immediately.
В firebird.log пусто

Такое поведение повторяется всегда сразу после рестора. Может повторяться еще несколько раз, потом прекращается. И все работает стабильно
Если подключаться/отключаться к БД по очереди ошибки не возникает.

Можно повторить на любой БД хоть employee.fdb

3.0.11 x64 Win10

[Обновления: Tue, 08 October 2024 23:35]

Известить модератора

Re: Падение fb3 при параллельном подключении [сообщение #5543 является ответом на сообщение #5541] Wed, 09 October 2024 11:16 Переход к предыдущему сообщениюПереход к следующему сообщению
neozx1984 в настоящее время не в онлайне  neozx1984
Сообщений: 27
Зарегистрирован: June 2022
Junior Member
Вы работаете с базами как с разными, но основной файл БД один. В этом проблема т.к. имя файла блокировок генерируется из него.

Можно использовать файловую систему с поддержкой файловых снапшотов или систему управление томами со снапшотами (LVM или СХД).
Re: Падение fb3 при параллельном подключении [сообщение #5544 является ответом на сообщение #5543] Wed, 09 October 2024 11:47 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
Физически, да, один. Но не уверен, что firebird об этом знает.
Если бы проблема была такая, как описываете, то вероятно, не работало бы всегда?
А сейчас после нескольких первоначальных падений все работает стабильно
Re: Падение fb3 при параллельном подключении [сообщение #5545 является ответом на сообщение #5544] Wed, 09 October 2024 12:27 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 166
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
Если один человек чего сделал, то другой завсегда сломать может (кузнец из комедии "Формула любви").
Сразу после восстановления все страницы базы помечены как "потенциально грязные".
А значит любая операция может "собрать" несуществующий мусор и немного поменять страниц(у/ы) в дельте.
Если же тратить время на то, чтобы "собрать" мусор сразу после восстановления, то это время точно так же можно потратить на упаковку быстрым компрессором (zstd).
Re: Падение fb3 при параллельном подключении [сообщение #5546 является ответом на сообщение #5545] Wed, 09 October 2024 15:04 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
basid писал(а) Wed, 09 October 2024 09:27
Сразу после восстановления все страницы базы помечены как "потенциально грязные"
Было у меня такое подозрение.
Только чего, если собирают "потенциальный мусор" используют блокировки с одинаковым именем?

Цитата:
и немного поменять страниц(у/ы) в дельте.
Но дельты у меня это физически разные файлы. Здесь нет проблемы

[Обновления: Wed, 09 October 2024 15:25]

Известить модератора

Re: Падение fb3 при параллельном подключении [сообщение #5547 является ответом на сообщение #5546] Wed, 09 October 2024 16:58 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 166
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
Пока(?) win-сборки "не раскрывают" ссылки на файлы и полагаются на механизмы разделения доступа винды. В супере будет облом, а в классике будет(?) пакость.
А блокировки с одинаковым именем формируются не из (полного) имени (основного) файла базы, а из его идентификатора в файловой системы. Идентификатор этот (гарантированно) одинаков для всех "жёстких" ссылок.
И если "разделить" доступ к (основному) файлу базы вы можете, то сделать разное содержание rdb$backup_history в разных дельтах - не получится.
Поэтому "химичить" с поочерёдно-"монопольным" доступом вы ещё можете, а с "одновременно-разделяемым" - уже нет.

P.S.
Я, конечно, могу ошибаться и Влад может "обматерить" вас совсем по другому.
Или вообще "прикрыть лавочку" - чтобы было как в POSIX или около того.
Re: Падение fb3 при параллельном подключении [сообщение #5548 является ответом на сообщение #5547] Wed, 09 October 2024 23:42 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
basid писал(а) Wed, 09 October 2024 13:58
В супере будет облом, а в классике будет(?) пакость
Потому и подключаюсь не через супер Smile
Меня на текущий момент устраивает такой полулегальный вид доступа, это все происходит не на живой базе и не на рабочем сервере.
Но все же хотелось бы хоть какой-то определенности.
Хотя я и понимаю, что такой способ - дорога в пропасть, и если я делаю так в разработке, то кто-то другой захочет и в проде Smile
На сетевую шару ведь регулярно хотят записать файл

[Обновления: Wed, 09 October 2024 23:43]

Известить модератора

Re: Падение fb3 при параллельном подключении [сообщение #5549 является ответом на сообщение #5541] Thu, 10 October 2024 00:43 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
Я не хочу гадать - в чём смысл манипуляций с хардлинками и что конкретно происходит.
Ибо в опубликованном "алгоритме" я вижу мало смысла и ещё меньше деталей.
Пока что понятно только то, что делается то, что однозначно не допустимо.
К Firebird претензия единственная - он не проверяет, является ли указанный файл БД хардлинком.

PS Василий, как обычно, полубредит - особенно про "потенциально грязные" страницы:)
Но про хардлинки более-менее правильно.
Точнее не могу сказать, ибо - см. выше.
Re: Падение fb3 при параллельном подключении [сообщение #5551 является ответом на сообщение #5549] Thu, 10 October 2024 01:33 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
Цель манипуляции с хардлинками - экономия места на диске при разработке, более быстрый возврат к старой версии БД без необходимости восстанавливать из архива.
Блокировать хардлинки вообще идея так себе, криминала при монопольном использовании не вижу. Другое дело блокировать параллельное использование хардлинков, тут скорее всего надо
Re: Падение fb3 при параллельном подключении [сообщение #5552 является ответом на сообщение #5551] Thu, 10 October 2024 08:08 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 166
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
Помещаете исходную базу на VHD(X) и делаете её read-only.
Переводите виртуальные том и диск в RO-режим и создаёте два-три-много разностных виртуальных диска на базе исходного vhd(x)-файла.
Чтобы не тратить буквы - монтируется всё по разным подкаталогам.
Будёт всё как вы хотите, но совершенно легально и без ошибок.
Re: Падение fb3 при параллельном подключении [сообщение #5553 является ответом на сообщение #5551] Thu, 10 October 2024 08:22 Переход к предыдущему сообщениюПереход к следующему сообщению
inoremap в настоящее время не в онлайне  inoremap
Сообщений: 12
Зарегистрирован: August 2023
Junior Member
shavluk писал(а) Thu, 10 October 2024 03:33
Цель манипуляции с хардлинками - экономия места на диске при разработке, более быстрый возврат к старой версии БД
В недавнем обновлении win11 разрешили файловую систему ReFS на клиентских редакциях ОС, вместо hardlink можно reflink использовать.
Re: Падение fb3 при параллельном подключении [сообщение #5554 является ответом на сообщение #5553] Thu, 10 October 2024 09:47 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 166
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
Не можно. Любые варианты ссылок не отменяют того факта, что доступ идёт к одному и тому же файлу.
Рабочий вариант - разместить файл исходной базы на виртуальном диске и (для только что восстановленной базы) выполнить первичную сборку мусора.
Потом этот диск надо отмонтировать, создать на основе его файла два (или больше) разностных виртуальных диска и работать с базами на этих (разностных) виртуальных дисках.
Если не выполнять массивных вставок/обновлений и не создавать гигантских временных блобов, то изменения будут небольшими и не займут много места.

[Обновления: Thu, 10 October 2024 09:48]

Известить модератора

Re: Падение fb3 при параллельном подключении [сообщение #5556 является ответом на сообщение #5551] Thu, 10 October 2024 10:15 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
shavluk писал(а) Thu, 10 October 2024 01:33
Цель манипуляции с хардлинками - экономия места на диске при разработке, более быстрый возврат к старой версии БД без необходимости восстанавливать из архива.
Про экономию места хотелось бы подробнее, ибо именно тут зарыто то самое - однозначно недопустимое.
А для возврата к старой версии не нужны хардлинки.
Re: Падение fb3 при параллельном подключении [сообщение #5557 является ответом на сообщение #5556] Thu, 10 October 2024 11:56 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
hvlad писал(а) Thu, 10 October 2024 07:15
Про экономию места хотелось бы подробнее
Повторю еще раз. Мне приходится работать с несколькими версиями одной большой базы (20-40 GB): одна версия сразу после рестора и вторая после некоторых модификаций на этапе разработки.
Я после сравниваю их между собой: до изменний и после. Или бьістрый возврат к начальному состоянию.
Раньше я делал файловые копии спазу после рестора, но копирование происходит не быстро и места занимает много (таких баз не одна).
Сейчас большое "тело базы" общее, а маленькие дельты персональные.
В результате вместо хранения двух почти идентичных баз я храню основную БД и дельту для начального состояния.
Основное назначение - возможность сравнивать разные версии одной БД
Re: Падение fb3 при параллельном подключении [сообщение #5558 является ответом на сообщение #5557] Thu, 10 October 2024 12:38 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
shavluk писал(а) Thu, 10 October 2024 11:56
hvlad писал(а) Thu, 10 October 2024 07:15
Про экономию места хотелось бы подробнее
Повторю еще раз. Мне приходится работать с несколькими версиями одной большой базы (20-40 GB): одна версия сразу после рестора и вторая после некоторых модификаций на этапе разработки.
Я после сравниваю их между собой: до изменний и после. Или бьістрый возврат к начальному состоянию.
Раньше я делал файловые копии спазу после рестора, но копирование происходит не быстро и места занимает много (таких баз не одна).
Сейчас большое "тело базы" общее, а маленькие дельты персональные.
В результате вместо хранения двух почти идентичных баз я храню основную БД и дельту для начального состояния.
Основное назначение - возможность сравнивать разные версии одной БД
И это всё ещё одна БД.
И тут всё ещё не нужны никакие хардлинки.

Если "идея" состоит в том, что оригинальная БД работает с оригинальной дельтой,
а хардлинк на БД "работает" с новой дельтой - то это не возможно. Никак.

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

PS 40ГБ это точно "большая" БД ? Я бы понял, если бы речь шла о 400ГБ...
Re: Падение fb3 при параллельном подключении [сообщение #5559 является ответом на сообщение #5558] Thu, 10 October 2024 13:16 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
hvlad писал(а) Thu, 10 October 2024 09:38
Если "идея" состоит в том, что оригинальная БД работает с оригинальной дельтой,
а хардлинк на БД "работает" с новой дельтой - то это не возможно. Никак.
Да, идея состоит как раз в этом.

Цитата:
PS 40ГБ это точно "большая" БД ? Я бы понял, если бы речь шла о 400ГБ...
Ну у меня таких БД много
Re: Падение fb3 при параллельном подключении [сообщение #5560 является ответом на сообщение #5559] Thu, 10 October 2024 14:00 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
shavluk писал(а) Thu, 10 October 2024 13:16
hvlad писал(а) Thu, 10 October 2024 09:38
Если "идея" состоит в том, что оригинальная БД работает с оригинальной дельтой,
а хардлинк на БД "работает" с новой дельтой - то это не возможно. Никак.
Да, идея состоит как раз в этом.
В принципе, можно доработать движок так, чтобы было возможно работать с такими клонами БД.
Но я не уверен, что такая фича будет широко востребована.
Есс-но, хардлинки тут по-прежнему не нужны.
Кроме того, по мере роста изменений в дельте, может начать падать производительность IO.
Это предварительная оценка, не факт.

shavluk
Цитата:
PS 40ГБ это точно "большая" БД ? Я бы понял, если бы речь шла о 400ГБ...
Ну у меня таких БД много
Не думаю, что нужно работать с десятками таких БД одновременно.
Или даже в течение одного дня.
А 100 неактивных БД - мало кого волнуют, независимо от их размера Wink
Re: Падение fb3 при параллельном подключении [сообщение #5561 является ответом на сообщение #5560] Thu, 10 October 2024 14:03 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
Мой диск 100 таких БД или 50 очень волнует ))

Потенциально такая фича позволит смотреть срез БД на любой момент времени без необходимости восстанавливать бекап или делать файловую копию.
Сейчас мне нужно сделать копию файла, который и так неизменен.
Re: Падение fb3 при параллельном подключении [сообщение #5562 является ответом на сообщение #5561] Thu, 10 October 2024 14:05 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
По сути сейчас и так все работает (ну почти), хотя иногда падает Smile
Re: Падение fb3 при параллельном подключении [сообщение #5563 является ответом на сообщение #5561] Thu, 10 October 2024 15:12 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
shavluk писал(а) Thu, 10 October 2024 13:03
Мой диск 100 таких БД или 50 очень волнует ))
Если это диск для работы, может, стоит коллекцию порнушки стереть?..

4-8ТБ диски сегодня мейнстрим. А ещё их можно объединить в RAID.
Re: Падение fb3 при параллельном подключении [сообщение #5564 является ответом на сообщение #5563] Thu, 10 October 2024 15:24 Переход к предыдущему сообщениюПереход к следующему сообщению
pastor в настоящее время не в онлайне  pastor
Сообщений: 83
Зарегистрирован: June 2022
Географическое положение: Калуга
Member
у меня совсем жОский диск с зипами клиентских баз (делается на клиенте nbackup, жмется 7z, забирается)
и M2 - для работы с ними.
копирую FAR ом из архива в папку - там уже и  актуальные для баз приложения и настройки.

10 гиг - меньше минуты
Re: Падение fb3 при параллельном подключении [сообщение #5597 является ответом на сообщение #5564] Mon, 21 October 2024 10:48 Переход к предыдущему сообщениюПереход к следующему сообщению
fraks в настоящее время не в онлайне  fraks
Сообщений: 140
Зарегистрирован: June 2022
Географическое положение: Новосибирск
Senior Member
Если я правильно понял задачу - делается рестор из бэкапа, отресторенную базу копируем и на ней изгаляемся.
Если поломали - заново берем и копируем отресторенную.
Проблема в том что скорпировать 20-40Гб дело не быстрое.

Может быть рассмотреть вариант - делать rsync с отресторенной на поломанную копию, возможно в этом случае копирование пройдет быстрее.
Re: Падение fb3 при параллельном подключении [сообщение #5598 является ответом на сообщение #5597] Mon, 21 October 2024 11:43 Переход к предыдущему сообщениюПереход к следующему сообщению
shavluk в настоящее время не в онлайне  shavluk
Сообщений: 82
Зарегистрирован: June 2022
Географическое положение: Одеса
Member
Задача, да, такая. Например, оптимизация скорости выполнения. Тестирую различные варианты процедур, индексов.
И намного удобнее, когда можно мгновенно откатить изменения БД. Такая себе "транзакция 2 порядка".
При использовании различных дельт к одной БД можно проверить несколько решений одновременно, не держа много копий базы.
Как таковой проблемы почти и нет. При моем способе все работает, но на свежеотрестореной валится, затем "самоисправляется".
Действительно, 20-40 гб туда-сюда копировать мне не быстро. Вариант с хардлинками всем удобен и быстр. Но валится ))
По большому счету, различий для сервера не должно быть так и много, "тело базы" неизменно, туда ничего не пишется. И разницы, кроме занимаемого места, кажется, что почти и нет
Re: Падение fb3 при параллельном подключении [сообщение #5599 является ответом на сообщение #5598] Mon, 21 October 2024 12:03 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
Ещё раз - никакие извраты с хардлинками не нужны, более того - вредны.
Не нужно работать с несколькими версиями БД одновременно - это необходимо и достаточно.
Поработал с копией, остановился. Восстановил дельту - вперёд к новым экспериментам.
Т.е. достаточно иметь базовую копию БД и начальную дельту к ней.
Re: Падение fb3 при параллельном подключении [сообщение #5600 является ответом на сообщение #5598] Mon, 21 October 2024 14:50 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 166
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
shavluk писал(а) Mon, 21 October 2024 16:43
Вариант с хардлинками всем удобен и быстр. Но валится ))
... и работает чисто случайно.
Не поленитесь и, всё-таки, сделайте один виртуальный диск для исходной базы и пачку разностных для отдельных копий.
Всё будет работать штатно и не развалится, когда windows-сборка Firebird начнёт работать с уникальными идентификаторами файла чуть больше, чем это делается сейчас.
Re: Падение fb3 при параллельном подключении [сообщение #5601 является ответом на сообщение #5600] Tue, 22 October 2024 00:58 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
А это "больше, чем сейчас" вообще возможно? В текущем коде этот идентификатор уже достаётся тремя различными способами. Каким будет четвёртый?..
Re: Падение fb3 при параллельном подключении [сообщение #5602 является ответом на сообщение #5601] Tue, 22 October 2024 05:16 Переход к предыдущему сообщениюПереход к следующему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 166
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
Я знаю о двух (LegacyDatabaseFileId и "корректный вариант").
А что ещё имеется?
Re: Падение fb3 при параллельном подключении [сообщение #5604 является ответом на сообщение #5602] Tue, 22 October 2024 14:08 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
В текущем коде имеется:

1. GetFinalPathName + выколупывание GUID тома из полученной строки с последующим получением идентификатора файла любым из следующих методов.
2. GetFileInformationEx для получения 64-х разрядного серийного номера тома и 128-ми битного идентификатора файла.
3. GetFileInformation для получения 32-х разрядного серийного номера тома и 64-х битного идентификатора файла.

То есть в зависимости от текущей операционки имя лок-файла и прочие IPC объекты могут иметь любой из трёх (или четырёх если звёзды не сойдутся) вариантов.
Re: Падение fb3 при параллельном подключении [сообщение #5605 является ответом на сообщение #5600] Tue, 22 October 2024 14:43 Переход к предыдущему сообщениюПереход к следующему сообщению
hvlad в настоящее время не в онлайне  hvlad
Сообщений: 364
Зарегистрирован: August 2022
Senior Member
basid писал(а) Mon, 21 October 2024 14:50
Всё будет работать штатно и не развалится, когда windows-сборка Firebird начнёт работать с уникальными идентификаторами файла чуть больше, чем это делается сейчас.
Если бы ты понимал в чём суть...
Давай, расскажи - причём тут ID файла и что именно Firebird должен делать "чуть больше" ?

PS С Сибиряковым у вас прекрасный дуэт получается, можете продолжать друг с другом обсуждать сферы и коней в них
Re: Падение fb3 при параллельном подключении [сообщение #5606 является ответом на сообщение #5604] Tue, 22 October 2024 15:03 Переход к предыдущему сообщению
basid в настоящее время не в онлайне  basid
Сообщений: 166
Зарегистрирован: June 2022
Географическое положение: Asia/Irkutsk
Senior Member
SD писал(а) Tue, 22 October 2024 19:08
1. GetFinalPathName + выколупывание GUID тома из полученной строки с последующим получением идентификатора файла любым из следующих методов.
2. GetFileInformationEx для получения 64-х разрядного серийного номера тома и 128-ми битного идентификатора файла.
3. GetFileInformation для получения 32-х разрядного серийного номера тома и 64-х битного идентификатора файла.
Вариант три, насколько я понимаю, и есть LegacyFileID. Ломается, например, на снимках файловых систем, создаваемых хранилищем. Для воспроизведения бага использовались виртуальные диски на копиях vhd-файла.
"Выколупывать GUID тома" требуется для получение гарантированно уникального (в данном запуске ОС) идентификатора тома. Насколько я понимаю, представляет часть "корректного варианта".
Предыдущая тема: Вышел Firebird 5 Release Candidate!
Следующая тема: Проверялка базы и русские буквы в пути
Переход к форуму:
  


Текущее время: Sat Dec 21 19:57:32 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01266 секунд