sda vs hda
Sheff 2 октября, 2008 - 12:27
При установке, livecd обнаружил диск, как sda. После сборки ядра, система определяет диск, как hda! Соответственно - kernel panic! Подскажите, где накосячил?!
PS: Ядро собиралось ручками, диск ide, мама asus p4p800, загрузчик lilo, ядро монолитное...
»
- Для комментирования войдите или зарегистрируйтесь
В fstab и lilo что
В fstab и lilo что написал? sda?
Если да, то переделывай на hda.
"Если sda да
"Если sda да вдруг на hda налезет, кто кого сборет?"
Проще всего действительно поправить fstab. Иначе придётся пересобирать ядро
Пожалуйста, не описывайте своё железо в подписи
Прописал sda, но
Прописал sda, но переписать на hda не получается, т.к. при запуске lilo выдается сообщение, что-то типа не такого устройства /dev/hda
hda - deprecated
С ядер версии 2.6.18 (помоему) IDE подсистема находится в статусе deprecated - поэтому все должно работать через libata, соответственно IDE харды будут как sda показыватся.
Конечно я встречал некоторых извращенцев у которых в последних ядрах есть IDE подсистема, но когда они по моей просьбе меряли производительность на libata - тихо фигели как они раньше жили...
Если серьезно - выбрасываем весь раздел где Device Drivers -> ATA/ATAPI/MFM/RLL Support (вообще он не надо!)
И включаем SCSI device support -> SCSI device support & SCSI disk support (только не модулем, а прямо в ядро) и там же SCSI CDROM support (это уже модулем)
Затем вкл. Serial ATA (prod) and Parallel ATA - здесь тоже все в ядро, не модулем, смотрим какой у нас чип контроллера...
Не забываем в загрузчике и fstab менять на sd*
Вот собственно и все. Прирост производительности дисковой PATA подсистемы около 20% - а за это стоит поборотсяsmile
Да ув. Agressor ...
Да ув. Agressor ... Пристыдили вы меня. Не хочу больше быть извращенцем! Залез только что в ядро и
"выбросил" весь раздел < > ATA/ATAPI/MFM/RLL support --->
Что касается SCSI устройств, то все было включено ранее, ибо имеется и SATA винт.
IDE диск из hda превратился в sda, SATA диск в свою очередь из sda стал sdb. Прирост в скорости не
замерял, но тот факт, что из ядра удалось выкинуть целый раздел, уже радует. Спасибо за совет :-)
Всё ок!
Благодарю за совет!
По поводу
По поводу перехода с hd* на sd*: мне тоже интересно попробовать, но единственный вопрос будет ли работать hdparm? Прсто через hdparm у меня много всего настроено, и шумность и энергосбережение и остановка харда в случае иго неиспользования.
Эти опции
Эти опции работают, не работает, например, опция -d1 - включить DMA, но где-то читал, что для SATA-дисков она и не нужна.
offtop
А можно на опции глянуть? Сравнить, так сказать, со своими :)
И, если можно, вывод команды
smartctl -A /dev/hda
./dev/disk/by-label/*
Спасибо, сам с этим как раз столкнулся
А чего бы такого скомпилировать в ядре, чтобы можно было указывать root=/dev/disk/by-label/gentoo, например? или аналогично по UUID
fstab?
Хм, рано я обрадовался. Пытаюсь в /etc/fstab прописать файловые системы по LABEL= и UUID= -- во время загрузки эти имена превращаются в /dev/hd*, и соответственно, ничего не монтируется.
Если же я после загрузки смотрю в /dev/disk/by-label, то там все симлинки правильные (на /dev/sd*). Как это можно поправить?
Смотри в
Смотри в сторону LVM.
Там как раз указывается /dev/<Имя группы томов>/<Имя тома>.
В других
В других дистрибутивах я могу указывать root по /dev/disk/by-label/* и /dev/disk/by-uuid/* без всякого LVM
Добавка: ага, понял, без genkernel'а это сделать не получится
А чтобы в /etc/fstab /dev/disk/by-label работал -- неужели тоже genkernel нужен?
вовсе нет.
вовсе нет.
Спасибо, за
Спасибо, за подробный пост, не знал..
Сделал как ты написал, как теперь замерить скорость работы диска ?
Субьективно, LinuxDC++ быстрее стал хешировать файлы.
Вот так
На запись (файл размером 2 Гига)
time sh -c "dd if=/dev/zero of=bigfile bs=8k count=250000 && sync"
На чтение (этот же файл)
time dd if=bigfile of=/dev/null bs=8k
При измерениях не забываем что сама ФС и ОС кеширует дисковые орерации :)
Ну и естественно никто не отменял
hdparm -tT /dev/sda
.
sdparm пришёл на смену hdparm, я слышал.
Если я не
Если я не ошибаюсь, sdparm только для скази. Для сата всё же hdparm
Я только что
Я только что перешел с hd* на sd* и не вижу никакого прироста производительности (hdparm -tT те же результаты показывает).
Ядро 2.6.26-tuxonice, винт Samsung SP0802N 7200rpm (80Gb).
-u1
Так-то оно все так, и депрекацию IDE мы поддержим единогласно, но есть один нюанс. Именно, опция hdparm -u при переходе hda->sda -- не работает, вследствие чего при обильном I/O имеем резкое снижение отзывчивости системы (типа даже мышь скачками движется). А вот в при старом режиме она, эта опция, размаскировывала прерывания и мышка бегала гладко-гладко. Потому на старом инспироне 2002-го года выпуска я держу IDE подсистему и менять не буду.
:}
а что будет с IDE сидюком?
А обычный, не-сказёвый CDROM должен по такой схеме увидетья? Без ATA/ATAPI/MFM/RLL Саппорта? И если да, то как /dev/hd* или как /dev/sd* ?
См. FAQ
См. FAQ
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Больш. 10x :)
Больш. 10x :)
линки на почитать
http://ru.gentoo-wiki.com/Fstab
http://ru.gentoo-wiki.com/Hастройка_дисковой_подсистемы
Тонкая настройка IDE дисков с помощью hdparm
__
:. Поделись опытом на ru.gentoo-wiki.com или на www.gentoo-wiki.com
Попытался и я перейти на libata...
Почитал я тут советов, и тоже решил сделать так же.
Система у меня (/, /boot, /var, /usr и /home идут отдельными разделами) находится на 1000Гб SATA-винчестере, также есть PATA винчестер на 320 гб). До "перехода" они определялись, соответственно, как sda и hdb (фишку потерял, висел на слейве).
Кусок из конфига grub:
Кусок из fstab:
Всё работало как надо.
Отключил ATA раздел в ядре целиком, как советовали, пересобрал ядро, перезагрузился. IDE-диск пропал (не было драйвера), fdisk -l показывал только SATA-диск.
Полез в menuconfig, включил AMD/NVidia PATA Support в разделе libata, сделал make modules и make modules_install - в результате после modprobe pata_amd IDE-диск появился, и fdisk -l отобразил его как sdb.
Но после перезагрузки - облом, все разделы кроме / не подмонтировались. При этом fdisk -l показал, что теперь sda - это IDE-диск, а sdb - это SATA-диск.
В общем, как я понял, initrd при загрузке создавало в /dev/disk/by-uuid симлинки на мои разделы как на sda*, но потом при передаче загрузки ядру то ли amd-pata драйвер загрузился раньше чем sata-nv, то ли ещё по какой-то причине диском sda стал мой IDE-винчестер, остальные разделы к корневому не подмонтировались и вся загрузка "пошла лесом". Поэтому пока вернулся к первоначальному варианту.
Может кто-то сталкивался с подобным? есть ли возможность привязать конкретный винчестер к конкретной букве в sd*?
Или (надо попробовать) может оказаться достаточным загрузить модули в следующей последовательности - sata-nv, затем amd-pata, тогда как это можно реализовать?
Использую OpenRC.
.
На сколько я знаю, это бич всего линукса. Во freebsd, например, можно привязывать девайсы в зависимости от их подключения, а не когда его ядро найдет.
Во всяком случае, эта тема поднималась на многих форумах и толкового решения никто не привел.
можно
можно привязать по by-id/ by-label/ by-path/ by-uuid/ . вот :-)
Однако,
в том-то и весь прикол, что привязано именно по uuid, как в fstab, так и в grub. Опять же, повторюсь, похоже на то, что initrd создаёт ссылки в /dev/disk/* на разделы как sda, но ядро этот диск видит как sdb, в результате вся загрузка рушится.
.
label/pass/uuid это все симлинки, речь идет про привязывание sda* к конкретному девайсу
В общем, разобрался я в чём
В общем, разобрался я в чём дело. Как уже ранее писал,
В том-то и вся проблема была, что я не пересобирал genkernel-ом всё полностью, а просто добавил модуль и сделал make modules. Поэтому inintrd просто не знал, грубо говоря, о наличии нового драйвера, соответственно помечал sata-шный винчестер как sda и делал на него симлинк в /dev. А ядро, загружаясь, переопределяло ide-винчестер как sda, sata - как sdb (приоритет, видимо, брался из BIOS), и в результате загрузка по UUID не проходила.
Сегодня попробовал собрать всё полностью с новым конфигом - и initrd, и ядро (genkernel all) - и проблема просто исчезла сама собой.
.
в пику evadim-у, который против тотальных пересборок :-)
P.S. это шутка
У меня стоито старенький комп
У меня стоит старенький комп Cel 1100+512 c 2 IDE и 2 SATA винтами, SATA поддержка только через отдельную плату. Так вот поставил систему на один из винтов SATA и он переодически менялся местами, то sdd, то sde, помогло только прописывание правил в udev
ACTION=="add", ENV{ID_SERIAL}=="SATA_ST3320620AS_********", NAME="sataone%n"
ACTION=="add", ENV{ID_SERIAL}=="SATA_ST3320620AS_********", NAME="satatwo%n"
P.S. это к вопросу фиксации имени устройства
А у меня нет SATA!
Только IDE диск. Мать на чипсете NForce2, тоже нужно от hda отказываться и переходить на sd(x)?
мать nvidia убрал ata/... из
мать nvidia
убрал ata/...
из ядра
добавил свою мамку в конфиги pata
при загрузке на новом ядре ловлю панику
система говорит что раздел я не верный выставил.
и показывает какие можно
/dev/sda1
/dev/sda2
/dev/sda3
я выставлял /dev/sda3
в чем проблема?
не хочет никак грузица оттуда :(
Грузитесь по UUID или LABEL:
1. Возвращаем всё как было (обычное ATA).
Добиваемся правильной загрузки.
2. Собираем ядро genkernel-ом с поддержкой UUID и LABEL (на рабочего конфига, который обычно можно взять из текущего запущенного ядра в /proc/config.gz)
--no-clean не даёт genkernel-у использовать свой конфиг
--disklabel включает возможность загрузки по UUID и LABEL
--splash-res и --splash - загрузка с графической консолью (по необходимости). Я, например, использую.
при сборке genkernel-ом ядро и модули сами скопируются куда надо.
По необходимости доустанавливаем nvidia-drivers, alsa-driver, virtualbox-module и кому что ещё надо.
3. Правим конфиг grub-а, с учётом того, что ядро собрано genkernel-ом и использует initrd:
В данном случае - real_root=/dev/hda3 - это корневой раздел, без прописанный ранее без initrd как root=/dev/hda3
Параметры video=uvesafb:1280x1024-32,mtrr:3,ywrap и splash=silent,theme:livecd-2007.0 нужны, если ядро собиралось с uvesafb и нужна графическая консоль. Временно можно отключить.
4. Правим /etc/fstab, заменяя все /dev/sda1 и прочее на UUID-метки:
Узнать UUID раздела можно в /dev/disk/by-uuid по имени метки на соответствующий раздел.
Перезагружаемся, убеждаемся что всё работает как надо
5. Меняем в grub.conf параметр real_root=/dev/hda3 на real_root=UUID=e0e56a5e-3b98-a05b-7721-3584e5697ff6 (естественно, на свою метку /)
Перезагружаемся, убеждаемся что всё работает как надо
6. Теперь ни fstab, ни grub.conf не привязаны к номерам разделов, вся загрузка идёт только на базе UUID. Поэтому абсолютно не важно - sda это, sdb или hda или что-либо ещё. UUDI-ы уникальны для конкретного раздела, пока его не переформатировать в другую ФС или не изменить размер.
Теперь уже можно снова пересобрать ядро тем жe genkernel-ом, уже отключив поддержку ATA и пользуяся только LIBATA. Никаких изменений в grub.conf или fstab больше не потребуется.
пасиба.действительно
пасиба.действительно помогло.
+1
Да, вроде побыстрее
Да, вроде побыстрее стало.
Спасибо.
Нельзя ли поподробнее
Нельзя ли поподробнее прокомментировать тему
--disklabel
для случая сборки ядра безgenkernal
'а?:wq
--
Live free or die
grep -R -y "disklabel"
grep -R -y "disklabel" /usr/share/genkernel
.
Ну для fstab, это может и прокатит (хотя там imho удобнее по label прописывать... нагляднее).
А вот для груба - сомневаюсь, т.к. он загружает ядро, а udev расчехляется уже после его загрузки.
Вопрос другой.
По UUID груб может загружать, но на сколько я понял, - только в случае модульного ядра с initrd. Можно ли как-то монолитное ядро научить грузиться по UUID?
Так ответа на заданный
Так ответа на заданный sspphheerraa вопрос нету? Обязательно использовать genkernel и initrd для привязки по UUID?
Судя по [url=
Судя по ссылке, обязательно. По крайней мере, initrd файл нужен в любом случае, а уж genkernel его сделает, или вручную - это другой вопрос.
Лично мне нравится использовать genkernel за его бОльшие возможности и простоту.
У меня работает и без.
У меня работает и без.
.
как устанавливал ядро?
конфиги ядра и груба можешь показать?
А можно поточнее?
А можно поточнее? :)