LINUX.ORG.RU

Тонкая настройка IDE-дисков с помощью hdparm


0

0

По заявкам читателей, в качестве приложения к статье ``Разбиение диска для увеличения производительности'' ( http://freesource.info/article/4.shtml ) публикуется статья по использованию hdparm.

>>> Подробности

А еще UDMA в hdparm можно прописывать вот так:

hdparm -d1 -X udma<N>

где N - ваш UDMA Mode

С уважением, ваш гуру!

anonymous
()

А куда потом это прописывать чтобы при старте применялось ? bashrc не предлогать :)

anonymous
()

> А куда потом это прописывать чтобы при старте применялось ? bashrc не предлогать :)

Куда-нибудь в локальный стартовый скрипт, типа rc.local, если в системе, разумеется, нет специального hdparm init скрипта. Все элементарно, Ватсон!

И еще, можно добавить ключ -q, это чтобы не получать разного рода сообщения...

С уважением, ваш гуру!

anonymous
()

А как бы сделать, Шерлок, эти установки
до стартовых скриптов? Из-за неправильно установки
появляются сообщения:
hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
Стартовые скирипта потом исправляют ситуацию.

Ватсон.

svs ★★★
()

2 svs

> Из-за неправильно установки появляются сообщения:
> hda: drive_cmd: status=0x51 { DriveReady SeekComplete Error }

cd /usr/src/linux

make config

[IDE, ATA and ATAPI Block devices]

Use multi-mode by default (CONFIG_IDEDISK_MULTI_MODE) [Y/n/?] n
This option allows us to fix possible error messages that can appear on IDE systems. This error message may look like:
hda: set_multmode: status=0x51 { DriveReady SeekComplete Error }
hda: set_multmode: error=0x04 { DriveStatusError }
If you get this kind of error message on your system, then you have to say Y to this option. We suppose that you have a good IDE disk drive and that this error will never appear for you, in this case, we will change the default value of Y to become N.

С уважением, ваш гуру!

anonymous
()

И еще, не факт, что это заработает для вашего диска.

С уважением, ваш гуру!

anonymous
()

А в чём фишка?
Проверял на разных дистрибутивах и каждый раз после загрузки системы все опции (всякие DMA) были включены и UDMA стоял по максимуму для данного диска! Чего улучшать-то? Играться с секторами и "всякое-такое"? Баловство ИМХО.
Когда мне нужно было добиться хорошего low latency от ядра, то гораздо эффективнее оказалась "игра в setpci" на предмет таймера.

PitStop
()

Была уже похожая статья, местами даже более полная от Piter Punk в переводе Андрея Киселева. Ссылку дать, к сожалению, не могу, ибо она у меня давно на винте валяется.

P.s. Там не только "всякие DMA" - еще есть размер буферов на чтение, количество прочитанных секторов вперед, упреждение и т.п. Лично у меня винт работал не используя максимальных возможностей.

jackill ★★★★★
()

2 anonymous(Гуру):
bash-2.05b# grep CONFIG_IDEDISK_MULTI_MODE /usr/src/linux/.config
CONFIG_IDEDISK_MULTI_MODE=n
И что дальше?

svs ★★★
()

а что значит unmaskirq? просто во всех буржуйских доках рекомендуют ставить unmaskirq=1 в мане по hdparm ничего не понял, кроме того что эта опасная опция :)

anonymous
()

Вообще-то можно еще было бы указать параметры шины для ideдисков через lilo :) в lilo.conf append="idebus=66"

и типа потом можно было бы уже играться с hdparm

anonymous
()

2jackill:
Не мог бы выслать ту статью (которая давно на HDD у тебя) мне на мыло (dederer-a <@> mail <.> ru)? Больно интересно почитать.

В тему: собираюсь прикупить HDD гигов на 60, пока остановился на:
Производитель: IBM
Модель: IC35L060AVV207-0
Интерфейс: UDMA 100
Тип подключения: IDE
Объем: 61
Буфер памяти: 2
Скорость вращения шпинделя: 7200
Время поиска с трека на трек: 1.1
Среднее время поиска: 8.5
Количество дисков/головок: 1/2

Мож кто знает, что за зверь. Или посоветует, что получше.

Korwin ★★★
()

2 svs

Ясное дело, Ватсон: попробовать скомпилять ядро с этой опцией!

С уважением, ваш гуру!

anonymous
()

2 jackill (*) (2003-07-04 12:15:09.908122)
> Там не только "всякие DMA" - еще есть размер буферов на чтение, количество прочитанных секторов вперед, упреждение и т.п.

Угу. Есть. И какой прирост производительности от этих "игр с буферами"? 2-3% в среднем приложении? Шкурка выделки...

PitStop
()
Ответ на: комментарий от trunk

to trunk :

>Мде, слюникс -- это тихий ужас. Менять режим работы винта
>после маунта дисков.

Мде, виндюк -- это тихий ужас. Система принудительно ставит PIO

http://www.hardwareanalysis.com/content/topic/6371

Квиты ? :0)

P.S: В каждой системе есть свои недостатки, в одной системе это
можно исправить, в другой такой возможности нет.

MrBool
()
Ответ на: комментарий от Korwin

to Korwin:

>В тему: собираюсь прикупить HDD гигов на 60, пока остановился на:
>Производитель: IBM
>Модель: IC35L060AVV207-0

Настоятельно рекомендую НЕ БРАТЬ эти DeskStar'ы. Умрёт он у тебя, а после
игрищ с hdparm умрёт ещё быстрее. Проверенно.

MrBool
()

У диска кэша маловато. Возьми на 8 Мег, будешь щастье. :)

anonymous
()

Холмс(гуру), именно с этой опцией ошибка и выдается.
Если не понятен результат grep...

svs ★★★
()
Ответ на: комментарий от Korwin

Добрый день

Сдох через месяц после окончания гарантии - причём сдох в течении двух дней (благо успел новый винчестер купить). Первые буква были такие же: IC35L060AVV - остальное не помню. У него возникают проблемы с <<игольчатым разъёмом>> - где-то статья валялась как это можно обойти (методом зашкуривания - не пробовал).

Сильно сомневаюсь, что это связано с hdparmом, потому как знаю ещё похожие случаи. Тоже жили чуть больше года. Хотя, раз на раз не приходится - можешь рискнуть.

С уважением Евгений

Evgueni ★★★★★
()
Ответ на: комментарий от anonymous

2anonymous (*) (2003-07-04 12:22:13.517281)

>а что значит unmaskirq? просто во всех буржуйских доках рекомендуют

>ставить unmaskirq=1 в мане по hdparm ничего не понял, кроме того что >

>эта опасная опция :)

Это актуально, у кого модем. В некоторых случаях эта опция позволяла держать коннект постоянным по скорости в независимости от активности диска.

anonymous
()

2 Korwin

man hdparm:

Опция -c:

Query/enable (E)IDE 32-bit I/O support. Поддерживаемые параметры: 0 - отключить поддержку 32-битного ввода/вывода, 1 - включить передачу данных в 32-битном режиме, и 3 - включить передачу данных в 32-битном режиме со специальной sync последовательностью, требуемая многими чипсетами.

Как говорится в мануалке, можно включить опцию -c3, так как этот режим работы поддерживют все 32-bit IDE чипсеты.

Опция -d -X:

-d0, -d1 - выключить/включить поддержку DMA, соответсвенно. Часто опция -d идет в паре с опцией -X, которая позволяет включать соответствующий режим DMA.

Например: hdparm -d1 -X udma5 /dev/hda включает DMA в режиме UltraDMA 5

Опция -k:

Сохранение опций, выставленные опциями -dmu после софт ресета (например, операция востановления после ошибок)

Опция -K:

Практически то же самое что и с предыдущей опцией, но для опций -APSWXZ.

Не все диски поддерживают эту опцию.

Опция -m:

Установить кол-во секторов для диска со множественными секторами ввода/вывода. Эту особенность поддерживают многие современные жесткие диски IDE, что, в свою очередь дает возможность делать передачу множественных секторов за одно прерывание, а не как обычно: один сектор за одно прерывание. Когда включена данная опция, она позволяет уменьшить системную нагрузку дискового ввода/вывода на 30-50%. Также, на некоторых системах данная опция дает 5 до 50 процентов прироста в пропускной способности системы. Но некоторые диски (наиболее приметные из серии WD Caviar) работают медленнее с этой опцией. Многие диски поддерживают минимальные значения в 2, 4, 8 или 16 (секторов). Все зависит от типа диска, который вы используете. Значения 16 или 32 являются оптимальными на многих системах. Western Digital рекоммендует использовать низкие значения 4, 8 для большинства из своих дисков из-за маленького (32кБ) дискового буфера и неоптимизированных алгоритмов буфера.

Вы можете воспользоваться опцией -i, чтобы узнать максимальное значение, которое вы можете выставить на диске. Просто посмотрите чему равняется параметр MaxMultSect.

И еще, многие диски "вроде бы" поддерживют эту опцию, но теряют данные на некоторых настройках, что может, в редких случаях, привести к краху файловой системы.

Опция -u:

Get/set interrupt-unmask flag for the drive. Если данная опция установлена 1, то очень заметно повышается реакция системы и позволяет избежать некоторые ошибки типа "serial port overrun". Используйте данную опцию очень осторожно. Она ненадежно работает на некоторых дисках/контроллерах, что может привести к краху файловой системы.

Опция -W:

Включить/выключить поддержку кеша-записи (начальное значение/состояние не известно; зависит от производителя/модели)

Опция -а:

Get/set sector count for filesystem read-ahead. Здесь можно выставить значение, выставленное опцией -m


В итоге получаем (приведены настройки на моем диске):
-----------------------------------------------------

hdparm -a16 -c3 -d1 -X udma5 -k1 -K1 -m16 -u1 -W1 /dev/hda

Вот и все! Вся информация взята из мануалки hdparm!

С уважением, ваш гуру!










magic
()

2 svs

hda: set_multmode: status=0x51 { DriveReady SeekComplete Error }
hda: set_multmode: error=0x04 { DriveStatusError }
If you get this kind of error message on your system, then you have to say Y to this option.

Перевожу: если вы получаете на ваше системе ошибку такого типа, то вы должны сказать Y для этой опции.

Понятно?

magic
()

2Evgueni (*) (2003-07-04 13:32:13.761663)

> У него возникают проблемы с <<игольчатым разъёмом>> - где-то статья валялась как это можно обойти

Проще простого: не использовать эти модели в качестве переносного винта. По собственному опыту могу сказать, что в надлежащих условиях (по крайней мере, смею считать, что таковые создал) уже почти _три_года_ (в августе должно исполниться, тьфу-тьфу) у меня живут два _дятла_ по 20Gb в софтрейде. Файлопомойка (нагрузка понятна), каждый винт в своем UHDC, сейчас температуры 28 и 30 C соответственно (в помещении 24). Режим работы круглосуточно, за все время машина выключалась раз 10, не более. Сейчас аптайм 212 дней, но это не более чем пузомерка.

Obidos ★★★★★
()

С воскреснья нас начнут ломать

>Это актуально, у кого модем. В некоторых случаях эта опция позволяла держать коннект постоянным по скорости в независимости от активности диска.

На самом деле эта опция разрешает/запрещает обрабатывать прерывания

при операциях с диском. Актуальна при большом сетевом трафике

и большом числе прерываний от сет. карты.

Sun-ch
()



2ALL. Спасибо всем откликнувшимся. Уговорили, не буду брать модели от IBM, а что тогда посоветуете (фирму, модель) объемом 40-60Gb.

Korwin ★★★
()
Ответ на: комментарий от Korwin

2Korwin:
80-ка стОит всего на $6 дороже... задумайся:)
у меня за много лет ни один Квантум не накрылся, но... сейчас их не
выпускают :( Хотя, Максторы это почти тоже самое (тоже мёртвых еще не видел).
По отзывам продавцов, возвраты есть по всем моделям на 7200 оборотов,
меньше всего по WD и Maxtor, но очень много зависит от конкретной партии...
Короче - лотерея, блин :( Раньше проще было: знаешь, что Сигейт - дерьмо,
ИБМ - дорого но круто и надёжно... сейчас - почти противоположная ситуация... :(

Led ★★★☆☆
()

to Korwin :

>что тогда посоветуете (фирму, модель) объемом 40-60Gb

Честно скажу что ничего посоветовать немогу, так как почти
всё что продаётся производится по большей части в Китае
(за исключением WD), качество соответственное.

Когда накрылся "дятел",я купил IC35L060AVV, когда и он накрылся,
то выбрал наименьшее зло - MAXTOR 6L080J4 "80GB", пока работает.
(Прощу НЕ рассматривать это как рекомендацию)

MrBool
()

2 Led

В противоположность Леду, у нас почему-то все Maxtor-ы сыпались (не знаю, может-быть китайская партия :-)) Да, Quantum раньше - это было круто, первые Maxtor-ы, помнится, после покупки Quantum были именно Квантумами! Сейчас юзаем Seagate-ы - вроде бы ничего.

magic
()

Из последних дисков ATA очень хорошо работают WD 800JB из более ранней серии WD 600BB. На JB стоит кэш 8 мегов вроде, очень удобно и хард не тормозиться даже когда выгружаешь потоковое видео с платы видео-монтажа.

anonymous
()

в lilo.conf можно еще добавить append="ide0=autotune" или "hda=autotune" для автоматического по-контроллерного или по-дискового выбора ядром при загрузке наиболее быстрого режима. less /usr/src/linux/Documentation/ide.txt

anonymous
()

ИМХО, наиболее грамотный способ выставления режимов для харда - включить поддержку своего южного моста в ядре, тогда всё что надо, само проставится. Гораздо удобней. чем этот hdparm и универсальней.

Shrike
()

Ну чтож, картина начала вырисовываться, что сильно радует.
Выбранные притенденты (80Gig, 8Mb cashe, 7200 вращение шпинделя):
Производитель: Maxtor DiamondMaxPlus P0
Интерфейс: UDMA 133
Время поиска с трека на трек: 1.1
Среднее время поиска: 9.4

Производитель: Western digital 800JB
Интерфейс: UDMA 100
Время поиска с трека на трек: 2
Среднее время поиска: 8.9

Maxtor несколько дороже, но быстрее и UDMA 133. Видимо лучше брать его?

Korwin ★★★
()

Не покупайте никогда никогда НИКОГДА IBM HDD!!! У нас тута полный сейф их дохлых накопился, всяких от 15 до 76 гиг включительно :(...

По теме: на странице по ссылке поиск не обнаружил ни одного слова hdparm. У меня что-то с глазами или с головой?

anonymous
()

Да вы чего, опухли все? У меня все винчи кроме IBM как мухи дохли, а IBM'ов 5 штук на разных машинах, в возрасте от 1 до 5 лет и все пучком!

Я конечно понимаю, что сдохший винт -- это обидно, но самые лучшие винчи зачем ругать-то?

PS: YMMV.

GogaN
()
Ответ на: комментарий от Led

Видеокамера SONY DCR-TRV19E и Linux


>у меня за много лет ни один Квантум не накрылся, но...

lc серия дохнет как мухи от дихлофоса ... (у меня 2 штуки)

>сейчас их не выпускают :( Хотя,
>Максторы это почти тоже самое (тоже мёртвых еще не видел).

Та же фигня ... у меня 60-ка сдохла через месяц после
покупки - пришлось покупать аналогичный чтоб спасти данные (контроллер переставил)

>Короче - лотерея, блин :( Раньше проще было: знаешь, что Сигейт - дерьмо,
>ИБМ - дорого но круто и надёжно... сейчас - почти противоположная ситуация... :(

Где вы такие левые "знания" то берете ;)

По моему скромному опыту надежней сигейта зверя нет
conner-ы не в счет ;) эти вообще "вечные" ;))


IBM - быстро но не без проблем - стоят пара дятлов из "той самой" (IBM-DTLA-307045) серии уже 4-й год
но ...
ss@XP1700:~$ sudo ide-smart -r hda | grep Realloc
Reallocated Sector Count ,0x33, 100 ( 0x000000000090) 144
:((




sS ★★★★★
()

Со слов сервисных служб различных фирм и по личному опыту (обслуживание сети в 500 компов рекомендую 1 место - Seagate (лучше barracuda V) 2 место - Maxtor Больше не берите IBM - как минимум треть в лом

anonymous
()
Ответ на: комментарий от anonymous

2anonymous:
>А на IBM нех пиздеть.
Не то что пиздеть, на них лучше и не дышать!
Лучшее средство для ИБМ - перекрестить их три раза перед включением компа
и три паза перед выключением...

Led ★★★☆☆
()

Не знаю кто как, а я сейчас предпочитаю фуджики. Когда то их оченна не любил (когда они только появились) а сейчас... И не сыпятся, и тихие, и шустрые... И матов по их поводу не слышал (это не утверждение что их нет). А квантумы старые - это да. У меня вот дискетка двух гиговая есть. Че с ней только не было за много лет. И падала, и ваааще... Жавет, гадость, и хоть бы один бэд... :)))

Nefer
()
Ответ на: комментарий от Korwin

Диски IBM на 7200 ppm часто "летят". О печальном опыте известно из нескольких источников. На 5400 ppm надежны. Но если нужено 7200 лучше наверное поискать что-то другое. У меня seagate - пока все в норме. И от других жалоб не слышал.

anonymous
()
Ответ на: комментарий от anonymous

>А вот чем в лине можно SMART посмотреть?


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <linux/hdreg.h>
#include <linux/types.h>

#define NR_ATTRIBUTES	30

typedef struct threshold_s {
	__u8		id;
	__u8		threshold;
	__u8		reserved[10];
} __attribute__ ((packed)) threshold_t;
	
typedef struct thresholds_s {
	__u16		revision;
	threshold_t	thresholds[NR_ATTRIBUTES];
	__u8		reserved[18];
	__u8		vendor[131];
	__u8		checksum;
} __attribute__ ((packed)) thresholds_t;

typedef struct value_s {
	__u8		id;
	__u16		status;
	__u8		value;
	__u8		worstvalue;
	__u8		vendor[6];
	__u8		reserved;
} __attribute__ ((packed)) value_t;

typedef struct values_s {
	__u16		revision;
	value_t		values[NR_ATTRIBUTES];
	__u8		offline_status;
	__u8		vendor1;
	__u16		offline_timeout;
	__u8		vendor2;
	__u8		offline_capability;
	__u16		smart_capability;
	__u8		reserved[16];
	__u8		vendor[125];
	__u8		checksum;
} __attribute__ ((packed)) values_t;

#define NR_OFFLINE_TEXTS	5
struct {
	__u8		value;
	char		*text;
} offline_status_text[NR_OFFLINE_TEXTS] = {
	{ 0x00, "NeverStarted" },
	{ 0x02, "Completed" },
	{ 0x04, "Suspended" },
	{ 0x05, "Aborted" },
	{ 0x06, "Failed" }
};

struct smartID_txt {
	__u16 id;
	char *descr;
};
struct smartID_txt __smartID2text[]=
   {
    { 1,"Raw Read Error Rate"},
    { 2,"Throughput Performance"},
    { 3,"Spin Up Time"},
    { 4,"Start/Stop Count"},
    { 5,"Reallocated Sector Count"},
    { 7,"Seek Error Rate"},
    { 8,"Seek Time Performance"},
    { 9,"Power On Hours Count"},
    {10,"Spin Retry Count"},
    {11,"Recalibration Retries"},
    {12,"Drive Power Cycle Count"},
    {13,"Soft Read Error Rate"},
    {199,"Ultra ATA CRC Error Rate"},
    {200,"Write Error Rate"},
    {194,"Disk Temperature, C?"},
    {  0,NULL }
   };
static char __unknownID[256];
char *smartID2text(int id)
{
int i;
for(i=0; __smartID2text[i].descr; i++) if(id == __smartID2text[i].id) return __smartID2text[i].descr;
sprintf(__unknownID,"ID=%d (unknown)",id);
return __unknownID;
}

void printf6bytes(__u8 *p)
{
__u8 *p1;
long long int t;
p1 = (__u8 *)&t;

*p1++ = p[0];
*p1++ = p[1];
*p1++ = p[2];
*p1++ = p[3];
*p1++ = p[4];
*p1++ = p[5];
*p1++ = 0;
*p1++ = 0;
printf("%8lld",t);
}

int fd;
values_t values;
thresholds_t thresholds;

static char *get_offline_text(int status)
{
	int i;

	for (i = 0; i < NR_OFFLINE_TEXTS; i++)
		if (offline_status_text[i].value == status)
			return offline_status_text[i].text;
	return "unknown";
}

static void smart_read_values(name)
{
FILE *fd;
	ushort args[256];
	char buf[256];
	int i;
	bzero(args,sizeof(args));
	sprintf(buf,"/proc/ide/%s/smart_values",name);
	fd = fopen(buf,"r");
	if(!fd) return;
	for(i=0; i < 32; i++) {
		int a[8],j;
		fgets(buf,240,fd);
		sscanf(buf,"%x %x %x %x %x %x %x %x",&a[0],&a[1],&a[2],&a[3],
			&a[4],&a[5],&a[6],&a[7]);
		for(j=0; j < 8; j++) args[i*8+j] = a[j]&0xffff;
	}
	fclose(fd);
	memcpy(&values, &args , 512);
}
static void smart_read_thresholds(char *name)
{
FILE *fd;
	ushort args[256];
	char buf[256];
	int i;
	bzero(args,sizeof(args));
	sprintf(buf,"/proc/ide/%s/smart_thresholds",name);
	fd = fopen(buf,"r");
	if(!fd) return;
	for(i=0; i < 32; i++) {
		int a[8],j;
		fgets(buf,240,fd);
		sscanf(buf,"%x %x %x %x %x %x %x %x",&a[0],&a[1],&a[2],&a[3],
			&a[4],&a[5],&a[6],&a[7]);
		for(j=0; j < 8; j++) args[i*8+j] = a[j]&0xffff;
	}
	fclose(fd);
	memcpy(&thresholds, args , 512);
}

static void print_value(value_t *p, threshold_t *t,int raw)
{
static char *stat2txt[]={ "Advisory,OffLine","PreFailture,OffLine","Advisory, OnLine","PreFailture, OnLine" };

	if (!p->id || !t->id || p->id != t->id)
		return;
	if(raw) {
	int i;
	printf("%-25s,0x%02x,  %3d ( 0x",
	     	smartID2text(p->id), p->status,
		p->value);
	for(i=5; i >= 0; i--) printf("%02x",p->vendor[i]&0xff);
	printf(") ");
	printf6bytes(&p->vendor[0]);
	printf("\n");
	return;
	}
	printf("%-25s,0x%02x{ %20s },  %3d/%-3d , %s\n",
	     	smartID2text(p->id), p->status,
		stat2txt[p->status & 3],
		p->value, t->threshold,
		p->value > t->threshold ? "Passed" : "Failed");
}

static void print_values(values_t *p, thresholds_t *t,int raw)
{
	value_t *value = p->values;
	threshold_t *threshold = t->thresholds;
	int i;
	if(raw)
	printf("\n%-25s,%4s ,%s\n","ID","Status","Value(RAW)");
	else
	printf("\n%-25s,%27s ,%s\n","ID","Status","Value/Threshold");
	for (i = 0; i < NR_ATTRIBUTES; i++)
		print_value(value++, threshold++,raw);
	printf("\nOffLineStatus=%d {%s}, AutoOffLine=%s, OffLineTimeout=%d minutes\n",
		p->offline_status, get_offline_text(p->offline_status & 0x7f),
		p->offline_status & 0x80 ? "Yes" : "No",
		p->offline_timeout / 60);
	printf("OffLineCapability=%d {%s %s %s}\n",  p->offline_capability,
		p->offline_capability & 1 ? "Immediate" : "",
		p->offline_capability & 2 ? "Auto" : "",
		p->offline_capability & 4 ? "AbortOnCmd" : "SuspendOnCmd");
	printf("SmartRevision=%d, CheckSum=%d, SmartCapability=%d {%s %s}\n",
		p->revision, p->checksum, p->smart_capability,
		p->smart_capability & 1 ? "SaveOnStandBy" : "",
		p->smart_capability & 2 ? "AutoSave" : "");
	printf("\n");
}

static void print_threshold(threshold_t *p)
{
	if (!p->id)
		return;
	printf("Id=%3d, Threshold=%3d\n", p->id, p->threshold);
}

static void print_thresholds(thresholds_t *p)
{
	threshold_t *threshold = p->thresholds;
	int i;

	printf("\n");
	printf("SmartRevision=%d\n", p->revision);
	for (i = 0; i < NR_ATTRIBUTES; i++)
		print_threshold(threshold++);
	printf("CheckSum=%d\n", p->checksum);
	printf("\n");
}


static void smart_disable(void)
{
	__u8 args[4] = {WIN_SMART, 0, SMART_DISABLE, 0};

	if (ioctl(fd, HDIO_DRIVE_CMD, &args))
		perror(" SMART_DISABLE failed");
}

static void smart_enable(void)
{
	__u8 args[4] = {WIN_SMART, 0, SMART_ENABLE, 0};

	if (ioctl(fd, HDIO_DRIVE_CMD, &args))
		perror(" SMART_ENABLE failed");
}

static void smart_offline_immediate(void)
{
	__u8 args[4] = {WIN_SMART, 0, SMART_IMMEDIATE_OFFLINE, 0};

	if (ioctl(fd, HDIO_DRIVE_CMD, &args))
		perror(" SMART_IMMEDIATE_OFFLINE falied");

}

void usage()
{
	printf("usage: ide-smart [-r] device\n");
	exit(0);
}

int main(int argc, char *argv[])
{
char buf[256];
int i,raw;
	if (argc < 2)
		usage();
	i=1;
	raw = 0;
	if(argv[i] && argv[i][0] == '-' ) {
	 if(argv[i][1] != 'r') usage();
	 i++;
	 raw++;
	}
	sprintf(buf,"/dev/%s",argv[i]);
//	if ((fd = open(buf, O_RDONLY)) == -1) {
//		perror("couldn't open device");
//		return 0;
//	}
#if 0
	smart_enable();
	smart_offline_immediate();
#endif
	smart_read_values(argv[i]);
	smart_read_thresholds(argv[i]);
	print_values(&values, &thresholds,raw);
//	close(fd);
	return 0;
}

Вот это более кошерная версия :)

sS ★★★★★
()
Ответ на: Видеокамера SONY DCR-TRV19E и Linux от sS

2sS:
>Где вы такие левые "знания" то берете ;)
Из личного опыта, батенька, который измеряется не одной сотней этих самых винчестеров за последние лет 7, и опыта своих знакомых...

>Та же фигня ... у меня 60-ка сдохла через месяц после
>покупки - пришлось покупать аналогичный чтоб спасти данные (контроллер
>переставил)
Зачем так кардинально? У нас в Киеве в спец. конторе за 30-60 минут и $35
всю информацию с мёртвого винта тебе на болванки сбросят или на другой винт...

>По моему скромному опыту надежней сигейта зверя нет
>conner-ы не в счет ;) эти вообще "вечные" ;))
Последние года 3 - может быть... у мен я ещё предубеждения 5-7-летней давности;)

>IBM - быстро но не без проблем - стоят пара дятлов из "той самой" >(IBM-DTLA-307045) серии уже 4-й год
>но ...
У моего знакомого тоже такой уже года 3 крутится... но, к сожалению,
это скоре счастливое исключение из правил :(

Led ★★★☆☆
()
Ответ на: комментарий от Nefer

2Nefer:
>Не знаю кто как, а я сейчас предпочитаю фуджики.
Шутка дня!:)))))

Led ★★★☆☆
()
Ответ на: комментарий от anonymous

> На 5400 ppm надежны.

У моего соседа IBM-овский 5-тысячник сдох после 1.5 лет
работы ... он правда экспериментатор и игроман ;)

sS ★★★★★
()

2sS (*) (2003-07-04 16:53:21.806778)

ну вот, пришлось страницу сохранять... спасибо.

:-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.