понеделник, 4 май 2009 г.

Някои особености при работата със SSD в Linux


SSD (Solid State Drives)-твърдотели дискови устройства - не знам на български как би било най-правилно да се преведе, но и не мисля да го правя, защото терминът доби популярност. Та - SSD са една от интересните новости в IT индустрията през последните десетина години. Те са устойчиви на удари и сътресения, консумират по-малко енергия, отделят по-малко топлина и са с много бърз достъп. Ако имате PC оборудван със SSD, също както повечето нетбуци от фамилията Еее PC, има няколко особености за по-добра работата с тях и удължаване на живота им, тъй като съвременните операционни системи, все още не са оптимизирани по подразбиране за работа с тях (изключвам тези, които са преинсталирани от производителя). Няма да се спирам тук на въпроса, защото темата на статията не е тази, но накратко най-неприятната особеност на твърдотелите дискове (освен цената им все още) е фиксирания брой записи, които могат да осъществят преди да дефектират. За най-разпространените устройства в момента тя е около 100000 (сто хиляди) цикъла... На пръв поглед цифрата говори и много и нищо, но характерното тук е, че програмата, осъществяваща работата на самото устройство на ниско ниво, разпределя физически записваната информация по такъв начин върху елементите на диска, че те да са натоварени равномерно във времето. Доста се изписа по този въпрос, откакто SSD станаха популярно решение, но на практика "животът" им значително надвишава живота на един HDD при нормална, ежедневна работа.
И така, ето няколко съвета, които ще дадем :

1.

За файлова система на вашия SSD е най-добре да предпочетете някоя от НЕ-журналните (примерно ext2)... Поддържането на журнала в една такава ФС е свързано с писане върху фиксирани места по нея, което е в разрез със споменатото по-горе изискване за намаляване до минимум на писането по диска (правя тук забележката, че това не е общоприето мнение - в преинсталирания Xandros на Еее PC 901 user-дялът е форматиран с ext3...).
Освен това, най-добре е такова устройство да се монтира с опцията noatime. По подразбиране Linux ще записва вашите файлове с активирана опция -last accessed time. Това би намалило живота на вашия диск увеличавайки броя на записванията, тъй като независимо от това дали сте отворили даден файл само за четене, след приключване на работата по него файловата система ще обнови атрибута му за време/дата. Опцията noatime ще изключи този режим. Къде става това? Естествено във файла /etc/fstab...

2.

За да спестим допълнително писане по диска можем да си създадем рамдиск (особено тези, които имат повече от 1GB RAM) и да го посочим, като място използувано за временните файлове. Отворете пак /etc/fstab и добавете следния ред в него :


tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

рестартирайте, и сега можете да проверите – при изпълнение на df в списъка на монтираните системи ще видите нещо такова :

tmpfs 513472 30320 483152 6% /tmp

3.

Firefox по подразбиране използува за кеш на временните си файлове домашната ви папка. Премествайки този кеш за съхранение във вече създадения рамдиск не само ще намалите писането по физическото устройство, но и ще ускорите работата на браузъра, понеже достъпа до RAM е доста по-бърз от този до която и да е външна памет. Отворете about:config на Firefox. С десен клик на мишката в полето създавате нов string value с име – browser.cache.disk.parent_directory и и задавате стойност /tmp.

4.

В Linux подразбиращия се режим на четене/запис на данните ( I/O scheduler) е cfg - completely fair queuing . По-общо казано това означава, че ресурсите между приложенията са разпределени по начин еквивалентен на дяла им от общото процесорно време. Този режим работи добре при обикновени HDD дискове, но досегашния опит е показал, че при SSD създава проблеми. Да кажем, при записване на голям файл, всички останали приложения ще изчакват, докато завърши тази операция, което води до неприятни увисвания на системата на моменти. Това е по-скоро недостатък, присъщ на Eee PC, защото SSD на който е личната директория на потребителя (sdb) е малко бавен, все пак е гонен нисък ценови сегмент на нетбука...
Режимът може да се промени, без да се рестартира компютъра, ето как. Първо проверете режимите, които имате на разположение:

cat /sys/block/sdb/queue/scheduler

Тук sdb може да е и друго, според случая. Обикновено имате четири възможности, като използувания режим е ограден с квадратни скоби (резултатът от предишната команда) :

noop anticipatory deadline [cfq]

Две от тях са по-добрия избор при работа със SSD: noop и deadline (при noop всички приложения се подреждат на, един вид проста опашка по реда на заявка, докато deadline прилага критерия "краен срок за приключване на I/O операция" и сортира приложенията, освен по реда на заявка и по него) . Приложенията пак ще изчакват, но само за няколко секунди докато диска е отново свободен. Не е кой знае какво, но е по-добре от cfg... Правя тук уговорката, че давам доста елементарни определения за режимите на scheduler в една Linux-система, доколкото е необходима известна яснота за какво става дума.
Ето как да зададем нов режим :

echo deadline > /sys/block/sda/queue/scheduler

Отбелязвам, че тази промяна трябва за се извърши само като root, при това не чрез sudo... Още нещо – за да остане това в сила при обновление на ядрото, защото повечето дистрибуции презаписват повечето такива настройки ще направим още нещо. Във файла menu.lst в /boot/grub/ има един ред с параметри, които се пазят при ъпгрейд – редът kopt... изглежда така:

# kopt=root=UUID=6722605f-677c-4d22-b9ea-e1fb0c7470ee ro

В никакъв случай не махайте знака за коментар !!! Само в края на реда добавете следното :

elevator=deadline

Запазете и затворете файла, след това не забравяйте update-grub...

Ако случайно сте любопитни да узнаете колко е бърз вашия SSD, може да направите следния тест :

sudo hdparm -t /dev/sdb

Няма коментари:

Публикуване на коментар