Мальчик, это так. а. тривиальный. вопрос, и все же никто, кажется, не может ответить на него правильно.
Как вы меняете /dev/sda с/dev/sdb?
Кто-то может предложить использовать постоянную маркировку (например./Dev/disk/by- *), но, несмотря на лучшие намерения, это НЕ отвечает на вопрос. Да, постоянные рассылки работают там, где вы можете их использовать, но если программа жестко запрограммирована для использования, например. /dev/sda, этот вопрос сохраняется.
Чтобы проиллюстрировать проблему дальше от того, что я нашел в Интернете: http://ubuntuforums.org/showthread.php?t=1569238&page=2 (Напоминает мне о "Schadenfreude")
Этот парень, похоже, нашел решение, просто не поделился им (boo!): Http://ubuntuforums.org/showthread.php?t=944515
И tbh, у меня есть потенциальная подобная опасность. Я использую CloneZilla, и если программа спрашивает: Would you like to backup/dev/sda to/dev/sdb or/dev/sdb to/dev/sda?
, угадайте, как я нервничаю, когда узнаю, что Linux, похоже, случайно назначает диски. Я еще не перезаписал свои данные своей собственной резервной копией, но это просто ждет.
Что в Linux назначает /dev/sd * на диски и как вы влияете на этот процесс? Это что-то связано с udev (/etc/udev/, udevadm)? Моя ОС - CentOS, но мне нужно знать это также для Ubuntu и CloneZilla (http://clonezilla.org), и эта проблема возникает во всех системах, поэтому я предполагаю, что эта проблема не связана с распределением, а скорее для ядра, модулей ядра или чего-то очень близкого к ядру. Пожалуйста помоги!
------------------ EDIT: 25 августа 2013 г. После того, как вы указали ссылку, которую дал ypnos, я прочитал все, попробовал одну команду, а ядро только "vommitted" udev rules на всем экране. Затем запросил пароль root, чтобы разрешить обслуживание, или выйти для перезагрузки. Это свидетельствует о том, что этот материал действительно не для новичков.
Я также посмотрел его немного дальше. Я не понимаю, как и когда загружается ядро linux, но несколько сообщений в Интернете показывают, что BIOS (!! верьте или нет) передает список загружаемых дисков до grub, который затем использует файл device.map назначить устройства, для которых grub (hd *,). Обратите внимание, что /dev/sd уже определены на этом этапе, так как вы можете использовать постоянные символические ссылки dev. Кажется, что эти карты устройств каким-то образом переходят к фактической корневой файловой системе. Так это теперь вещь загрузчика?
Возвращаясь к udev в качестве потенциального решения, я обнаружил ошибку в http://www.bugs.debian.org/cgi-bin/bugreport.cgi?bug=578826, что привело к разрешению, когда было отклонено, чтобы изменить udev NAME (что в конечном итоге станет /dev/sd *, как мы его знаем).
Для предложенных страниц udev MAN:
| The following keys can get values assigned:
|
| NAME
| The name of the node to be created, or the name the network
| interface should be renamed to.
NOTE: changing the kernel-provided name of device nodes
(except for network devices) is not supported and can result
in unexpected behavior.
Today, the kernel defines the device nodes names, and udev
is expected to only manage the node permissions and
additional symlinks.
... Но я вышел, чтобы сделать это в любом случае слегка измененным образом.
# vi /etc/udev/rules.d/00-corrections.rules
KERNEL=="sd?", ATTRS{model}=="SAMSUNG SP0411N", NAME="sda"
KERNEL=="sd??", ATTRS{model}=="SAMSUNG SP0411N", NAME="sda%n"
KERNEL=="sda", ATTRS{model}!="SAMSUNG SP0411N", NAME="sdb"
KERNEL=="sda?", ATTRS{model}!="SAMSUNG SP0411N", NAME="sdb%n"
По сути, он делает это: "Если модель является samsung, назначьте ее NAME sda *. Если модель не Samsung, но была назначена sda *, назначьте ей NAME sdb *." Это правило было поставлено перед всеми другими правилами как можно больше. Обратите внимание, что я не уверен в этом, потому что, похоже, есть и некоторые "невидимые" файлы правил. И хотя вы переименовали устройства, ядро где-то в "загруженной ядрами", все равно может иметь неправильные ссылки. Это может быть очевидным, если вы посмотрите файл /var/log/boot.log, где в моем случае начало:
%G Welcome to [0;36mCentOS[0;39m
Starting udev: %G[60G[[0;32m OK [0;39m]Setting hostname UncleFloServer: [60G[[0;32m OK [0;39m]ERROR: asr: seeking device "/dev/sda" to 5999998795264
ERROR: ddf1: seeking device "/dev/sda" to 5999998795264
ERROR: ddf1: seeking device "/dev/sda" to 5999998664192
ERROR: hpt45x: seeking device "/dev/sda" to 5999998790144
ERROR: isw: seeking device "/dev/sda" to 5999998794752
ERROR: jmicron: seeking device "/dev/sda" to 5999998795264
ERROR: lsi: seeking device "/dev/sda" to 5999998795264
ERROR: nvidia: seeking device "/dev/sda" to 5999998794752
ERROR: pdc: seeking device "/dev/sda" to 137438913024
ERROR: pdc: seeking device "/dev/sda" to 137438920192
ERROR: pdc: seeking device "/dev/sda" to 137438927360
ERROR: pdc: seeking device "/dev/sda" to 137438934528
ERROR: sil: seeking device "/dev/sda" to 5999998795264
ERROR: via: seeking device "/dev/sda" to 5999998795264
Setting up Logical Volume Management: No volume groups found
[60G[[0;32m OK [0;39m]Checking filesystems
_CentOS-6.4-x86_: clean, 85517/655360 files, 662649/2621440 blocks
/dev/sda1: clean, 56/65536 files, 33367/262144 blocks
[60G[[0;32m OK [0;39m]Remounting root filesystem in read-write mode: [60G[[0;32m OK [0;39m]Mounting local filesystems: [60G[[0;32m OK [0;39m]Enabling local filesystem quotas: [60G[[0;32m OK [0;39m]Enabling /etc/fstab swaps: [60G[[0;32m OK [0;39m]
Здесь мое устройство Samsung составляет 40 ГБ (что мне бы хотелось как /dev/sda), а мой большой Areca Raid - 6TB (который мне бы хотелось как /dev/sdb).
Остальные вопросы остаются
-
Что означают ошибки?
-
Являются ли эти ошибки причиной ядра или причиной того, что файл правил все еще работает до моих 00-correctctions.rules из udev?
-
Эти ошибки указывают на то, что data- угрожает? В разделе "Арека" нет проблем в одной из моих папок в fstab.
-
Есть ли лучший, более ранний метод назначения устройств?