Есть ли в 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 и т. д.