2016-10-17 10 views
7

У меня есть EC2 экземпляр с объемом EBS прилагается, так что описывать-экземпляры команды принтов:Связи между указанным именем тома EBS и фактическим именем устройства в системе Linux

 "DeviceName": "/dev/sdf", 
    "Ebs": { "Status": "attached", 
       "DeleteOnTermination": false, 
       "VolumeId": "vol-04bfa2fab8e57a3dc", 
       "AttachTime": "2016-09-26T09:39:08.000Z" } 

В соответствии с документации:

В зависимости от драйвера блочного устройства ядро ​​может быть прикреплено другим именем, кроме указанного вами

В моем случае фактическое имя этого тома - /dev/xvdf.

Возможно ли из экземпляра узнать, какое имя было указано для тома в консоли Amazon?

Или наоборот - узнать, какое фактическое имя будет использоваться linux для тома вне экземпляра?

ответ

2

Из консоли AWS вы никогда не узнаете, поскольку это сопоставление выполняется ОС. В AMI Amazon у него может быть другое устройство, но всегда есть ссылка с оригинального устройства, которое вы запросили на самом устройстве в системе, поэтому вы всегда можете использовать DeviceName как фактическое устройство. В RedHat это другое, но логично, что порядок будет сохранен.

+0

Не могли бы вы прояснить немного больше - вы упомянули, что всегда есть ссылка с оригинального устройства на фактическое в системе, но как именно получить эту ссылку? В моей системе команды, связанные с fs, показывают только фактическое имя, а не оригинальное. – XZen

4

Вы находитесь на Xen VPS (или виртуальной машине); xvd * - это просто дисковые запоминающие устройства Xen (Xen Virtual block Device). Они появляются вместо sda и т. Д., Когда вы используете более эффективные паравиртуализированные драйверы диска Xen вместо правильной эмуляции SCSI-диска. Если вы укажете установленные модули (драйверы) на Xen HVM, этот драйвер будет отображаться как blkfront (или xen_blk, если вы работаете на очень старой версии Xen - довольно редко).

Короче говоря, лечить xvda1 точно так, как вы бы sda1 на обычном ПК

В зависимости от драйвера блочного устройства ядра, устройство может быть присоединен с другим именем, чем то, что вы укажете. Например, если вы укажете имя устройства/dev/sdh, ваше устройство может быть переименовано/dev/xvdh или/dev/hdh в ядро; в большинстве случаев конечное письмо остается неизменным. В некоторых версиях Red Hat Enterprise Linux (и его вариантах, таких как CentOS) даже задняя буква также может меняться (где/dev/sda может стать/dev/xvde). В этих случаях каждое конечное письмо названия устройства увеличивается таким же количеством раз. Например,/dev/sdb станет/dev/xvdf и/dev/sdc станет/dev/xvdg. Amazon Linux AMI создают символическую ссылку с именем, которое вы указали при запуске, которое указывает на путь переименованного устройства, но другие AMI могут вести себя по-разному.

1

Как defined in the aws documentation и намекнул @YairCarel, сопоставление драйверов устройств является специфичным для ОС.

Но для одного конкретного распределения он всегда будет таким же. Итак, если вы знаете дистрибутив linux, над которым работаете, вы можете рассчитать его.

Например, Amazon Linux сохранит свое имя на консоли AWS (или, по крайней мере, создаст символическую ссылку на него). Ubuntu будет использовать другой префикс /dev/xvd? вместо /dev/sd?. И Семейство Redhat обычно будет увеличивать заднюю букву с фиксированным смещением, поэтому /dev/xvdf отображается на /dev/sdb.