MiniDevicesInfo ИТ блоги 2017-09-19 2017-09-19 Отображаются все разделы
1234

root
0

Linux Debian
Tweaks
Фриланс

Без комментариев
Восстановление InnoDB MySQL

Как бы не убеждал нас Oracle и Mariadb о надежности InnoDB - это не так.

Поддержка транзакций и прочее страшные слова хороши до тех пор пока база данных не скрашилась (как вариант, не была дерзко скопирована в другое место). В этом случае наступает кризис, и останавливается работа.
Итак, описанный хак будет работать только в случае, если вы используете хранение каждой таблицы в отдельном файле (параметр innodb_file_per_table=1 в my.cnf). Если у вас такой настройки нет - сделайте ее, иначе будет поздно. Вы можете определить использование отдельного файла для таблицы, по присутствию множества .ibd файлов в каталоге базы данных.
Т.е., примерно в /var/lib/mysql/DATABASE_NAME/ у вас должны быть файлы с расширением FRM и IBD.
FRM - это структура таблицы. IBD - содержимое таблицы. Простое копирование не поможет, поскольку несмотря на то, что MySQL будет видеть названия таблиц, ни SELECT FROM ни DESC не получится.

Итак, допустим у вас есть все условия: бэкап с множеством IBD-файлов:
1) Удаляем файлы ibdata1 и логи в папке /var/lib/mysql (или в вашем каталоге с базами)
2) Перезапускаем MySQL. Он должен перезапуститься
3) Открываем консоль MySQL и заходим в него
4) Выполняем show databases; use <имя_вашей_базы>;show tables - вы должны увидеть таблицы.


Основной принцип восстановления таблиц из файлов следующий:
1) Создаем промежуточную базу данных
2) Восстанавливаем структуру каждой таблицы вашей поврежденной базы, при помощи утилиты
3) Создаем таблицы в промежуточной базе, на основе восстановленных из предыдущего пункта
4) Удаляем текущий контент таблицы, при помощи хитрой команды
5) Копируем физический файл с данными таблицы, из нашей поврежденной базы
6) Заставляем MySQL принять и перечитать новые данные.


Как это будет в командах.
1) cd /var/lib/mysql
2) rm ib_logfile0;rm ib_logfile1; rm ibdata1
3) service mysql restart
4) mysql -u'root' -p'ваш_пароль'
5) CREATE DATABASE swap;
6) quit
7) mysqlfrm --server=root:ваш_пароль@localhost:3306 --diagnostic <имя_файла.frm> > table.sql
8) mysql -u'root' -p'ваш_пароль' swap < table.sql
9) Предыдущие команды возможно вызовут ошибки, они незначительные, к примеру незакомментированное слово WARNING, но их придется устранить вручную
10) mysql -u'root' -p'ваш_пароль' swap
11) ALTER TABLE <имя_таблицы_которую мы создали пару пунктов назад> DISCARD TABLESPACE;
12) quit
13) cp <файл_таблицы.ibd из поврежденной базы> swap/ - попросту говоря, копируем восстанавливаемый файл IBD из папки старой базы, в папку с новой
14) mysql -u'root' -p'ваш_пароль' swap
15) ALTER TABLE <имя_таблицы_которую мы создали пару пунктов назад> IMPORT TABLESPACE;
16) Вуаля. service mysql restart


Для автоматизации рутинной работы, я написал скрипт
Код скрипта:

#!/bin/bash

pass='ваш_рутовый_пароль_на_mysql'

rm swap
db=$1
echo "================Restoring database $db======================="
cd $db
echo "1) Creating temp database _$db"
echo "drop database _$db;" | mysql -u'root' -p"$pass"
echo "create database _$db;" | mysql -u'root' -p"$pass"
echo "2) Re-creating table structure"
f=`ls | grep '.frm'`
cd ..
 for ii in $f;do
 tbl=`echo "$ii" | awk -F '.' {'print $1'}`
 echo " Creating structure for table $tbl"
 mysqlfrm --server=web:$pass@localhost:3306 --diagnostic $db/$ii | grep -v 'WARNING' | sed "s/$db/_$db/" > $db.$tbl.sql
 DONE=false
until $DONE ;do
read x || DONE=true
# Следующие строки нужны,чтобы заменять возможные апострофы в комментариях
xx=`echo $x | grep ' comment '`
if [[ "$xx" != "" ]];then
x=`echo $x | sed 's/"/\^/g' | sed "s/'/\"/" |  sed "s/',/\",/"`
                            fi
echo $x >> swap
done < $db.$tbl.sql
mv swap $db.$tbl.sql
mysql -u'root' -p"$pass" < $db.$tbl.sql
done
echo "Now will restart mysql..."
read a
# killall mysqld
# killall mysqld_safe
service mysql stop
/etc/init.d/mysql stop
service mysql start
echo "3) Discarding current table"
# cd ..
cd _$db
f=`ls | grep '.frm'`
for ii in $f;do
tbl=`echo "$ii" | awk -F '.' {'print $1'}`
printf " DISCARD _$db.$tbl..."
mv $tbl.ibd $tbl.bkp 
echo "USE _$db; ALTER TABLE $tbl DISCARD TABLESPACE;" | mysql -u'root' -p"$pass" 2> log
cp ../$db/$tbl.ibd $tbl.ibd

chmod 777 $tbl.ibd

echo "OK"

done
 f=`ls | grep '.ibd'`
 for ii in $f;do
 tbl=`echo "$ii" | awk -F '.' {'print $1'}`
 printf " IMPORT _$db.$tbl..."
 res=`echo "USE _$db; ALTER TABLE $tbl IMPORT TABLESPACE;" | mysql -u'root' -p"$pass" 2>err`
 err=`cat err | grep 'Data structure corruption'`
 # Если контент в IBD файле поврежден, мы его не восстановим, для этого придется оставить таблицу чистой, и снять с нее DISCARD
 if [[ "$err" != "" ]];then
 printf "Data corrupted, running restoration..."
 rm $tbl.ibd
 echo "USE _$db; ALTER TABLE $tbl DISCARD TABLESPACE;" | mysql -u'root' -p"$pass" 2> log
 mv $tbl.bkp $tbl.ibd
 echo "USE _$db; ALTER TABLE $tbl IMPORT TABLESPACE;" | mysql -u'root' -p"$pass" 2> log
 fi
 echo "OK"
 done
service mysql restart


Скрипт должен быть размещен в каталоге datadir (/var/lib/mysql)

Запускается он, находясь в каталоге, командой ./script.sh <имя_базы_данных>

Естественно, каталог с базой должен находиться здесь же. Скрипт создаст новую базу с таким же названием, но со знаком подчеркивания. Не забудьте так же поставить mysqlfrm (apt-get install mysql-utilities в Debian-based).


Не упрекайте меня пожалуйста за красоту программирования на bash, главная цель вовсе не она.

Надеюсь я вам помог.


root
1

Игровое железо
Апгрейды ПК
Новые разработки

Без комментариев
Обзор Gigabyte Brix GB-BSi3HA-6100

Очередной апгрейд очередного компьютера...

Как мне уже надоело искать эту золотую середину. Ни один компьютер практически не может полностью удовлетворить желание скорости. Один компьютер тормозит по процессору. Второй вроде не тормозит, но медленно грузится. А тут еще вышли SSD PCIE, и оказалось что нет разъема, снова апгрейд. Третий вроде хорошо работает по скорости, но много кушает и вдобавок шумит. 

В общем, поменял я старый (двухмесячной давности, хе) компьютер на новенький Gigabyte Brix. О нем и поведаю.


Это неттоп. Собран он на мобильном процессоре Core i3-6100U. И стоит порядка 10 000 грн, что относительно немного для такого класса устройств. Обзоров в интернете по нему я не нашел, есть на модель GB-BSi3HA-6100, но они кардинально различаются, примерно как Волга и Бентли.


Итак, чтобы не путать читателей и планирующих купить этот девайс, выложу фотографии обеих. Слева будет GB-BSi3HA-6100, справа - GB-BSi3H-6100. О различиях во внутренностях поговорим позже.

Лицо.


Жопа.


Разница спереди вполне очевидна. Кстати был конфликт с первым магазином у которого я хотел заказать этот ПК (Deshevshe.NET), в ходе которого смешные менеджеры предложили мне сделать скидку и привезти другую модель, мотивируя это тем что "мы честно говоря не нашли различий".

Различие - в наличии USB 3.1, который позволяет передавать данные со скоростью 10 Гбитc (в два раза быстрее чем USB 3.0, и в 1.9 раза быстрее чем SATA, и до 100 Вт заряда). А так же в разъеме будущего, USB 3.1 Type C, который маленький, и в который можно вставлять вслепую кабель любой стороной, т.е. симметричный. Странно что продавцы Deshevshe.net не знают, что они продают.

Кстати, пользуясь случаем, хочу порекомендовать магазин EuroPlus (Украина). Цены очень дешевые, ребята очень ответственно и быстро подошли к задаче, и товар был у меня на следующий же день). Сайт магазина - http://www.eplus.kiev.ua


Внутренности на первый взгляд тоже одинаковы внешне, за исключением одной маленькой детали: у обеих есть новомодный разъем M.2, но в дешевой версии (H), он поддерживает носители только в стандарте SATA (то есть тормознутые 550 Мбc в другой упаковке), а в более дорогой версии (HA) он поддерживает PCIE (NVME) со скоростью полтора-два Гбс. Совсем небольшое различие, да ? 


В процессе работы удалось выяснить, что Gigabyte мошенничает (точнее просто не предупреждает) о том, что PCI-E шина, подведенная к М.2 разъему, не 3.0, а 2.0. То есть максимальная скорость чтения вашего SSD будет не 2.5 Гб, а только 1.6. Учитывайте это, если собираетесь покупать этот компьютер под SSD, как сделал я.


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


Большие плюсы:

1. Процессор Intel Core i3 6100U (последняя разработка Intel), что намного лучше чем в неттопах той же ценовой категории, включая Intel NUC;

2. Абсолютно небольшие габариты. 12х12 см, и высотой в 5 см;

3. Соответственно отличное встроенное видео Intel HD 520;

4. Поддержка DDR4-памяти. Новые технологии, все такое;

5. Наличие USB 3.1-порта, в том числе Type-C (универсального симметричного). За ним будущее;

6. Наличие WiFi стандарта b/g/n/ac, двухстандартного, 2.4 ГГц и 5 ГГц;

7. Наличие одновременно слота М.2 и стандартного SATA вместе с корзинкой под 2.5" диски;

8. Поддеркжа PCI-E разъемом M.2. А значит будут работать высокоскоростные SSD типа Samsung 950 Pro и Kingston Predator;

9. Питание от обычного ноутбучного 19В блока питания, собственно потребление такое же мизерное;

10. VESA-крепление. Можно закрепить за монитором;

11. Уникальная и легкая система разборки. Четыре винта в удобных резиновых подножках. Подножки действительно качественные, и отлично изолируют стол от шелеста вентилятора.


Большие минусы:

1. Отсутствие VGA-разъема. К старым проекторам и мониторам не подключишь;

2. Присутствие вентилятора. Хоть он и малошумный, но в спальне все же слышен шелест. Было бы не так обидно, если бы китайцы не сделали бесшумную систему из аллюминиевого корпуса;

3. Сдвоенный аудио-разъем под наушники и микрофон. Хотя колонки по отдельности - работают, хоть за это спасибо.


Небольшие минусы:

1. Как уже писал выше, PCI-E работает на скорости 2.0, а значит максимальная скорость чтения вашего SSD будет 1.6 Гбc, вместо 2.5 пиковых. На скорости это все равно не сказывается, пока главные тормоза в ОС, но все равно обидно;

2. Разъем SATA - специфическая косичка в специфическом разъеме. Если часто дергать и поломается - можно помахать ручкой;

3. Пластиковый, хоть и жутко красивый корпус;

4. Отсутствие возможности поставить вертикально. Нету ножек или хотя бы подставки.


Резюме:

Как видите, даже вкупе с небольшими минусами, количество его минусов (впрочем они так же субъективны) значительно ниже количества плюсов.


root
0

Linux Ubuntu
Linux ElementaryOS
Tweaks
Новые разработки

3 комментариев
Высер ElementaryOS Loki Beta

Наконец увидел свет долгожданный релиз ElementaryOS - системы, грозящейся порвать и Windows и MacOS, и даже Ubuntu. Спустя год громких обещаний, да.

На вопрос "почему так долго?" разработчики отвечали краткой отговоркой "Ждем стабильную Ubuntu 16.04". Человек мало-мальски знакомый с ОС на базе Linux, сразу заподозрит неладное, поскольку знает что любой дистрибутив - это всего лишь набор программ, объединенных одним репозиторием и системой установки. То есть например, нам ничего не мешает взять Ubuntu 8.04, бородатого 2008 года, и накатить туда Xfce 4.12, которое 2015 года. 

Но разработчики ElementaryOS решили по-другому. Они решили подождать, пока другие ребята возьмут ядро 4.4 (которому уже ого-го), прикрутят туда репозитории из debian testing, натянут туда сову unity, и выдадут в Mir. Дождались. Целых два месяца прошло, и вот долгожданный БЕТА.

Поставив эту ОС, я разочаровался. Максимум похоже на жуткую alpha, с кучей багов и детских болезней, которые простительны самостоятельной системе, но никак не форку Убунты.

Итак, пару скриншотов.

Ах как эстетично смотрится круглая иконка Midori среди нормальных квадратных иконок в докбаре. Неужто за год нельзя было оквадратить очертания? 







И даже дизайн (то чем так важно кичились разработчики) начал хромать. Только посмотрите - белое окно (наверное), без заголовка, с хаотично разбросанным текстом...Им явно нужно скооперироваться с ребятами из Arc.





Найденные сразу же баги.


1. Жуткие тормоза. Убунта в Кедах курят в сторонке. Мой Pentium Skylake + 8Gb DDR4 + PCI-E Samsung 950Pro - иногда лагает. Круто, а я только собирался поставить ее на EeePC с гигом мозгов.

2. Обновления можно устанавливать только по очереди. Здорово когда нужно обновить 50 приложений.

3. Libreoffice крашится с Segmentation Fault. Повторяю, компьютер 2016 года сборки, все по последним технологиям.

4. При загрузке долго ожидает. Секунд 30. Если подключена вебка. Без вебки грузится быстрее.

5. Lightdm не воспринимает тап (касание по тачпаду, которое имитирует левую кнопку мыши). Система воспринимает.

6. Иногда отказывается перезагружаться. sudo reboot работает всегда.

7. Нету меню "Закрепить в докбаре". Хотя отдельный plank его имеет.

8. Ноутбучные клавиши не работают. И дело не в ядре, то же самое ядро на Дебиане отлично регулирует громкость и яркость.

9. Та же самая потеря фокуса при переключении языка.

10. Та же самая необходимость ставить твики для изменения тривиальных настроек.

11. Та же самая мать ее, невозможность поставить CTRL+SHIFT для переключения языков.


В общем, ребята ГОД пропинали одно место, в итоге выпустили продукт с ошибками, которых уже лет 10 не имеет ни одно ДЕ. И даже предыдущие не исправили. Это плохо.

ElementaryOS не нужен


Если нужно красиво - можно ставить Debian + Cinnamon. Возможностей ого-го, в том числе поддержка плагинов. К десктопу, да. Захотели глобальное меню ? Плагин. Захотели таймер ? Плагин. Захотели запись экрана в видео ? Плагин в панель. Поддержка тем на высоте. Детские глюки быстро устраняются. А главное, разработчики выкатили новую версию, и она оооочень сильно отличается от предыдущей в лучшую сторону.

Если нужно быстро и красиво - можно ставить Debian + Xfce. Реально летает. Запускается быстрее, чем отпустишь кнопку мышки.

Не ставьте это убожество. По крайней мере ПОКАМЕСТ (а судя по предыдущей версии, Freya - никогда).


root
0

Апгрейды ПК
Новые разработки

Без комментариев
Linux NVM PCI-E SSD

Технологии 21-го века стремительно движутся вперед. Одна из таких технологий - SSD, призванная сменить (а на практике дополнить) устаревшую дисковую технологию HDD.

Основные достоинства SSD перед HDD уже знакомы всем, это - скорость доступа, скорость доступа к произвольным блокам, уменьшенные габариты, уменьшенное энергопотребление и как следствие нагрев.

Несмотря на преимущества SSD перед традиционными дисками, этой технологии очень много лет. Я бы даже сказал больше чем жестким дискам, однако в силу дороговизны, тогда (в конце 70-хх - 80-е) они стоили не в полтора-два раза больше обычных дисков, а раз в двадцать. При этом очень быстро изнашивались и занимали чуть ли не столько же, сколько и материнская плата.

На данный момент SSD - это фактически флешка с интерфейсом...а вот мы и плавно подошли к главной теме. Если кратко, то интерфейс носителя информации - это шина со своими стандартами, плюсами и минусами, со своим набором команд, при помощи которой девайс подключается к компьютеру (центральному процессору, или южному мосту - не имеет значения). Этот интерфейс - уровень между устройством и операционной системой, с которым одинаково успешно работает и устройство и операционная система. Не стоит путать интерфейс с форм-фактором разъема, поскольку интерфейс - программная штука, а разъем - аппаратная, и скажем так, вам ничто не помешает сделать кабель соединения вашего жесткого диска из LAN-кабеля с разъемами RJ-45, правда сетевым от этого ваш диск не станет. Итак, разъем (или форм-фактор, хотя не совсем корректно) - это всего лишь реализация подключения устройства. Интерфейс, он же протокол - набор программных стандартов для работы ОС с устройством, подключенным через этот разъем.

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

Одним из таких интерфейсов является SATA, а точнее AHCI. В этом случае наименования вообще запутаны. Изначально SATA - был полноценным стандартом, затем из него сделали общее название для системы носителей информации, подключаемого при помощи шести проводов, последовательным подключением (т.е. одно устройство на порт) и набором AHCI-команд, которые в свою очередь поддерживают стандарт NCQ - очередь, если по нашему.

Чтобы устройству быть SATA, ему не обязательно иметь SATA-разъем, оно может быть выполнено в формате eSATA, в формате mSATA (больше напоминающем MiniPCI), даже в формате полноценного PCI и подключаться через эту шину. Просто оно будет эмулироваться, и система не будет его видеть как PCI, а будет видеть как SATA и работать с ним как с SATA.

На данный момент максимальная скорость чтения через SATA - 600 Мбс, и это продиктовано в первую очередь электрическими ограничениями, не так легко передать через 4 провода на высоких скоростях. И 600 Мбс - вполне себе отличная скорость, учитывая что скорость отдачи информации с блина жесткого диска - физически порядка 90 Мбс, а скорость чтения флешки вообще 60 Мбс, теоретическая, максимальная. В общем 600 Мбс вполне хватало с головой для жестких дисков. Пока не появились SSD. Набор микросхем памяти отдает информацию на очень высоких скоростях, кроме всего ему не свойственно большое время поиска, и не свойствены простои при записи. Прогрессу понадобился всего лишь год, чтобы приблизиться вплотную к ограничению порта, и еще год, чтобы в несколько раз перегнать его.

Чтобы нивелировать эти простои, был придуман новый интерфейс - NVM Express. Компании которые его разрабатывали, продумали все до мелочей. Уменьшение задержек, стандартизация всех костылей, управление доступом, параллельный доступ (многоядерные CPU одобряют), механизм очередей, обработка прерываний, упрощение управляющих команд, и много чего другого. Получившаяся солянка вполне способна удивить родившихся в 20-м веке людей: средняя скорость чтения - 2.5 Гбс. Потрясающе.

Однако очень скоро обнаружился тот же самый недостаток что и в случае микросхем памяти с SATA-интерфейсом, и в том месте, где его совсем не ждали - в архитектуре программного обеспечения. 

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

Итак, тема статьи - ускорение Linux на SSD NVM Express - Samsung N950 Pro


Вводные данные:

Материнская плата MiniITX MSI B150I Gaming Pro

Процессор Intel Pentium G4400 Skylake

ОЗУ 8Gb DDR4 2133MHz

SSD M.2 NVME Samsung 950Pro, скорость чтения - 2500 Мб/c, скорость записи - 1500 Мб/c

Операционная система Debian 8.4 (на самом деле не имеет значения)

Жуткие тормоза при загрузке, и при работе. С установленным DE Cinnamon, эта конфигурация открывает Firefox за 2-3 секунды, что не есть гут. Должна мгновенно.


Рассмотрим последовательно процесс загрузки от начала и до готовности работы:

Сперва загружается BIOS. Или UEFI - не суть важно. Эта микропрограмма инициализирует устройства и ищет загрузчик на одном из носителей информации. Этот загрузчик - MBR или файл UEFI, в свою очередь загружает полноценный лоадер, в нашем случае это GRUB. Лоадер читает свой конфигурационный файл, /boot/grub/grub.cfg и загружает субмодули, шрифты и выполняет скрипты, выводя список возможных ОС и их меню.

Когда мы нажимаем ввод на том или ином меню (с Линуксом, разумеется), наш GRUB подгружает дополнительные модули необходимые для доступа к разделу диска, некоторые графические модули. Потом он загружает в память ядро с строкой параметров, и так называемый ramdisk, initrd - сжатый набор модулей и библиотек, необходимый для начального старта. После загрузки рамдиска, ядро передает управление файлу /init, который находится на том разделе, который был указан параметром root= в строке параметров ядра. Система инициализации, она же init - набор скриптов разной степени извращенности в разное время, по сути являющихся автозагрузчиками сервисов, устройств, и так далее. Последним из этих скриптов является менеджер дисплеев, либо менеджер консолей.  Дальнейшая загрузка зависит от настроек конкретной ОС, они бывают разными, но чаще всего два варианта - либо выдается приглашение в случае менеджера консолей, либо выдается графическое приглашение в случае с дисплейным менеджером. Но не всегда. Оба способа могут иметь автологин (т.е. будет залогинен под пользователем без приглашения). Затем грузится интерпретатор (как правило это bash) в случае с консольной загрузкой, либо оконный менеджер(рабочий стол) в случае с графической загрузкой. Эти программы являются практически конечными, за исключением их собственных автозагрузок, которые могут содержать в себе подключаемые вкусности вроде докбара, панелей, расцветок, и прочего мусора. Но это уже неважно.

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

Итак, первое что мы должны уяснить, как и в случае с HDD, лучше один большой файл, чем много мелких. "Лучше" здесь может варьироваться в широких пределах: десятимегабайтный файл загрузится быстрее, чем десят стокилобайтных (в сумме дающих всего лишь мегабайт). Как этого достичь - мы узнаем позже.

Второе - принцип KISS не всегда хорош, и отсутствие принципа KISS не всегда хорошо тоже. Напомню, этот принцип гласит делать одну вещь одним инструментом, не изобретая комбайны. В нашем случае загрузки, даже не вдаваясь в подробности видно, что некоторые нюансы делаются по нескольку раз. Пример - загрузка драйверов на диск и ФС. Ну бред же, если GRUB загрузился, значит диск УЖЕ доступен, и не нужно подгружать драйверы в initrd, а затем в ядре. Как от этого избавиться - мы тоже узнаем позже.

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


Что же нам нужно сделать?

Во-первых, избавиться от прокладок. Прокладки от которых легче всего избавиться без лишней головной боли - это как ни странно initrd и дисплейный менеджер. Для того чтобы избавиться от первого - нужно всего лишь закомментировать одну строчку. Чтобы избавиться от второго - его нужно просто не ставить, или удалить если уже поставили. То есть добиться консольной загрузки.

Во-вторых, заставить нашу ОС грузить все фичи для ускорения работы.

В-третьих, сделать так, чтобы по возможности все грузилось только одним файлом.

Поскольку простое избавление от initrd приведет к невозможности загрузки (ядро не сможет загрузиться), да и фичи просто так не появятся, единственный способ сделать это - пересобрать ядро.

Это легко. Особенно на debian-based системах, Debian, Ubuntu, Elementary, Mint и прочих. На других конфигурирование будет точно таким же, но сборка может немного отличаться. Какие пакеты нужно качать и ставить, я объяснять не буду, об этом можно почитать здесь (откроется в новом окне)


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

Далее я просто напишу какие параметры нужно сконфигурировать для пущего ускорения и поддержки фич на устройствах NVM Express:

General setup  ---> Kernel compression mode ---> выбираем XZ. Этот алогоритм сжатия наиболее быстр, пусть и не очень экономен.

General setup  ---> Timers subsystem  --->  Выбираем Periodic timer ticks (constant rate, no dynticks) - наш процессор сам разберется как ему работать с задачами, не нужно ему мешать

Processor type and features  ---> Выбираем максимально приближенный процессор к нашему, и его некоторые фичи, поддержку Hyperthreading, или просто многоядерности.

Preemption Model ---> Preemptible Kernel (Low-Latency Desktop) - это позволит максимально быстро обрабатывать все задачи

Timer frequency ---> 300 HZ - выше нет смысла, процессор будет зря дергаться, ниже - тоже, иначе реакция системы будет запоздалой.

Device Drivers  ---> <*> NVM Express block device - ставим звездочку, этот драйвер должен быть вкомпилирован в ядро

Device Drivers  ---> SCSI device support  ---> [*] SCSI: use blk-mq I/O path by default - обязательно. Это позволит системе ввода вывода использовать параллелизм при чтении или записи на NVM-носителе

Остальные параметры вы должны выставить сами, исходя из наличия или отсутствия устройств на вашем компьютере

Идем дальше.

File systems  ---> <*> The Extended 4 (ext4) filesystem - в случае если вы используете ext4 или ext3. Иными словами, вы должны вкомпилировать в ядро ту ФС, которая установлена у вас.

File systems  ---> <*> FUSE (Filesystem in Userspace) support - это позволит монтировать диски в графических оболочках

File systems  ---> DOS/FAT/NT Filesystems  ---> Здесь можно поставить все звездочки, или все модули, это нужно только если у вас есть файловые системы отличные от корневой. Флешки, диски, и так далее.

Не забудьте так же выставить необходимые вашим НЕлинукс ФС, кодировки в меню Native language support  --->


После компиляции и установки нового ядра, нам стоит отредактировать файл /boot/grub/grub.cfg и закомментировать строчку с вызовом нашего initrd. Если вы его оставите - ничего страшного не случится, но система будет загружать два раза одни и те же модули. Если вы его закомментируете - ничего страшного так же не произойдет, ведь вся ваша информация никуда не удалится. После этого в строке загрузки вашего ядра, нужно изменить параметр root с символьного UUID-устройства, на его блочный путь, например root=/dev/nvme0n1p2

После перезагрузки по идее, новое ядро и в целом система, должны загружаться ощутимо быстрее, и занимать меньше места на диске и в памяти. Если вы не смогли загрузить ядро (точнее оно не смогло примонтировать системный раздел и упало в "kernel panic-not syncing: VFS: unable to mount root fs" - это означает что вы неверно указали системный раздел в параметрах ядра, или забыли вкомпилировать драйвер, специфичный для вашей ОС (например вкомплилировали поддержку ext4, но забыли btrfs, и именно на нем расположена ваша система).




Продолжение следует...


root
7

Информационная безопасность
PHP
Tweaks
Фриланс
Upwork

Без комментариев
Записки системного администратора

Эта статья - не для чтения. Эта статья - how-to, чтобы самому не забывать некоторые вещи.

Однако буду рад, если она кому-то поможет.


EMAIL

https://www.mail-tester.com/spf-dkim-check - весьма полезный ресурс для проверки корректности SPF и DKIM записей e-mail. Дается временный электронный адрес, на который нужно отослать письмо, а после получить список советов по коррекции записей.


DNS

https://www.whatsmydns.net - ресурс для проверки записей домена с функцией детального отображения по популярным DNS-серверам в мире. Помогает при переключении DNS выяснить, где зона уже обновилась, а где еще нет. Плюс ко всему можно выбрать ожидаемый IP-адрес, и увидеть визуально, на каких DNS-серверах он уже обновился, а на каких - еще нет.


HOSTING

Активация fcgi-cache в связке nginx+php-fpm. Сильно ускоряет производительность, ценой периодического обновления динамичной информации. То есть, включив эту фичу и обновив свой контент, придется немного подождать, пока изменения увидит остальной мир. Ну или же перезапустить nginx. Итак, /etc/nginx/nginx.conf

Ищем секцию http {...} и добавляем в нее такое:

fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
Затем ищем секцию нашего сайта, которая отвечает за обработку PHP (чаще всего это location ~ [/].php(/$) {)

fastcgi_cache MYAPP;
fastcgi_cache_valid 200 60m;


HOSTING

Wordpress Nginx rewriterule, он же Wodpress Nginx modrewrite, он же Wodpress Nginx permalinks. Редактируем наш файл виртуалхоста, или просто nginx.conf, ищем секцию отвечающую за наш сервер, и добавляем туда

if (!-e $request_filename)
{
rewrite (.+)$ /index.php?q=$1 last;
}

HOSTING

Если у вас ужасно тормозит сервер, вы не видите этому видимых причин, то скорее всего вы взломаны. Этот абзац для тех, кто наблюдает тормозящие систему процессы, при запуске top. Причина этому - rootkit. Приложение которое как бы незаконно на вашей ОС, но загрузилось туда не через уязвимости ОС, а потому что вы разрешили прямое подключение пользователя root, еще и поставили ему легкий пароль. Итак, самое правильное что нужно сделать - это подключить диск зараженного сервера, к чистому Linux-компьютеру. Это может быть так же Rescue-mode в случае VPS. Соответственно, подключенный диск должен быть примонтирован к вашей системе, и вам нужно сделать туда chroot. После того как вы сделали успешный chroot в примонтированный диск, вам нужно искать где на самом деле лежит ваш троян. Сперва, сделайте cd / - затем, ls -lrt - это выведет нам список файлов по дате изменения. После чего нам придется шариться папка за папкой, удалять все новосозданное. Затем выполнить crontab -e и удалить оттуда ссылку на gcc.sh (предварительно скопировав ее). После чего удалить вредоносный скрипт физически. Напоследок отредактируйте файл /etc/sshd/sshd_config и поставьте PermitRootLogin=No


HOSTING

Как заставить nginx тянуть контент из совсем другой папки, при обращении к какой-либ подстранице сайта

  location /web/application {
        alias /var/www/webapp;
  location ~ .php$ {
        try_files $uri /index.php;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
                              }
                                           }


HOSTING

Посчитать количество обращений с каждого IP к серверу с помощью /var/log/nginx/access.log

cut -f1 -d ' ' access.log sort uniq -c sort -g -r


EMAIL

Очистить письма из очереди exim

exim -bp exiqgrep -i xargs exim -Mrm


HOSTING

На некоторых dedicated, стоят ФС XFS. Жутко нестабильное говно, способное закрашиться в самый неподходящий момент, после чего ОС перестает грузиться. Чтобы победить ошибку, необходимо запустить xfs_repair -P -L -v -o bhash=8192 /dev/УСТРОЙСТВО, жирным отмечены опции без которых xfs_repair может зависнуть на этапе traversing filesystem... на больших разделах.

Посмотрите так же: Записки системного администратора и Восстановление InnoDB MySQL


Вы должны войти в систему, чтобы создавать блоги

2-5 / 2-1