Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2011-12-30

snapshot

На днях случилось расстройство. Поломалась виртмашина у меня.

Одна из причин, почему я предпочитаю виртмашины реальным конфигам, это возможность делать снапшоты и потом откатываться на них. Очень удобно — хочешь провести эксперимент — делаешь снапшот и хоть обэксперементируйся. Закончил дурью маяться — откатился на точку снапшота и как и не было ничего. Такой типа undo.

В Virtualbox это простая и дешевая операция. Скомандовал, типа
VBoxManage snapshot ags.small take snapone
и у тебя уже есть снапшот.
Чтобы откатиться взад, командуй
VBoxManage snapshot ags.small restore snapone
Чтобы убить снапшот (логичнее было бы не «убить» а «внедрить» - содержимое снапа накатывается на состояние машины)
VBoxManage snapshot ags.small delete snapone
Если его не убить, все изменения так и будут записываться в боковую ветку.

Но есть и ограничения. Например, не всякую операцию можно сделать на включенной машине. Иногда не слишком удобно останавливать-запускать виртмашину только потому, что надо создать или убить снапшот. А еще глючит, зараза, периодически. Причем есть корреляция — только я начну радоваться — вот как ловко у меня эксперимент проходит, раз — и на тебе exception.

Вот и в этот раз. Стал я удалять сделанный ранее снап, и не смог. Было это приблизительно так:
VBoxManage snapshot ags.small restore snapone
fail с не-помню-каким сообщением. Плюс сдохла вторая вирмашина (ядреный модуль упал?)
reboot
VBoxManage snapshot ags.small restore snapone
ok
VBoxManage snapshot ags.small delete snapone
VBoxManage: error: Snapshot operation failed. Error message: Hard disk  has more than one child hard disk
Насколько я понял логику механизма, при восстановлении снапшота виртбокс прислюняет к машине новый пустой дисковый контейнер и удаляет старый. Новый он прислюнил а вот старый убить не смог по неизвестной причине. Глюк, да. После чего к машине оказались присоединены два дополнительных диска снапшотной направленности. Надо как-то лишний удалить.
ls -la /extht1/virtsnap/
-rw------- 1 v v      413696 Dec 29 02:11 {62621749-a694-4a15-ae87-c5751ec85e5f}.vdi
-rw------- 1 v v   827740160 Dec 28 17:20 {f3b9f664-24ce-4ea0-b997-c151cd07cbf3}.vdi

Кто из них лишний, понять невозможно. Но можно предположить, что тот, который больше — старый, который должен был быть убит на этапе restore snapone. После принятия такой гипотезы остается малость:
cp /extst1/virt/ags.small/ags.small.vbox ~/ags.small.vbox.old
nano /extst1/virt/ags.small/ags.small.vbox
^K (cut) line with text <HardDisk uuid="{f3b9f664-24ce-4ea0-b997-c151cd07cbf3}" location="/extht1/virtsnap/{f3b9f664-24ce-4ea0-b997-c151cd07cbf3}.vdi"  ...

VBoxManage snapshot ags.small delete snapone

ok

Типа, получилось. Если бы не получилось, пришлось бы восстановить файл конфига (*.vbox) и попробовать удалить другой лишний файл.

Вот так и живем. Вот тут (nerdbynature.de/s9y/?212) автор добился успеха в аналогичной ситуации без грубой (настоятельно не рекомендуемой) ручной правки конфига. Одними командами управлятору. Да, чуть не забыл, мой рецепт сработал для версии Virtualbox 4.1.8. Вообще, судя по ихним форумам, история типичная. Хотя лично у меня вроде как только второй раз за несколько лет.

Вот так и живем. Что приятно, когда имеешь дело с открытыми решениями, проблему побороть можно так или иначе. А вот что делать, когда, к примеру, браузер MS IE не может пройти аутентификацию на MS IIS с использованием схемы NTLM Auth? Судя по логам, не хватает ему трех попыток, чтобы подобрать правильную версию формата ответа. Вот что делать?
Вопрос актуальный. В одной немалой компании из-за этой проблемы потрачено уже немало нервных клеток.

С наступающим!

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)