Как да сверим часовника на VPS (виртуална машина)
Наскоро ми се наложи да сверявам часовника на една от машините на bgmafia.com
До тук всичко е ок, с изключение на това, че машината се оказа VPS. Слез известно време и ровене из google попаднах на интересните думи (не буквален превод) – “не можете да сверите часовника на VPS, защото той се наследява от часовника на host машината”.
Q: Как да сверим часовника на VPS (виртуална машина)
A: Като сверим часовника на host машината
Categories: Linux
Използването на VPS като термин няма нищо общо с виртуална машина. Използва се главно за споделен хостинг под GNU/Linux, при което единственото, което се виртуализира е достъпът до файловата система, мрежовите ресурси и паметта. Виртуализацията е до толкова, до колкото да те затвори в твоя свят, за да не виждаш останалите, които съществуват върху машината. Т.е. на практика ядрото не ти дава да заемеш повече от X рам, не ти дава да пуснеш повече от Y процеса, подава ти само пакетите за и от IP адрес Z и в повечето случаи не ти дава да си създадеш повече от N inode-а върху файловата система, защото и тя е споделена в повечето случаи между всичките VPS-и ползващи машината …… и ти налага още един тон ограничения от към ресурсите, които можеш да ползваш. Разликата с виртуалните машини е, че при тях клиентът получава достъп до виртуален хардуер и може да си говори с него през каквато и да е операционна система. Т.е. може да си сложиш и puppy-linux или solaris, ако щеш.
Та като собственик на VPS под GNU/Linux получаваш 2 привилегии:
* наблюдателят да стартира 1 процес по избор от твоята папка, когато натиснеш бутона старт (a.k.a boot/power on)
* възможността този процес (както и другите) да си говорят с ядрото, което ти предоставя разни функции: да си пуснеш още процеси, да си заделиш памет, да получаваш пакети по мрежата и т.н.
Ако се питаш – защо само толкова, то отговорът е: за да е рентабилно да се пуснат 20 VPS-а на 1 машина, без тя да трябва да “виртуализира” през цялото време, вместо да изпълнява процесите на клиентите – възможно по-малко виртуализации -> повече време за изпълнение на клиентски код -> по-малко машини за Х на брой клиента.
Та, понеже ядрото е шефът и никой не е написал код за виртуализация на клиентския часовник
не можеш да си смениш времето – предполага се, че клиентите, както и наблюдателят искат да ползват универсалното време на земята, а не да си работят по тяхно си време => като не ти е наред часовника, значи приятелката на админ-а не е от тази планета (понеже той не трябва да закъснява за срещи, трябва да се води по нейното време, а както знаем времето е различно за всички
, но на земята отклоненията са пренебрежими )
За любознателните:
аналогът на VPS под FreeBSD е jail. Всеки затвор получава отличителен номер (jail id), който се прикрепя към данните идентифициращи всеки процес. Всеки затвор има достъп една директория (аналог на chroot), която вижда като главна, получава и достъп до 1 или няколко IP адреса и до там се свърша. Виртуализацията е проста: всеки процес може да говори с друг, който има същият jail id (т.е. принадлежи на същия затвор), получава мрежовите пакети за себе си и не вижда само директорията, до която има достъп затвора.
Разликата с VPS-ите под linux е липсата на други ограничения – памет, cpu, брой inodes, дисково пространство и т.н. За такива неща може да се ползват различни техники и програми.
Няма логика това да бъде така, ти сам определяш и разполагаш с ресурсите си, сам инсталираш операционна система