Re: Еще раз о дисковой подсистеме
Gena Makhomed
gmm на csdoc.com
Чт Авг 18 14:59:58 UTC 2011
On 18.08.2011 16:48, Илья Винокуров wrote:
> Так вот, при параллельной работе нескольких потоков запросы к массиву будут параллелиться между дисками.
теоретически - скорость работы может вырасти до 2 раз
путем уменьшения объема массива в 2 раза. причем, арифметика
тут достаточно простая, вместо 2 можно взять любое число.
например, можно достичь скорости чтения примерно в 5-10 раз больше,
если собрать RAID10 из двух компонент, каждая из которых
будет зеркалом из 5 винтов, из которых потом сделан RAID0.
но для этого - RAID 10 не нужен. для "горячего" контента
можно использовать SAS винт или зеркало из 2, 3, ... винтов.
> Рассматриваем ситуацию, когда разным процессам нужны разные блоки данных одного длинного файла.
> В схеме же с отдельными дисками один популярный длинный фильм может убить весь сервер, который
> только и будет делать, что ждать задыхающийся винт.
это единственная проблема? "горячий" файл можно автоматически/вручную
перенести на отдельный быстрый sas винт, или автоматически/вручную
скопировать его на некоторые/все винты, отдавая с нескольких винтов
полностью независимо и паралельно, получая тем самым максимальную
скорость отдачи этого "горячего" файла. потом - если количество
операций чтения этого файла упадет - лишние копии с других винтов
можно будет автоматически или вручную убрать. если необходимо
резервирование на уровне лучше чем может дать RAID10 - тогда
держать как минимум две полные копии файла на разных винтах.
п.с. возможно это уже даже реализовали в какой-то файловой
системе (ZFS/BTRFS), или же такую фичу можно туда добавить,
если совсем не хочется делать такую операцию своими силами.
>> Для современного диска нет ощутимой разницы в чтении 1К или 1М. Поэтому
>> читать с нескольких дисков блоки по 128К, чтобы набрать 1М - бессмысленно.
> Поэтому я и предложил увеличить размер блока данных.
не поможет. операция seek гораздо более "дорогая" чем кажется. поэтому
скорость линейного чтения гораздо выше, чем скорость рандомного чтения.
> Конечно же, речь идет о софтовом решении. По моему мнению будущее за софтовыми RAID массивами,
> а точнее за RAIDовыми FS.
теоретически - ZFS самое лучшее решение. практически - оно не работает.
наверное нам надо будет ждать, пока не появятся 128-битные процессоры.
>> И всё равно он не полностью решает проблему - при попадании на границу
>> будут задействованы два диска вместо одного ?
> Если рассматривать работу в системе кучки процессов, насилующих RAID массив, то факт попадания одного
> файла на границу не играет никакой роли.
играет, потому что это снижает производительность всего массива.
например, если вместо RAID0/RAID5/RAID6/RAID10 используется RAID1
или полностью независимые друг от друга диски - этого глюка нет,
и дисковая подсистема сервера будет работать более эффективно.
> Главное, чтобы план чтения блоков с конкретного диска был оптимальным.
это не главное.
главное, чтобы это програмно-аппаратное решение могло дать максимальную
производительность (максимальный траффик при рандомном и паралельном
доступе на чтение с такого массива большим количеством клиентов)
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru