четверг, 15 июня 2017 г.

Полезные команды

Если при удалении очень большого количества файлов вылезает ошибка вида
bash: /bin/rm: Argument list too long
- то тогда файлы можно удалить так:
# find . -type f -exec /bin/rm {} \;

Рекурсивно подсчитать количество файлов в папке:
# ls -f . | wc -l
# find . -type f | wc -l

Подсчет занимаемого места по директориям с определенной степенью вложенности:
# du -h --max-depth=1 /vz/

Rsync и нестандартный порт SSH:
# rsync -avzp -e "ssh -p 22022" /srv/ root@8.8.8.8:/srv/
-p означает сохранение прав

Rsync и исключение директорий (--exclude):
# rsync -avpz --exclude='bitrix/cache/' -e "ssh -p 22022" /var/www/ root@8.8.8.8:/var/www/
следует учесть, что путь в exclude указывается НЕ абсолютный, а относительно директории из которой копируем, т.е. в  данном случае будет путь относительно /var/www/.

Tar с сохранением прав (параметр -p)
Упаковать:
# tar -cpzf archive.tar.gz directory
Распаковать:
# tar -xzpf archive.tar.gz
Вывести конфигурационный файл без коментариев и пустых строк
cat /usr/local/etc/php.ini | grep -v '^;' | grep -v ^$
Посмотреть открытые порты в ubuntu
netstat -plnt
Проверка работы UDP
Пример отправки udp:
root@kali-arm64:~# nc -u 192.168.2.151 80
hello
Пример получения:
[root@backup ~]# tcpdump -i em1 udp port 80 -vv -X
tcpdump: listening on em1, link-type EN10MB (Ethernet), capture size 262144 bytes
13:00:30.959720 IP (tos 0x0, ttl 64, id 16117, offset 0, flags [DF], proto UDP (17), length 34)
    kali.41156 > backup.http: [udp sum ok] UDP, length 6
    0x0000:  4500 0022 3ef5 4000 4011 754c c0a8 02a2  E..">.@.@.uL....
    0x0010:  c0a8 0297 a0c4 0050 000e 9457 6865 6c6c  .......P...Whell

Problem with Power on some Virtual Machines after VMware ESXi 4.1 migration to ESXi 5.1 or 5.5

Решение проблемы с запуском некоторых виртуалок после обновления VMWare ESXi с версии 4.1 на версию 5.1 или 5.5 (Problem with Power on some Virtual Machines after VMware ESXi 4.1 migration to ESXi 5.1 or 5.5)


Есть проблема, что после обновления VMWare ESXi 4.1 на версию 5.5 не запускаются некоторые виртуальные машины. При запуске получаем ошибку такого вида: 
Module DiskEarly power on failed. 
Cannot open the disk '/vmfs/volumes/4c6bc62c-b9631d41-c35c-00a0d1e86bff/Ubuntu 12.04/test1.vmdk' 
or one of the snapshot disks it depends on. 
The system cannot find the file specified
VMware ESX cannot find the virtual disk "/vmfs/volumes/4c6bc62c-b9631d41-c35c-00a0d1e86bff/Ubuntu 12.04/test1.vmdk". 
Verify the path is valid and try again.
В лог-файле виртуальной машины видим следующее: 
2017-06-14T16:03:07.936Z| Worker#0| I120: DISKLIB-CHAINESX : ChainESXOpenSubChainNode: 
can't create multiextent node 448d83c8- test1-s001.vmdk failed with error 
The system cannot find the file specified (0xbad0003, Not found)

2017-06-14T16:03:07.938Z| Worker#0| I120: DISKLIB-CHAIN : 
"/vmfs/volumes/4c6bc62c-b9631d41-c35c-00a0d1e86bff/Ubuntu 12.04/test1.vmdk" : 
failed to open (The system cannot find the file specified).
Данная ошибка возникает из-за того, что модель vmkernel multiextent (vmkernel multiextent module) больше не загружается по умолчанию начиная с версии ESXi версии 5.1 (https://www.vmware.com/support/vsphere5/doc/vsphere-esx-vcenter-server-51-release-notes.html). Проверить это можно зайдя на сервер ESXi по SSH и загрузить этот модуль командой vmkload_mod multiextent. После этого виртуальная машина должна начать запускаться. Т.к. данный модуль при перезагрузке ESXi опять будет выключен – то исправим диск виртуальной машины, чтобы данный модуль был больше не нужен. 

Делаем в следующей последовательности: 

1. Подключаемся по SSH на сервер ESXi и загружаем модуль multiextent: 
# vmkload_mod multiextent

2. Заходим в директорию с диском виртуальной машины и конвертируем диск используя vmkfstools и выбрав необходимый формат VMFS (zeroedthick или eagerzereodthick или thin):
# cd /vmfs/volumes/dir_with_my_vm/
# vmkfstools -i test1.vmdk test2.vmdk -d thin

Ждем окончания конвертации. 

3. ***Удаляем старый диск
# vmkfstools -U test1.vmdk

4. Переименовываем новый диск (называем его как старый диск)
# vmkfstools -E test2.vmdk test1.vmdk

5. Выгружаем модуль multiextent:
# vmkload_mod -u multiextent


*** - на этом этапе вы можете столкнуться с тем, что удаление диска будет невозможно и будет ошибка:
Failed to delete virtual disk: Device or resource busy (1048585).
Решение: 
При проверке каким процессом занят данный диск (# lsof | grep test1.vmdk) ничего найдено не будет. Красивого решения, как это обойти я не нашел. Решил так: заходим в настройки виртуалки через клиента, добавляем новый диск, удаляем старый диск (из настроек), делаем новый диск основным. После этого виртуальная машины будет успешно работать. Старый диск можно будет удалить вручную после перезапуска сервера ESXi.


Источник: http://h20564.www2.hpe.com/hpsc/doc/public/display?docId=mmr_kc-0100751