NTFS: VCN в Index Entry атрибута $INDEX_ROOT
От: Cooky  
Дата: 10.01.16 13:38
Оценка:
Привет всем!

Вопрос о VCN в Index Entry атрибута $INDEX_ROOT на NTFS дисках с кластерами 64 Кb. В некоторых редких случаях VCN оказывается вне диапазона, указанного в атрибуте $INDEX_ALLOCATION. Например, в $INDEX_ALLOCATION указан диапазон VCN 0-2, а записи Index Entry ссылаются на VCN 0x30 и 0x110. Проблема, похоже, встречается только на дисках с кластером 64 Kb. В Интернете нашел только одно упоминание (http://forum.ntfs.com/discussion/1113/invalid-vcn-number-at-last-index-entry-64k-cluster-size), оставленное без ответов.

Ситуацию удалось воспроизвести. На первой картинке показан атрибут $INDEX_ROOT, в котором видно номера двух VCN дополнительных блоков индексов, на которые ссылаются записи Index Entry из $INDEX_ROOT: 0x30 и 0x110.



Но в атрибуте $INDEX_ALLOCATION того же каталога видим, что диапазон VCN только 0-2.



Не знаете ли, как интерпретировать такие номера VCN?

Спасибо.
Re: NTFS: VCN в Index Entry атрибута $INDEX_ROOT
От: MShura  
Дата: 11.01.16 20:33
Оценка:
Размер буффера, номерами которых индексируется ссылки, указан в аттрибуте 0x90.
Полагаю, что у вас это будет 512 байт, а не 64К.
Выложите сырые данные MFT записи (чтобы видеть 0x90) и $INDEX_ALLOCATION (думаю не обязательно)
Re[2]: NTFS: VCN в Index Entry атрибута $INDEX_ROOT
От: Cooky  
Дата: 12.01.16 07:16
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Размер буффера, номерами которых индексируется ссылки, указан в аттрибуте 0x90.

MS>Полагаю, что у вас это будет 512 байт, а не 64К.
MS>Выложите сырые данные MFT записи (чтобы видеть 0x90) и $INDEX_ALLOCATION (думаю не обязательно)

Спасибо. Вот MFT запись целиком:

Re[3]: NTFS: VCN в Index Entry атрибута $INDEX_ROOT
От: MShura  
Дата: 12.01.16 10:42
Оценка:
MS>>Размер буффера, номерами которых индексируется ссылки, указан в аттрибуте 0x90.
MS>>Полагаю, что у вас это будет 512 байт, а не 64К.
MS>>Выложите сырые данные MFT записи (чтобы видеть 0x90) и $INDEX_ALLOCATION (думаю не обязательно)

C>Спасибо. Вот MFT запись целиком:


В 0x90 прописано, что размер буффера-индекса (вкратце индекс) 0x1000.
Если размер индекса меньше кластара файловой системы, то нумерация идет в блоках 512 байт.
Собственно число 8 в 0x90 (не могу указать абсолютный адрес) и есть факт того, что в одном индексе 8 блоков

В общем индексация в данном случае идет по блокам 512 байт
Сам 0xa0 занимает 0x30000 байт, что есть 0x180 блоков по 512 байт

Итого ссылка 0x30 — прочитать индекс 0x1000 байт по смещению 0x30 * 0x200 = 0x6000 от начала 0xa0
ссылка 0x110 — прочитать индекс 0x1000 байт по смещению 0x110 * 0x200 = 0x22000 от начала 0xa0


P.S.
По-моему любой редактор, который показывает нормально hex, удобней приведенной программы.
Re[4]: NTFS: VCN в Index Entry атрибута $INDEX_ROOT
От: Cooky  
Дата: 12.01.16 13:53
Оценка:
Здравствуйте, MShura, Вы писали:

MS>>>Размер буффера, номерами которых индексируется ссылки, указан в аттрибуте 0x90.

MS>>>Полагаю, что у вас это будет 512 байт, а не 64К.
MS>>>Выложите сырые данные MFT записи (чтобы видеть 0x90) и $INDEX_ALLOCATION (думаю не обязательно)

C>>Спасибо. Вот MFT запись целиком:


MS>В 0x90 прописано, что размер буффера-индекса (вкратце индекс) 0x1000.

MS>Если размер индекса меньше кластара файловой системы, то нумерация идет в блоках 512 байт.
MS>Собственно число 8 в 0x90 (не могу указать абсолютный адрес) и есть факт того, что в одном индексе 8 блоков

MS>В общем индексация в данном случае идет по блокам 512 байт

MS>Сам 0xa0 занимает 0x30000 байт, что есть 0x180 блоков по 512 байт

MS>Итого ссылка 0x30 — прочитать индекс 0x1000 байт по смещению 0x30 * 0x200 = 0x6000 от начала 0xa0

MS>ссылка 0x110 — прочитать индекс 0x1000 байт по смещению 0x110 * 0x200 = 0x22000 от начала 0xa0

Спасибо! Попробую.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.