пятница, 14 апреля 2017 г.

#mysql: Уменьшаем размер файла *.ibd базы данных INNOB

Бывают моменты, когда чрезмерно растет размер файла *.ibd. Данный файл хранит в себе не только данные таблицы, но и сброшенные на диск запросы.

Чтобы очистить файл от лишних данных, достаточно сделать sql запрос
ALTER TABLE `mytable` ENGINE=INNODB;

Вместо `mytable` указываем название таблицы, для которой нужно разгрузить файл `mytable`.ibd

Примечание. Стоит отметить, что данная команда временно потребует некоторое место на диске.

#linux: Ошибка [drm:radeon_vga_detect] *ERROR* VGA-1: probed a monitor but no|invalid EDID

После использования загрузочной флешки для работы с дисками начала появляться ошибка:

[drm:radeon_vga_detect] *ERROR* VGA-1: probed a monitor but no|invalid EDID

Временным решением для устранения данной ошибки являются следующие действия:

Редактируем файл дефолтных настроек grub
sudo nano /etc/default/grub

Находим строку
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

добавляем опцию nomodeset, получаем
GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset"

Сохраняем.

Выполняем команду обновления конфигурации
update-grub

Перезагружаемся.

Напомню, что это временное решение, которое позволяет избежать появление ошибки. Решение же данной ошибки производится настройками /etc/X11/.

#linux: Перенос папки var на диск (райд массив)

Имеем:
- система Debian 8
- сервер HP DL160 G6 (далее сервер)
- переполненный диск с двумя разделами: корневой / и swap (далее переполненный диск)
- загрузочная флешка с gparted-live-amd64.iso (далее флешка)
- новые пустые подключенные диски (далее новый диск)

Задача: Перенести папку var корневого раздела переполненного диска на новый диск.

Цель: Увеличить дисковое пространство переполненного диска.

Неописанные инструкции:
- создание RAID 1+0 для новых дисков (будем считать его как один диск)
- создание и форматирование корневого раздела на новом диске

Кратко о пропущенных инструкциях. Райд массив аппаратный, создавался встроенной утилитой сервера. Диски к серверу подключались в холодную. Создание корневого раздела / и его форматирование на новом диске производилось через загрузочную флешку.

Часть 1. Собираем нужную информацию.
Нам нужно узнать UUID нового диска. И чтобы получить правильное значение, изучим переполненный диск.


Вводим команду:
sudo blkid -c /dev/null

Получаем примерно такое:
/dev/sda1: UUID="хххххххх-хххх-хххх-хххх-хххххххххххх" TYPE="ext4" PARTUUID="00000000-01"
/dev/sda2: UUID="хххххххх-хххх-хххх-хххх-хххххххххххх" TYPE="swap" PARTUUID="00000000-02"

/dev/sdb1: UUID="хххххххх-хххх-хххх-хххх-хххххххххххх" TYPE="ext4" PARTUUID="00000000-01"

Далее, вводим:
cat /etc/fstab

Получаем примерно такое:
UUID=хххххххх-хххх-хххх-хххх-хххххххххххх /               ext4    errors=remount-ro 0       1
UUID=хххххххх-хххх-хххх-хххх-хххххххххххх none            swap    sw              0       0


Делаем себе заметки. Видим, что переполненный диск - это sda1, т.к. он смонтирован к корневому разделу /. sda2 - это swap. Значит записываем UUID диска sdb1 - это без сомнения новый диск.

Часть 2. Останавливаем сервер, загружаемся с флешки и переносим данные с папки var на новый диск.

Открываем терминал. Вводим последовательно команды:
- создаем временную папку root для монтирования в него переполненного диска sda1
sudo mkdir /mnt/root

- монтируем диск sda1 в папку root
sudo mount /dev/sda1 /mnt/root/

- создаем временную папку varnew для монтирования в нее нового диска sdb1
sudo mkdir /mnt/varnew

- монтируем в папку varnew новый диск sdb1
sudo mount /dev/sdb1 /mnt/varnew/

- переходим в папку var переполненного диска
sudo cd /mnt/root/var/

- копируем все содержимое папки var на новый диск sdb1 (-ax позволяет максимально сохранить права доступа и полномочия пользователей на файлы)
sudo cp -ax * /mnt/varnew/

- создаем резервный файл fstab
sudo cp /mnt/root/etc/fstab /mnt/root/etc/fstab.old

- открываем файл fstab для добавления записи, позволяющей автоматически монтировать новый диск sdb1 в папку var при загрузке системы
sudo nano /mnt/root/etc/fstab

- в конце записей файла добавляем строку и сохраняем
UUID=хххххххх-хххх-хххх-хххх-хххххххххххх /               ext4    errors=remount-ro 0       1

Где хххххххх-хххх-хххх-хххх-хххххххххххх тот самый UUID нового диска, который мы запомнили в 1 части.

- переименовываем папку var на переполненном диске
sudo mv /mnt/root/var/ /mnt/root/varold/

- создаем новую пустую папку var на переполненном диске
sudo mkdir /mnt/root/var

- размонтируем диски
sudo umount /mnt/root/
sudo umount /mnt/varnew/

Готово. Теперь перезагружаем сервер и убеждаемся, что полет нормальный.
df -h

Через некоторое время, если все нормально, папку varold можно удалить.
rm -rf /varold

суббота, 8 апреля 2017 г.

#linux: Работа с дисками и разделами - команды fdisk, mount, umount, df, ls, cat, blkid, du

# Способы просмотра информации о дисках и разделах

ls /dev | grep sd - покажет все имена дисковых разделов дисков
пример вывода:
sda
sda1
sda2

sudo blkid -c /dev/null - покажет информацию о дисковых разделах
пример вывода:
/dev/sda1: UUID="хххххххх-хххх-хххх-хххх-хххххххххххх" TYPE="ext4" PARTUUID="00000000-01"
/dev/sda2: UUID="хххххххх-хххх-хххх-хххх-хххххххххххх" TYPE="swap" PARTUUID="00000000-02"

cat /etc/fstab - покажет содержимое файла записи монтирующихся разделов дисков
пример вывода:
UUID=хххххххх-хххх-хххх-хххх-хххххххххххх /               ext4    errors=remount-ro 0       1
UUID=хххххххх-хххх-хххх-хххх-хххххххххххх none            swap    sw              0       0
 
ls -l /dev/disk/by-uuid - показывает uuid дисковых разделов
пример вывода:
итого 0
lrwxrwxrwx 1 root root 10 апр  8 09:54 хххххххх-хххх-хххх-хххх-хххххххххххх -> ../../sda1
lrwxrwxrwx 1 root root 10 апр  8 09:54 хххххххх-хххх-хххх-хххх-хххххххххххх -> ../../sda2

df -h - покажет информацию о размерах используемого, оставшегося и доступного дискового пространства разделов
пример вывода:
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sda1           650G          610G  40G           94% /
udev                10M            0   10M            0% /dev

fdisk - команда для работы с разделами дисков
fdisk /dev/sda - переходит в меню утилиты fdisk для работы с диском sda
команды:
a установить/снять флаг загрузочного раздела
b редактировать метки bsd диска
c переключить флаг совместности с dos
d удалить раздел
l вывести список известных типов разделов
m показать это меню n добавить новый раздел
o создать новую пустую таблицу разделов в стиле DOS
p показать существующею таблицу разделов
q выйти без сохранения изменений
s создать новый раздел с меткой Sun
t изменить метку типа раздела
u изменить отображения/записи блоков
v проверить таблицу разделов
w сохранить изменения и выйти
x дополнительные возможности (только для экспертов)
пример команды:

sudo fdisk -l /dev/sda - покажет информацию разделов диска и самого диска sda
sudo fdisk -l - покажет информацию обо всех дисках и их разделах

пример вывода:
Disk /dev/sda: 680 GiB, 00000000000 bytes, 000000000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0000000000
Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2000 137400000 137402368 650G 80 Linux
/dev/sda2       137400000 143300000   5898000  2,8G 50 Extended
/dev/sda3       137400000 143300000   5898000  2,8G 10 Linux swap / Solaris

sudo du --max-depth=1 -hac - покажет размер всех папок и файлов текущей папки
пример вывода:
48K     ./mail
7,2M    ./backups

sudo mount /dev/sda1 /mnt/disk - монтирует раздел sda1 в папку /mnt/disk корневой папки

sudo umont /dev/sdc1 - размонтируется раздел sdc1 диска sdc

sudo cfdisk /dev/sdb - создаст раздел на лиске sdb
> 1.New - новый раздел
> 2.Primary - неосновной
> 3.Specify size in MB - указываем размер будущего раздела
> 4.Write - сохраняем
> 5.yes - подтверждаем
> 6.Quit - выходим из утилиты

sudo mkfs.ext4 /dev/sdb1 -  отформатирует раздел sdb1 под ext4

пятница, 27 января 2017 г.

#linux: Права доступа на файл/папку linux

# Просмотр прав доступа файла/папки текущего каталога ls -l

Пример:
ls -l
итого 7
Права            Количество Пользователь Группа Размер Дата               Имя
-rw-------       1                   root                  root      179583  ноя 12 00:00 conf.tar
-rw-r-----       1                   user                  user      2922     июн 17  2015 dead.letter
-rw-r--r--       1                   user                  user      8980     июн 18  2015 examples.desktop
-rwxrwxr-x   1                   user                  user      48932   июн 20  2015 install.sh
drwxrwxrwx 3                   user                  user      4096     июн 16  2015 papka


# Изменение прав доступа на файл/папку chmod

chmod ugo+rwx file.txt - даст право на чтение, запись и выполнение файла file.txt текущему пользователю, группе и другим пользователям

chmod go-wx file.txt - отберет право на запись и выполнение файла file.txt текущего каталога группе и другим пользователям

chmod -R 755 /home/user/papka/ - изменит права рекурсивно (включая вложенные папки и файлы) в папке papka по указанному пути для пользователя на 7 (чтение, запись, выполнение), для группы на 5 (чтение, выполнение), для остальных на 5 (чтение, выполнение)


# Изменение пользователя/группы файла/папки chown

chown -R user:group papka/ - поменяет рекурсивно (включая вложенные папки и файлы) пользователя на user и группу на group для папки papka текущего каталога

chown user file.txt - сменит пользователя на user файлу file.txt текущего каталога

chown :groups file.txt - сменить группу на groups файлу file.txt текущего каталога


# Обозначения атрибутов прав
7 - rwx - читать, писать, выполнять
6 - rw- - читаь, писать
5 - r-x - читать, выполнять
4 - r-- - читать
3 - -wx - писать, выполнять
2 - -w- - писать
1 - --x - выполнять
0 - --- - ничего нельзя делать


# Обозначение порядка прав трех цифр (например, 755)
первая - пользователь
вторая - группы
третья - остальные (гости)

# Расшифровка обозначений ugo
u - пользователь
g -  группа
o - остальные

среда, 25 января 2017 г.

#minify: Как сбросить кэш на уровне linux системы

Определяем путь, куда сохраняется кэш minify. Для этого идем в конфигурационный файл config.php установленного minify в папке сайта. Ищем в файле переменную

$min_cachePath

Она задает пусть к папке. Если путь не указан, то по умолчанию в linux системах файлы сохраняются в папку /cache/tmp.

После определения папки хранения кэша minify, в консоли linux выполняем команду

rm -f /var/www/kaleostra/system/cache/system/minify*

воскресенье, 22 января 2017 г.

#linux: Команды в командной строке (терминале) ubuntu debian

# Создание папки mkdir
mkdir /papka - создаст папку papka в корне системы
mkdir papka - создать папку papka в текущем каталоге
mkdir -p papka/podpapka - создаст папку papka в текущем каталоге и в этой папке создаст podpapka
mkdir papka1 papka2 papka3 - создаст в текущем каталоге три папки papka1, papka2 и papka3
mkdir -m 0755 -p papka/podpapka - создаст в текущем каталоге папку papka и в ней подпапку podpapka с правами доступа 0755

# Создание файла touch
touch file.txt - создаст файл file.txt в текущем каталоге

# Копирование cp
cp /papka/file1.php /papka/file2.php - будет создана копия файла file1.php под именем file2.php в корневой папке papka
cp file1 file2 - будет создана копия файла file1 под именем file2 в текущей папке
cp file1 papka/ - будет создана копия файла file1 под именем file2 в папке papka текущего каталога
cp file1 /file2 - будет создана копия файла file1 текущего каталога под именем file2 в корневом каталоге системы
cp /papka/file papka/ - будет создана копия файла file под именем /papka/file в папке papka корневого каталога
cp -r papka papka2 будет создана копия папки papka под именем papka2 текущего каталога
cp -r papka papka2/papka3 - будет создана копия папки papka под именем papka3 в папке papka2 текущего каталога
cp -rp papka/papka1 papka/papka2/papka3/ - будет создана копия папки papka1 под именем papka3 в созданной папке papka2 папки papka текущего каталога
cp -rp papka/* papka/papka2/ - будет скопировано содержимое папки papka в папку papka2 в этой же папке текущего каталога

# Перемещение mv
mv file.txt papka - файл file.txt будет перемещен в папку papka текущего каталога
mv /file.txt papka - переместит файл file.txt в корне системы в папку papka текущего каталога
mv papka papka2 - переместит папку papka в папку papka2 текущего каталога
mv file1.txt file2.txt - переименует имя файла file1 в file2 текущего каталога
mv /usr/tmp/file,txt . - переместит файл file.txt указанного пути в текущий каталог
mv papka/* papka2 - переместит содержимое папки papka в папку papka2 текущего каталога

# Удаление rm
rm file - удалит файл file в текущем каталоге
rm -r papka - удалит папку papka и ее содержимое в текущем каталоге с подтверждением удаления вложенного содержимого папки papka
rm -rf papka/papka2 - удалит папку papka2 в папке papka текущего каталога без подтверждений удаления вложенных папрк и файлов
rm -rf papka/*/ - удалит все папки и их содержимое в папке papka текущего каталога без подтверждения удаления их вложенного содержимого, но оставит все файлы  в папке papka