четверг, 2 июня 2016 г.

Хороший, плохой, злой

Дикий-дикий Запад. В ресторанчике сидят два ковбоя. 
- Видишь тех пятерых типов, там, за столиком в углу? -говорит один. 
- Hу, вижу. 
- Вон тот, высокий блондин. 
- Они все высокие блондины. 
- Я говорю о том, со шляпой набекрень. 
- У всех шляпы набекрень. 
- Hу тот, который болтает без перерыва. 
- Все болтают без перерыва. Ковбой, потеряв терпение, выхватывает револьвер и поочередно укладывает четырех из пяти. 
- Теперь ты понимаешь, о ком я говорю? Это тот, который остался. 
- Теперь вижу. Hу и что? 
- Он ужасно действует мне на нервы...

Собственно к моему блогу, который располагается на моем же сервере, по адресу http://blog.pskovsoft.com

Хотите спросить, почему статья называется "Хороший, плохой, злой"?
Да просто это я о вордпрессовском движке, вначале он справлялся отлично с задачами, время шло и сайт начал обрастать плагинами, и все бы ничего, но...
Чем больше плагинов, тем больше вероятность того что один из плагинов перестает поддерживаться или очень редко обновляются, а через определенное время в них начинают находиться дырки.

К моему приогромнейшему удивлению таким плагином оказался "WP UI - Tabs, Accordions, Sliders", красивый фрейворк с отличными формами, одна беда - последний апдейт был более 2 лет тому назад. Каким то чудным образом там поселился эксплойт, дальше все как по кошмарному сценарию: закодированные файлы, непонятно каким способом прописывающиеся левые ссылки, при чем ведущие на сайт fbi.gov.

Да и в общем-то, я бы еще не скоро это заметил, если не решил бы поставить плагин кросспостинга, с такой вот злобноподменяемой ссылкой. Может вред и минимальный, но меня это жутко нервирует, не люблю когда что-то работает не так как я этого хочу.

Коллега мой - отличный пхп-шник, пару дней пытался понять этот адский механизьм.
В целом, если постараться, то можно все вычистить, ну или развернуть с бэкапа, но это не панацея. Есть мысль раскидать все по разным сервисам: картинки разместить на flickr, статьи импортировать отсель. "Раскидать все яйца по отдельным корзинам". Мысль конечно здоровская, остается только грамотно воплотить в жизнь подобную федерацию, что бы статьи всегда были в онлайне, а вордпресс стал бы просто набором скриптов для сеонизации проекта.
По крайней мере, я наверное таким способом смогу обеспечить бесперебойную работу,  блога, ведь собственный вэб-сервер это как маленький ребенок за которым нужен уход, не достаточно его поднять, нужно еще периодически и админить, читать логи, раскуривать новые серверные фичи, а в последний год все меньше времени остается из-за основной работы.
Вот как-то так!

Да, и кстати! Плагин через который произошел взлом, использовался только в "Секретном параграфе" - отдельном разделе про гуманоидов и НЛО. Видимо от сюда и мыслишка у взломщика поставить ссылочку на сайт ФБР. Так что, вот такие вот "Секретные материальчики" получились в результате.

вторник, 17 февраля 2015 г.

Блог на Blogger


"Отец Вовочки на родительском собрании:
— Ну что ж поделаешь, Вовочке в одно ухо влетело,
в другое вылетело...
Учитель физики со своего места:
— Ошибаетесь, звук в вакууме не распространяется..."

Конечно, в сети существует огромное количество блогов, в частности блогов со статьями на тему ИТ-технологий. Но, за последние несколько лет, написав несколько десятков статей, уже не можешь себя отучить от этого. Кроме всего прочего, приятно видеть комментарии, и понимать - что тебя читают, и интересуются твоими работами. Уж очень скучно жить без написания новых статей, в которых хочется рассказать об интересных фичах, которые и самому периодически нужны, т.к. очень много инновационного в последнее время приходится осваивать, память стала как буфер обмена (в одно ухо влетело, через второе вылетело). Ну а к каждой статье будет теперь прикреплен анекдот, вот просто так, для повышения хорошего настроения, ведь как известно смех продлевает жизнь, правда это всего лишь теория, но все же...
А теперь еще и решил объединить два блога, и все статьи теперь будут кроспоститься.

Чем восстановить данные диска с VMFS

Преамбула:
Был у меня сервер, с начала запуска прошло буквально 1 неделя, по этому организовать более или менее грамотную систему резервного копирования я еще не успел. Хотя и резервная копия осталась, недельной давности. В оригинале я конечно привык ставить RAID-массив, но в этот раз я надеялся на столь стабильную платформу как ESX, посчитав что будущая неделя ничего нового не преподнесет. Да и сервант не такой серьезный что бы ставить RAID (впрочем есть сомнения в его полезности в данном случае). Подключить к блоку бесперебойного питания тоже еще не удосужился, ибо не была бы эта статья из разряда о «Законе Мерфи» или «Законе подлости», по русски говоря.  Ну и я конечно же глубоко ошибся в своей спокойности происходящего. Внеочередной скачек электричества вскоре дал о себе знать. Переставил диски, развернул резервную копию недельной давности. Жесткие диски отправил на разбор полетов. Разбором полетов я занимался 2 месяца, меня попросту взял азарт и уверенность в себе. По этому все эти 2 месяца я пытался восстановить данные с файловой системы VMFS 5-версии. Что только я не перепробовал за это время, это были и всевозможные программы по ремапингу диска от битых кластеров, и драйвера под VMFS чтобы вытащить хотя бы образ VMDK. Горький опыт как всегда приходит поздно, но он приходит не один, он приходит с уверенностью в достижении своей цели, о которой сегодня я с Вами и решил поделится. Но как мои читатели знают, я обычно оперирую "голыми" фактами и философствовать не люблю, по этому приступим к восстановлению данных:

Условие:
а) SMART диска не поврежден.
б) Наш жесткий диск все еще работает (определяется в системе), BIOS его видит вполне приемлемо.
в) В консоли vSphere виртуальная машина определяется как  unknown (invalid).
г) В случае если вылетает ошибка: "Cannot open the disk '/vmfs/volumes/xxxxxx/*.vmdk' or one of the snapshot disks it depends on", пробуем удалить виртуальную машину из консоли и пересоздать дискриптор к файлу vmdk-flat примерно так как описано в этой статье. Если же виртуальная машина все еще не добавляется или если добавить ее из командной строки и она все еще
unknown (invalid), а команда vmkfstools -D *-flat.vmdk выдает сообщение о блокированном файле на подобие: 
Lock [type 10c00001 offset 182634496 v 37, hb offset 3260416
gen 81, mode 1, owner 516976cd-94e8f9d5-c67e-50e549547a53 mtime 1424
num 0 gblnum 0 gblgen 0 gblbrk 0]
Addr <4, 419, 1>, gen 2, links 1, type reg, flags 0, uid 0, gid 0, mode 600
len 858993459200, nb 819200 tbz 182554, cow 0, newSinceEpoch 819200, zla 4304, bs 1048576 

и снять блокировку ни чем не удается, типа стандартных советов по поиску процесса и его ликвидации, то скорее всего у Вас жесткий диск с битыми кластерами и файловой системой read only.
Проблема скорее всего в том что во время блокировки, например сетевым адаптером, через который подсоединился другой хост к виртуальной машине, он оказался во время перезагрузки блокирован в зоне расположенной на бэдблоках. И снять эту зону не получится, а как в последствии показала практика, подобные жесткие диски вообще не рекомендуются к дальнейшему их использованию.

Решение:
Берем волшебную программку UFS-explorer, которая замечательно считывает данные с VMFS, копируем на другой диск образ, заливаем на сервант ESX, создаем дескриптор, подключаем к виртуалке VMDK, ПРОФИТ!

Выводы:
Потому что нефик, нужно каждый день создавать резервные копии и заранее озаботится о бесперебойном питании сервера!

Вернулся на Mac OS

"- Сестра, а может, в реанимацию?
- Доктор сказал в морг, значит в морг."

Надоел линукс! Чувствуешь себя вечным бетатестером. Вернулся на маку, теперь уже основательно и безповоротно. Достали вечно наполовину работающие сервисы и программы, которые потом допиливать напильником нужно. А иногда вообще, попадаются такие глюки, которые проявляются только в зависимости от отражения света луны, от какой то хренотени. И если уж разработчик не может в своем собственном приложении пофиксить баги, я уж этим точно не буду заниматься, скажем дружно нафикнужно. Хоть и есть свои прелести на линуксе, все же их меньше чем на маке. Бизнес-класс есть бизнесс-класс, и нефик тут думать! 

вторник, 27 мая 2014 г.

Как я перешел на Linux


"- Скажите, а какой дистрибутив linux лучше?
-  Тот дистрибутив, который лучше знаешь!"
Ранее, я довольно скептически относился к десктопной версии линукса, наверное потому в первую очередь что впечатление испортилось после нескольких прецедентов установки таких дистрибутивов как Ubuntu, Debian и подобные. Кроме всего прочего раньше не было нормальных совместимых протоколов как то RDP или SMB для совместимой работы с виндовыми машинами, а если и были, то очень корявые, с половиной не работающих функций. И речь сейчас идет именно о десктопных версиях, с  наличием утилит в графическом исполнении аля gui. По этому, по традиции на десктопах использовал Windows и MacOS до недавнего времени.
Но было все это давно, и тем более не относится к серверным версиям консольных и стабильных дистрибутивов linux, коих в последнее время на работе мною было поднято несколько десятков. Из всех перепробованных серверных никсов, мне понравился Red Hat, за его стабильность и надежность. И из этой линейки использую исключительно CentOS. В свою очередь, и по опыту могу сказать что сервера способны работать годами на подобном софте, и требуют минимального вмешательства со стороны системного администратора. В прочем, и с точки зрения поломок железа, наверное лучше чем linux, дистрибутива не сыскать. В первую очередь это связанно с появлением инновационных разработок таких корпораций как Intel и AMD. Которые в последнее время согласно "закону" Мура в геометрической прогрессии выпускают комплектующие. Так, месяц назад вышла из строя мамка с камешком Core-2duo, естественно подобные платы уже сняты с производства. После переторкивания жесткого диска в мамку с Intel Xeon и небольшого шаманства с сетевым интерфейсом, мой сервант вновь заработал быстрее прежнего.

В общем, почитав отзывы, wiki, и т.д., решил поставить Fedora (из той же линейки red hat), и окружением kde. К моему огромному удивлению, за последние лет 6 все кардинально изменилось. Рабочее окружение порадовало стабильной работой, удобными gui-программами и красивыми свистелками. Немного покопавшись и подобрав набор нужного мне софта, я понял... На Windows я уже не вернусь (в прочем, если только в нетрезвом состоянии)!
Собственно, эту статью я написал как небольшую преамбулу к последующей серии статей о linux линейки Fedora, CentOS, ну и конечно Red Hat.

пятница, 21 декабря 2012 г.

3 способа загрузки-выгрузки файлов на ESXi севрер

Собственно, необходимость может возникнуть в результате переноса операционных систем или их загрузке-выгрузке с VM-гипервизора.
 Способ номер раз: SFTP из под Windows
Для начала нужно на сервере ESX в настройках консоли включить техническую поддержку.
Далее есть пару интересных способов:
  1) Подконнектится WinSCP-клиентом

  2) Подключиться используя Total Commander + Secure FTP plugin

Способ номер два: SSHFS из под Linux
Для начала выполняем:

#apt-get install sshfs
Примонтируем файловую систему VM по SSH

#mkdir /mnt/vmesx
#sshfs -o allow_other root@192.168.4.1:/ /mnt/vmesx
вводим пароль рута ESXi, готово!

Способ номер три: vSphere Client (дефолтный)
Вкладка "Summary" -> Storage -> Browse Datastore -> Upload\Download
#halt



среда, 5 декабря 2012 г.

Монтирование образов дисков в Windows

Для чего нужно монтирование, и как это работает:

Сам процесс монтирования подразумевает подключение устройства или файла-архива с определенной файловой системой.

Например: Сделанный нами образ CD\DVD диска и сохраненный на жестком диске, хранится как файл, файл - внутри которого есть своя файловая система и те же файлы которые находились на физическом диске. При записи образа на физический CD\DVD происходит воспроизведение файловой системы и структуры файлов и каталогов такой же как и на оригинальном CD\DVD.

К таким образам могут относится следующие форматы:


  • Формат образа CD\DVD дисков - ISO, BIN, MDF, NRG, UIF, DMG
  • Формат образа Floppy дискет - IMG, IMA, FLP
  • Формат образа HDD жестких дисков - VHD, VMDK, Qcow2

Это далеко не полный перечень всех существующих форматов образов, но пожалуй это самые используемые.
Иногда появляется необходимость достать что нибудь из файла-образа или просмотреть его структуру, конечно с этой задачей может справится и архиватор, например тот же IZArc (см. предыдущую статью об архиваторе IZArc). Но что делать, если стоит задача чтобы операционная система обратилась на прямую к данному файлу-архиву как устройству? Правильно, проэмулировать это устройство (привод, жесткий диск, флоппи дисковод, usb-устройство), а за тем подключить образ, чтоб он был виден операционной системе как настоящий носитель информации.

Всем отлично известны такие программы как например Alcohol 120%, Daemon Tools и т.д. Это конечно хороший выход, но как правило такие программы не позволяют обрабатывать образы жестких дисков или образы съемных носителей.

Для этого замечательно подойдет бесплатная программа-драйвер под названием "ImDisk Virtual Disk Driver".

Скачать ее можно здесь

Почитать о софтине на английском можно на официальном сайте

Системные требования программы Windows NT 3.51/NT 4.0/2000/XP/Server 2003/Vista/Server 2008, both 32-bit и 64-bit

После установки в контекстном меню мышки при правом щелчке на любом образе появится пункт "Mount as ImDisk Virtual Disk" - что в переводе означает смонтировать как виртуальный диск:

Далее программа запросит параметры подключения образа, в 95% случаев достаточно того что стоит по умолчанию. Некоторые настройки:
- Drive Letter (Устройство после) - т.е. как его увидим после монтирования, например это может быть диск E, D, F и т.д. Еще такие виртуальные устройства с монтированным диском называют "Точка монтирования" или "Mount Point".

- Size of virtual disk (Размер виртуального диска) - можем указать размер нашего виртуального диска.

- Image file offset - (Смещение файла образа) - позволяет указать размер файла самого образа.

- Device type - тип устройства: CD-DVD, Floppy, Hard Disk. Вообще не припоминается случая в котором программа не смогла бы в режиме Auto определить формат образа, и с настройками по умолчанию открыть то что нужно.

- Copy image file to a memory - копировать файл образ в оперативную память.

- Removable media (Съемное устройство) - эмуляция USB-устройства.

- Read-only media (Только чтение) - если внутри образа произошли изменения, образ не будет перезаписан.

Для того чтобы вернуть все как было до монтирования, достаточно на виртуальном (монтированном) диске при щелчке правой кнопкой выбрать пункт "Unmount ImDisk Virtual Disk" (Размонтирование виртуального диска):
И есть еще очень полезная функция в данной программе - создание образов физических дисков.

На физическом устройстве правой клавишей, выбрать пункт "Save disk content as image file" (Сохранить содержимое диска как файл образ):
Далее последует запрос каким вариантом произвести сохранение: со всей содержимой на нем информацией или без нее, просто чистый, пустой образ диска:
После установки программы в "панели управления" должен появиться значок  ImDisk Virtual Disk Driver, позволяющий запускать GUI-форму приложения, из которой запускаются все выше перечисленные функции.
ImDisk так же поддерживает работу из командной строки CMD, что актуально при использовании утилиты в MS Windows Server Core

Синтаксис параметров и команд консоли CMD, man на английском, но думаю тем кто пользуется командной строкой он и не нужен:

Control program for the ImDisk Virtual Disk Driver.
For copyrights and credits, type imdisk --version
imdisk -a -t type -m mountpoint [-n] [-o opt1[,opt2 ...]] [-f|-F file]
[-s size] [-b offset] [-v partition] [-S sectorsize] [-u unit]
[-x sectors/track] [-y tracks/cylinder] [-p "format-parameters"]
imdisk -d|-D [-u unit | -m mountpoint]
imdisk -l [-u unit | -m mountpoint]
imdisk -e [-s size] [-o opt1[,opt2 ...]] [-u unit | -m mountpoint]
-a      Attach a virtual disk. This will configure and attach a virtual disk
with the parameters specified and attach it to the system.
-d      Detach a virtual disk from the system and release all resources.
Use -D to force removal even if the device is in use.
-e      Edit an existing virtual disk.
Along with the -s parameter extends the size of an existing virtual
disk. Note that even if the disk can be extended successfully, the
existing filesystem on it can only be extended to fill the new size
without re-formatting if you are running Windows 2000 or later and the
current filesystem is NTFS.
Along with the -o parameter changes media characteristics for an
existing virtual disk. Options that can be changed on existing virtual
disks are those specifying wether or not the media of the virtual disk
should be writable and/or removable.
-t type
Select the backingstore for the virtual disk.
vm      Storage for this type of virtual disk is allocated from virtual memory
in the system process. If a file is specified with -f that file is
is loaded into the memory allocated for the disk image.
file    A file specified with -f file becomes the backingstore for this
virtual disk.
proxy   The actual backingstore for this type of virtual disk is controlled by
an ImDisk storage server accessed by the driver on this machine by
sending storage I/O request through a named pipe specified with -f.
-f file or -F file
Filename to use as backingstore for the file type virtual disk, to
initialize a vm type virtual disk or name of a named pipe for I/O
client/server communication for proxy type virtual disks. For proxy
type virtual disks "file" may be a COM port or a remote server
address if the -o options includes "ip" or "comm".
Instead of using -f to specify 'DOS-style' paths, such as
C:\dir\image.bin or \\server\share\image.bin, you can use -F to
specify 'NT-style' native paths, such as
\Device\Harddisk0\Partition1\image.bin. This makes it possible to
specify files on disks or communication devices that currently have no
drive letters assigned.
-l      List configured devices. If given with -u or -m, display details about
that particular device.
-n      When printing ImDisk device names, print only the unit number without
the \Device\ImDisk prefix.
-s size
Size of the virtual disk. Size is number of bytes unless suffixed with
a b, k, m, g, t, K, M, G or T which denotes number of 512-byte blocks,
thousand bytes, million bytes, billion bytes, trillion bytes,
kilobytes, megabytes, gigabytes and terabytes respectively. The suffix
can also be % to indicate percentage of free physical memory which
could be useful when creating vm type virtual disks. It is optional to
specify a size unless the file to use for a file type virtual disk does
not already exist or when a vm type virtual disk is created without
specifying an initialization image file using the -f or -F. If size is
specified when creating a file type virtual disk, the size of the file
used as backingstore for the virtual disk is adjusted to the new size
specified with this size option.
The size can be a negative value to indicate the size of free physical
memory minus this size. If you e.g. type -400M the size of the virtual
disk will be the amount of free physical memory minus 400 MB.
-b offset
Specifies an offset in an image file where the virtual disk begins. All
offsets of I/O operations on the virtual disk will be relative to this
offset. This parameter is particularily useful when mounting a specific
partition in an image file that contains an image of a complete hard
disk, not just one partition. This parameter has no effect when
creating a blank vm type virtual disk. When creating a vm type virtual
disk with a pre-load image file specified with -f or -F paramters, the
-b parameter specifies an offset in the image file where the image to
be loaded into the vm type virtual disk begins.
Specify auto as offset to automatically select offset for a few known
non-raw disk image file formats. Currently auto-selection is supported
for Nero .nrg and Microsoft .sdi image files.
-v partition
Specifies which partition to mount when mounting a raw hard disk image
file containing a master boot record and partitions.
Specify number 1-4 to mount a partition from the primary partition
table and 5-8 to mount a partition from an extended partition table.
-S sectorsize
Sectorsize to use for the virtual disk device. Default value is 512
bytes except for CD-ROM/DVD-ROM style devices where 2048 bytes is used
by default.
-x sectors/track
See the description of the -y option below.
-y tracks/cylinder
The -x and -y options can be used to specify a synthetic geometry.
This is useful for constructing bootable images for later download to
physical devices. Default values depends on the device-type specified
with the -o option. If the 'fd' option is specified the default values
are based on the virtual disk size, e.g. a 1440K image gets 2
tracks/cylinder and 18 sectors/track.
-p "format-parameters"
If -p is specified the 'format' command is invoked to create a
filesystem when the new virtual disk has been created.
"format-parameters" must be a parameter string enclosed within
double-quotes. The string is added to the command line that starts
'format'. You usually specify something like "/fs:ntfs /q /y", that
is, create an NTFS filesystem with quick formatting and without user
interaction.
-o option
Set or reset options.
ro      Creates a read-only virtual disk. For vm type virtual disks, this
option can only be used if the -f option is also specified.
rw      Specifies that the virtual disk should be read/writable. This is the
default setting. It can be used with the -e parameter to set an
existing read-only virtual disk writable.
rem     Specifies that the device should be created with removable media
characteristics. This changes the device properties returned by the
driver to the system. For example, this changes how some filesystems
cache write operations.
fix     Specifies that the media characteristics of the virtual disk should be
fixed media, as opposed to removable media specified with the rem
option. Fixed media is the default setting. The fix option can be used
with the -e parameter to set an existing removable virtual disk as
fixed.
saved   Clears the 'image modified' flag from an existing virtual disk. This
flag is set by the driver when an image is modified and is displayed
in the -l output for a virtual disk. The 'saved' option is only valid
with the -e parameter.
Note that virtual floppy or CD/DVD-ROM drives are always read-only and
removable devices and that cannot be changed.
cd      Creates a virtual CD-ROM/DVD-ROM. This is the default if the file
name specified with the -f option ends with either .iso, .nrg or .bin
extensions.
fd      Creates a virtual floppy disk. This is the default if the size of the
virtual disk is any of 160K, 180K, 320K, 360K, 640K, 720K, 820K, 1200K,
1440K, 1680K, 1722K, 2880K, 123264K or 234752K.
hd      Creates a virtual fixed disk partition. This is the default unless
file extension or size match the criterias for defaulting to the cd or
fd options.
ip      Can only be used with proxy-type virtual disks. With this option, the
user-mode service component is initialized to connect to an ImDisk
storage server using TCP/IP. With this option, the -f switch specifies
the remote host optionally followed by a colon and a port number to
connect to.
comm    Can only be used with proxy-type virtual disks. With this option, the
user-mode service component is initialized to connect to an ImDisk
storage server through a COM port. With this option, the -f switch
specifies the COM port to connect to, optionally followed by a colon,
a space, and then a device settings string with the same syntax as the
MODE command.
-u unit
Along with -a, request a specific unit number for the ImDisk device
instead of automatic allocation. Along with -d or -l specifies the
unit number of the virtual disk to remove or query.
-m mountpoint
Specifies a drive letter or mount point for the new virtual disk, the
virtual disk to query or the virtual disk to remove. When creating a
new virtual disk you can specify #: as mountpoint in which case the
first unused drive letter is automatically used.
Примеры:

Mount partition in disk image C:\my_disk.ima as drive R: (partition starts at 63rd sector offset) -
imdisk.exe -a -f C:\my_disk.ima -m R: -b 32256
Mount partition in disk image C:\my_disk.ima as drive R: (partition starts at 63rd sector offset) -
imdisk.exe -a -f C:\my_disk.ima -m R: -b 63b
Unmount drive R: -
imdisk.exe -d -m r:
Force unmount drive R: -
imdisk.exe -D -m r:
Create disk image C:\my_disk.ima (superfloppy format) 2104515 sectors in size (1.5 GB) and mount as drive R: -
imdisk -a -s 2104515b -m R: -f C:\my_disk.ima
Create disk image C:\my_disk.ima (superfloppy format) 2104515 sectors in size (1.5 GB) and mount as drive R:, then format using compressed NTFS -
imdisk -a -s 2104515b -m R: -f C:\my_disk.ima -p "/FS:NTFS /C /Y"