Поиск местоположения файлов (Ceph)

Используя файловую систему, можно найти физическое местоположение файлов, используя filefrag, hdparm или Fibmap.

Что насчет Сефа? Можно ли узнать, где хранится файл? (какое OSD, какой диск, где физически на диске).

Допустим, у меня есть папка с 5 файлами в нем. Я хотел бы создать скрипт, который выводит файл, в котором хранится следующая информация: 1. Сколько блоков разбивается на каждый файл, 2. Каждый блок -> OSD, 3. Каждый блок -> Какой диск, 4. Где (сектор) на диске хранится каждый блок.

Буду признателен за любой вклад.

1 ответ

Я не уверен, что это то, что вы ищете, но вы можете узнать НЕКОТОРЫЕ сведения о местоположении объекта в кластере хранения объектов Ceph:

http://docs.ceph.com/docs/jewel/rados/operations/monitoring-osd-pg/

Например, если у вас есть пул "pool-1" и вы хотите узнать, где хранится ваш объект "testobject-1", вы можете получить эту информацию с помощью этой команды (из вашего mon-узла):

 sudo ceph osd map pool-1 testobject-1    

Что даст вам такой результат:

osdmap e58 pool 'pool-1' (7) object 'testobject-1' -> pg 7.74dc35e2 (7.62) -> up
 ([1,0,2], p1) acting ([1,0,2], p1)

Это говорит о том, что ваш объект находится в группе размещения 7.62 на узлах osd 1, 0 и 2 / основной раздел (p1).

Теперь вы можете углубиться в детали, например, на своем узле osd.0, переключиться на пользователя root и перейти в /var/lib/ceph/osd/ceph-0 -> это место, где хранятся фактические блоки. Если вы сделаете "ls", вы увидите это:

root@osd-1:/var/lib/ceph/osd/ceph-0# ls
block ceph_fsid fsid keyring ready type whoami

Это все, что я мог узнать, и я не знаю, как вы можете "прочитать" содержимое блока.

Я надеюсь, что это может помочь вам хотя бы немного....

Другие вопросы по тегам