Назад | Перейти на главную страницу

ZFS: Есть ли способ узнать, где хранятся блоки для файла?

Есть ли в zfs способ узнать, где хранятся блоки для определенного файла? Я хотел бы иметь возможность запрашивать расположение всех блоков файла, включая блоки ditto.

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

(v0.6.0.56-rc8, пул ZFS версии 28, файловая система ZFS версии 5, Ubuntu 11.10)

Это нетривиально и, возможно, выходит за рамки вопроса / ответа SF, поскольку требуемые инструменты недостаточно документированы. Вы, вероятно, можете использовать zdb (1 м) в сочетании с в формате диска doc, чтобы найти нужную информацию. О том, как это сделать, есть в блоге Вот

По существу

использовать ls -i чтобы получить начальный индексный дескриптор.

использовать zdb -ddddd <inodenum> чтобы получить информацию о блоке и декодировать ее с помощью ODF

Ты можешь использовать ls -i чтобы увидеть начальный индексный дескриптор, после этого я бы предложил прочитать опубликованный исходный код, чтобы понять структуры данных на диске. После того, как вы закончите это, я бы предложил написать свои собственные инструменты для чтения необработанного устройства и сборки всей интересующей вас информации о макете блока. Существует небольшой проект ZFS API (libzfs), который предлагает только базовую конфигурацию ZFS например, листинг, создание zpools и т. д.