Неравномерное назначение кэш дисков

Иногда в силу работы встроенного механизма распределения нагрузки журналы на SSD дисках в системе хранения Р-Хранилище создаются не равномерно или вообще не попадают на SSD а находят место на том-же диске.

Симптомы

Для простой проверки распределения журналов по дискам необходимо выполнить команду:

 ls -alh /vstorage/*/journal 

Пример вывода на снимке экрана ниже:

Также на диске могут быть обнаружены “мертвые” ссылки на чанк серверы которые уже удалены, пример такого сервера на снимке ниже:

Тип диска проще всего определить по его объему командой

df -h

Пример вывода на снимке экрана ниже:

В данном случае расположение журналов следующее:

  • на диске /dev/sdb1 расположены два журнала для чанк сервисов №1025 и №1026;
  • на диске /dev/sdd1 расположен журнал для чанк сервиса 1027;
  • на диске /dev/sdc1 расположен журнал для чанк сервиса 1028;

Такое распределение является нормальным, так как сервер оснащен тремя кэширующими дисками и четырьмя дисками для хранения.

Проверить соответствие чанк серверов физическим дискам необходимо командой:

vstorage list-services -c %CLUSTER_NAME%

Где:

  • %CLUSTER_NAME% - имя кластера Р-Хранилище.

Причины

  • Изменение конфигурации Р-Хранилища после назначения кэш-дисков;
  • Добавление дисков хранения после назначения кэш-дисков;
  • Слишком маленькое количество SSD дисков на систему;
  • Слишком маленький суммарный объем SSD дисков по отношению к объему HDD дисков;

Восстановление

Вариант с изменением размера журнала

  1. Рассчитать количество журналов которые должны быть размещены на каждом SSD диске по формуле %КОЛ-ВО CS сервисов% / %КОЛ-ВО SSD для кэширования%;
  2. Рассчитать оптимальный объем журнала для каждого cs сервиса по формуле: %объем SSD% * 0.8 / %Кол-во HDD на каждый SSD%;
  3. Проверить сколько журналов расположено на каждом SSD диске с ролью “Кэш” можно командой ls -al /vstorage/*/journal.
  4. Необходимо удалить все cs сервисы, журналы которых ошибочно оказались на этих же дисках а не на SSD;
  5. Далее на каждом SSD диске необходимо оставить количество журналов, не превышающее расчетное. Для этого необходимо:
    1. Получить список журналов SSD диска командой ls -ls /vstorage/*/journal;
    2. Получить соотношение идентификатора cs сервиса и локального диска командой vstorage list-services -c %CLUSTER_NAME%;
    3. Удалить из консоли веб-управления cs сервисы для достижения необходимого количества журналов на каждом SSD диске;
  6. Очистить SSD диски от следующих ненужных файлов:
    1. неиспользуемые журналы, к которым нет символических ссылок1);
    2. символические ссылки, которые никуда не ведут 2);
  7. Изменить размер журнала всех созданных сервисов cs командой:
    for f in /vstorage/*/cs; 
      do 
        echo f$; 
        vstorage -c %cluster_name% configure-cs -r $f -s %размер журнала%; 
        sleep 1m; 
      done 
  8. На свободных HDD дисках создать новые cs сервисы по одному;
  9. Проверить равномерность распределения файлов журнала и при необходимости:
    1. Удалить cs, журнал которого назначен не на тот SSD;
    2. Для выравнивания занятого пространства запустить скрипт изменения размера журнала;
  10. После достижения одинакового количества файлов журналов на всех SSD дисках при всех созданных cs сервисах необходимо:
    1. Проверить равномерность расхода дисковой емкости SSD, командой df -h
    2. В случае если занятая дисковая емкость на SSD дисках распределена не равномерно запустить скрипт изменения размера журнала;

Вариант с пересозданием файла журнала из CLI

  1. Удалить старый журнал созданный не в том месте, командой: ``vstorage -c имякластера configure-cs -r /vstorage/IDчанкСервисаИЛИIDдискаSSDcКЭШ/journal/имяЖурнала -d``
  2. Рассчитать размер журнала по формуле: Полезная емкость SSD (372ГБ) * 0.8 (80%) = 297ГБ / 4(HDD на один SSD диск)=74ГБ
  3. Создать журнал вручную, командой: vstorage -c имя кластера configure-cs -r /vstorage/IDчанкСервиса/cs -a /vstorage/IDдискаSSDcКЭШ/journal/ИмяФайлажурналаСчанкаСервиса -s 75776, где 75776- размер журнала в МБ.