====== Неравномерное назначение кэш дисков ====== Иногда в силу работы встроенного механизма распределения нагрузки журналы на SSD дисках в системе хранения Р-Хранилище создаются не равномерно или вообще не попадают на SSD а находят место на том-же диске. ===== Симптомы ===== Для простой проверки распределения журналов по дискам необходимо выполнить команду: ls -alh /vstorage/*/journal Пример вывода на снимке экрана ниже: {{:blog:2022:12:01:20221201-202733.png}} Также на диске могут быть обнаружены "мертвые" ссылки на чанк серверы которые уже удалены, пример такого сервера на снимке ниже: {{:blog:2022:12:01:20221201-203837.png}} Тип диска проще всего определить по его объему командой df -h Пример вывода на снимке экрана ниже: {{:blog:2022:12:01:20221201-202926.png}} В данном случае расположение журналов следующее: * на диске /dev/sdb1 расположены два журнала для чанк сервисов №1025 и №1026; * на диске /dev/sdd1 расположен журнал для чанк сервиса 1027; * на диске /dev/sdc1 расположен журнал для чанк сервиса 1028; Такое распределение является нормальным, так как сервер оснащен тремя кэширующими дисками и четырьмя дисками для хранения. Проверить соответствие чанк серверов физическим дискам необходимо командой: vstorage list-services -c %CLUSTER_NAME% Где: * %CLUSTER_NAME% - имя кластера Р-Хранилище. ===== Причины ===== * Изменение конфигурации Р-Хранилища после назначения кэш-дисков; * Добавление дисков хранения после назначения кэш-дисков; * Слишком маленькое количество SSD дисков на систему; * Слишком маленький суммарный объем SSD дисков по отношению к объему HDD дисков; ===== Восстановление ===== ==== Вариант с изменением размера журнала ==== - Рассчитать количество журналов которые должны быть размещены на каждом SSD диске по формуле %КОЛ-ВО CS сервисов% / %КОЛ-ВО SSD для кэширования%; - Рассчитать оптимальный объем журнала для каждого ''cs'' сервиса по формуле: %объем SSD% * 0.8 / %Кол-во HDD на каждый SSD%; - Проверить сколько журналов расположено на каждом SSD диске с ролью "Кэш" можно командой ''ls -al /vstorage/*/journal''. - Необходимо удалить все ''cs'' сервисы, журналы которых ошибочно оказались на этих же дисках а не на SSD; - Далее на каждом SSD диске необходимо оставить количество журналов, не превышающее расчетное. Для этого необходимо: - Получить список журналов SSD диска командой ''ls -ls /vstorage/*/journal''; - Получить соотношение идентификатора ''cs'' сервиса и локального диска командой ''vstorage list-services -c %CLUSTER_NAME%''; - Удалить из консоли веб-управления ''cs'' сервисы для достижения необходимого количества журналов на каждом SSD диске; - Очистить SSD диски от следующих ненужных файлов: - неиспользуемые журналы, к которым нет символических ссылок(({{:wiki:trouble:rosplatforma:uneven-cache-distribution:20221202-135337.png}})); - символические ссылки, которые никуда не ведут (({{:wiki:trouble:rosplatforma:uneven-cache-distribution:20221202-140000.png}})); - Изменить размер журнала всех созданных сервисов ''cs'' командой: for f in /vstorage/*/cs; do echo f$; vstorage -c %cluster_name% configure-cs -r $f -s %размер журнала%; sleep 1m; done - На свободных HDD дисках создать новые ''cs'' сервисы по одному; - Проверить равномерность распределения файлов журнала и при необходимости: - Удалить ''cs'', журнал которого назначен не на тот SSD; - Для выравнивания занятого пространства запустить скрипт изменения размера журнала; - После достижения одинакового количества файлов журналов на всех SSD дисках при всех созданных ''cs'' сервисах необходимо: - Проверить равномерность расхода дисковой емкости SSD, командой ''df -h'' - В случае если занятая дисковая емкость на SSD дисках распределена не равномерно запустить скрипт изменения размера журнала; ==== Вариант с пересозданием файла журнала из CLI==== - Удалить старый журнал созданный не в том месте, командой: ``vstorage -c имякластера configure-cs -r /vstorage/IDчанкСервисаИЛИIDдискаSSDcКЭШ/journal/имяЖурнала -d`` - Рассчитать размер журнала по формуле: Полезная емкость SSD (372ГБ) * 0.8 (80%) = 297ГБ / 4(HDD на один SSD диск)=74ГБ - Создать журнал вручную, командой: ''vstorage -c имя кластера configure-cs -r /vstorage/IDчанкСервиса/cs -a /vstorage/IDдискаSSDcКЭШ/journal/ИмяФайлажурналаСчанкаСервиса -s 75776'', где 75776- размер журнала в МБ.