CW
Да, но рисковано
Мне очень нужна помощь, данные за пол года исчезли.
Александр
Можно попытаться откатиться на ту транзакцию, которй это было сделано. Вопрос, сколько уже было записано с момента удаления. Если "понял и тут же выключил", то шансы есть
Александр
Какой объем пула?
CW
пул 4 ТБ
Александр
Так. Есть возможность одолжить диск на 6 тб?
Александр
Сколько данных было записано с момента, когда был удален снапшот? В каком городе физически все происходит?
CW
К сожалению, все сложнее. У меня есть два пула, в которых по глупости удалены были данные. Один da0, другой daid-z из трех дисков также по 4 ТБ. Оба выдают разные ошибки. Если какой-то нельзя восстановить, то можно его и использовать.
Александр
Сколько данных было записано с момента, как произошло удаление?
Александр
Откуда взялись ошибки?
Ivan
CW: На raidz - много данных было записано - потому что от стресса запустил rsync чтобы вернуть, но данные оказались полугодовой давности, и я через два часа остановил. , на одиночном da0 было только удаление датасета, потом создание его заново с таким же именем и создание еще одного + пару лишних движений. В остальном я держал пулы в экспорте чтобы больше не расшатывать метаданные. текущее состояние: sudo zpool import Пароль:    pool: verbatim2      id: 8390888093105881759   state: FAULTED status: One or more devices contains corrupted data. action: The pool cannot be imported due to damaged devices or data.    see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-5E config:         verbatim2   FAULTED  corrupted data           da0       FAULTED  corrupted data    pool: dungeon      id: 335772131032671838   state: ONLINE action: The pool can be imported using its name or numeric identifier. config:         dungeon     ONLINE           raidz1-0  ONLINE             ada1    ONLINE             ada2    ONLINE             ada3    ONLINE что касается dungeon - я могу сделать zdb -e dungeon | grep '\--1d' пока он в экспорте и увидеть записи об удалении нужных снапшотов. по поводу verbatim2 - могу только импортировать в рид онли в момент после удаления снапшотов: sudo zpool import -o readonly=on -F -T 1838182 verbatim2 и сделать sudo zpool history -il verbatim2 , а до удаления не могу
Ivan
@gmelikov @neurox может остальных ботов удалить ?
CW
CW: На raidz - много данных было записано - потому что от стресса запустил rsync чтобы вернуть, но данные оказались полугодовой давности, и я через два часа остановил. , на одиночном da0 было только удаление датасета, потом создание его заново с таким же именем и создание еще одного + пару лишних движений. В остальном я держал пулы в экспорте чтобы больше не расшатывать метаданные. текущее состояние: sudo zpool import Пароль:    pool: verbatim2      id: 8390888093105881759   state: FAULTED status: One or more devices contains corrupted data. action: The pool cannot be imported due to damaged devices or data.    see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-5E config:         verbatim2   FAULTED  corrupted data           da0       FAULTED  corrupted data    pool: dungeon      id: 335772131032671838   state: ONLINE action: The pool can be imported using its name or numeric identifier. config:         dungeon     ONLINE           raidz1-0  ONLINE             ada1    ONLINE             ada2    ONLINE             ada3    ONLINE что касается dungeon - я могу сделать zdb -e dungeon | grep '\--1d' пока он в экспорте и увидеть записи об удалении нужных снапшотов. по поводу verbatim2 - могу только импортировать в рид онли в момент после удаления снапшотов: sudo zpool import -o readonly=on -F -T 1838182 verbatim2 и сделать sudo zpool history -il verbatim2 , а до удаления не могу
Спасибо что вернули моё сообщение.
CW
Пожалуйста, максимально четко и связно изложите ВСЮ ситуацию, а не фрагменты.
Дополню: состояние verbatim2 в таком состоянии, потому что сделал один раз sudo zpool import -o -F -T 1838183 verbatim2 без рид онли. Он предложил сделать clear или replace, я ничего из этого не сделал. Скажите чествно, какие у меня шансы?
CW
raidz 99% мертв
Из-за того что был rsync ?
Александр
Из-за того что был rsync ?
Да. Вообще худшее, что можно делать при аварии- это делать что-нибудь
CW
Да. Вообще худшее, что можно делать при аварии- это делать что-нибудь
Да, теперь я понимаю это. А что можно сделать с пулом da0?
Александр
вы как-то умудрились, по-моему, убить обоих
Александр
Можно попытаться откатить dungeon в r/o (разумеется!) в момент до удаления, но вообще, кажется, тут пора форматировать диски
Александр
Как это можно сделать? откатить в момент удаления.
найти номер транзакции и через -T, если эта транзакция еще осталась
Александр
Но вообще правило: что-то странной с ФС - выключил машину, нашел место, куда скопировать странные данные, и уже с копией извращаешься как хочешь
CW
найти номер транзакции и через -T, если эта транзакция еще осталась
А как его найти? zdb -ul {имя диска} показывает только данные yt раньше, чем за последний день (видимо из-за rsync), а если ориентироваться на zdb -e dungeon | grep '\--1d', то выдаёт ошибку: sudo zpool import -o readonly=on -F -T 6027434 dungeon cannot import 'dungeon': one or more devices is currently unavailable
Александр
Ну, кажется, все.
CW
Понимаю. А есть ли надежда на zfs_recover и подобные сторонние инструменты восстановления ?
Александр
Они не совершают чудес и не получают данных из мирового эфира. Можно попробовать, но это ВСЕ обвязка вокруг zdb и zpool import -T
Vladislav
CW: На raidz - много данных было записано - потому что от стресса запустил rsync чтобы вернуть, но данные оказались полугодовой давности, и я через два часа остановил. , на одиночном da0 было только удаление датасета, потом создание его заново с таким же именем и создание еще одного + пару лишних движений. В остальном я держал пулы в экспорте чтобы больше не расшатывать метаданные. текущее состояние: sudo zpool import Пароль:    pool: verbatim2      id: 8390888093105881759   state: FAULTED status: One or more devices contains corrupted data. action: The pool cannot be imported due to damaged devices or data.    see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-5E config:         verbatim2   FAULTED  corrupted data           da0       FAULTED  corrupted data    pool: dungeon      id: 335772131032671838   state: ONLINE action: The pool can be imported using its name or numeric identifier. config:         dungeon     ONLINE           raidz1-0  ONLINE             ada1    ONLINE             ada2    ONLINE             ada3    ONLINE что касается dungeon - я могу сделать zdb -e dungeon | grep '\--1d' пока он в экспорте и увидеть записи об удалении нужных снапшотов. по поводу verbatim2 - могу только импортировать в рид онли в момент после удаления снапшотов: sudo zpool import -o readonly=on -F -T 1838182 verbatim2 и сделать sudo zpool history -il verbatim2 , а до удаления не могу
Вопрос, а Вы хотели стереть данные или уничтожить?
Vladislav
@clockwork6400
Vladislav
Да
CW
Это было случайность из-за стрессовой ситуации.
George
Понимаю. А есть ли надежда на zfs_recover и подобные сторонние инструменты восстановления ?
восстановление после деструктивных действий это увы всегда лотерея. Можете ещё посмотреть на услуги https://www.klennet.com/zfs-recovery/ или https://klarasystems.com/zfs/
Vladislav
Если ситуация стрессовая, то вообще ничего делать не надо пока не успокоишься, это тебе не mdadm, где сделал --force и потом ФС через fsck проверяешь
Александр
Это было случайность из-за стрессовой ситуации.
Спокойнее надо быть. Если что-то непонятное происходит - то бумажку, план на бумажке, вслух почитал, уверен - делай
Александр
Это не шутка
CW
Если сделать sudo zpool import -o readonly=on -F -T 1838183 verbatim2 то я вижу zfs list | grep verbatim2 verbatim2 1.66T 1.85T 96K none verbatim2/seagate2 96K 1.85T 96K none то есть там 1.66T чего-то есть, жаль достать нельзя, потому что оно не монтируется автоматически.
Vladislav
Vladislav
Что-что от 2016 года
CW
Мне за тебя загуглить?
Я не понимаю, что ты хотел донести.
Vladislav
Vladislav
Vladislav
CW
sudo mount -t zfs -o zfsutil verbatim2/seagate2 /mnt df -h verbatim2/seagate2 1,9T 96K 1,9T 0% /mnt ls -l /mnt/ total 0
CW
Спасибо, конечно, но это мне не помогло.
Vladislav
Я даже не знаю, то ли ты прикалываешься, то ли действительно не хочешь читать доку, но не суть, раз workaround от 2014 года не помог, то действительно, зачем следовать в доку
Vladislav
Vladislav
Vladislav
Vladislav
Vladislav
Я не прикалываюсь
Ну открой ты доку, почитай как задавать mountpoint при zfs import
CW
-R /mnt? но это ничего не даёт
Vladislav
Чем именно ты читаешь https://openzfs.github.io/openzfs-docs/man/master/8/zpool-import.8.html ?
Vladislav
sudo mount -t zfs -o zfsutil verbatim2/seagate2 /mnt df -h verbatim2/seagate2 1,9T 96K 1,9T 0% /mnt ls -l /mnt/ total 0
Перебирай чекпоинты или учись делать бэкапы
CW
Они не совершают чудес и не получают данных из мирового эфира. Можно попробовать, но это ВСЕ обвязка вокруг zdb и zpool import -T
Говорят что Klennet ZFS Recovery написано на дотнете, поэтому ZDB там быть не может. Код обфусцирован, так что неизвестно, какие алгоритмы конкретно. 🤔
CW
Но как-то же это работает
CW
Иначе зачем брать 400$ за лицензию + обновления, если там те же алгоритмы..
George
Но как-то же это работает
автор где-то описывал, там сканится вообще весь диск на ошмётки TXG, и по ним можно аж разные версии изменений тащить, конечно же без гарантий что TXG будет целой
CW
Да хоть трижды обфусцируй код, есть журнал, из него можно читать.
Так оно не импортирует пул, чтобы в журнал что-либо писалось.
George
Скорее всего, ошметки txg ведут к ошметкам данныъ
всё так, но многие объекты то давно существуют, так что что-то собрать старое да получится
Александр
всё так, но многие объекты то давно существуют, так что что-то собрать старое да получится
Так там поверх что-то записано. Т.е. для текстовых конфигов может проскочить с околонулевыми шансами, для данных почти гарантированно труп
Khajiit
Господа, а чем можно подергать zfs из python не упарываясь в парсинг консольных вызовов? python3-libzfs представляет собой ядерную смесь процедурщины и ооп с итераторами везде где только можно, и разобраться с этим через REPL практически нереально
Hennadii
Господа, а чем можно подергать zfs из python не упарываясь в парсинг консольных вызовов? python3-libzfs представляет собой ядерную смесь процедурщины и ооп с итераторами везде где только можно, и разобраться с этим через REPL практически нереально
Господа, а чем можно подергать zfs из python не упарываясь в парсинг консольных вызовов? там же все достаточно просто, например, у команды zfs list ест ключи -H и -p чтобы было парсить не сложно и -o чтобы указать в выводе только те поля, которые нужны, так что весь парсинг получается достаточно простым, с помощью .splitlines() и .split('\t') вызов внешних процессов - тоже вроде бы ничего сложного нет, с помощью функции run из встроенного модуля subprocess. чтобы еще больше сделать удобным вызов внешних процессов - я для себя сделал такую вспомогательную функцию: def run(*args, **kwargs): return subprocess.run(args, capture_output=kwargs.get('capture_output', True), check=kwargs.get('check', True), encoding='utf-8', errors='strict')
Khajiit
Спасибо Ну, основная проблема с парсингом консоли это не столько распарсить правильные значения, сколько правильно обработать неправильные. И, обычно, это то место, где красивая функция на десяток строк начинает превращаться в лапшу
Khajiit
Впрочем, мне удалось получить желаемое от обертки libzfs
Ilya
Был у меня на zpool из одного mirror vdev на 2 дисках. По чудовищной случайности был запущен рестор винды из бэкапа на неправильный диск (два раза), в итоге начала обоих дисков были перезаписаны примерно по 250гб (из 2,7тб) идентичным набором данных. Есть какой-то шанс вытащить оттуда хоть какие-то данные, или можно не заморачиваться, и просто пересоздать пул? Данные не так, чтобы критичные, что-то где-то продублировано на других машинах, что-то являлось асинхронной копией живых данных и т.п. Все данные не корп, просто персональное барахло: музыка, фильмы