2016-10-17 2 views
7

je instance EC2 avec un volume EBS fixé, de sorte que décrivent-instances commande affiche:lien entre le nom de volume EBS spécifié et nom du périphérique dans le système Linux

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

selon la documentation:

Selon le pilote de périphérique de bloc du noyau, le périphérique peut être attaché avec un nom différent de celui que vous spécifiez

Dans mon cas réel le nom de ce volume est /dev/xvdf.

Est-il possible, dans une instance, de savoir quel nom a été spécifié pour un volume dans la console Amazon? Et vice versa - pour savoir quel nom sera utilisé par Linux pour un volume en dehors d'une instance?

Répondre

2

À partir de la console AWS, vous ne pourrez jamais savoir car ce mappage est effectué par le système d'exploitation. Dans Amazon AMI, il peut s'agir d'un périphérique différent, mais il existe toujours un lien entre le périphérique d'origine demandé et le périphérique sur le système. Vous pouvez donc toujours utiliser DeviceName comme périphérique réel. Dans RedHat c'est différent, mais c'est logique que l'ordre soit maintenu.

+0

Pourriez-vous clarifier un peu plus - vous avez mentionné qu'il y a toujours un lien entre l'appareil original et le système actuel - mais comment obtenir ce lien? Dans mon système, les commandes liées à fs ne montrent que le nom réel, pas celui d'origine. – XZen

4

Vous êtes sur un VPS Xen (ou une machine virtuelle); xvd * sont simplement les périphériques de stockage sur disque Xen (périphérique de bloc virtuel Xen). Ils apparaissent à la place de sda, etc. lorsque vous utilisez les pilotes de disque Xen paravirtualisés les plus efficaces au lieu de l'émulation de disque SCSI directe. Si vous listez les modules installés (pilotes) sur un HVM Xen, ce pilote apparaîtra comme blkfront (ou xen_blk si vous utilisez une très ancienne version de Xen - assez rare).

En bref, traiter xvda1 exactement comme vous le feriez êtresda1 sur un PC ordinaire

Selon le pilote de périphérique bloc du noyau, le dispositif peut être attaché avec un nom différent de ce que vous spécifiez. Par exemple, si vous spécifiez un nom de périphérique de/dev/sdh, votre périphérique peut être renommé/dev/xvdh ou/dev/hdh par le noyau; dans la plupart des cas, la lettre finale reste la même. Dans certaines versions de Red Hat Enterprise Linux (et ses variantes, telles que CentOS), même la lettre de fin pourrait également changer (où/dev/sda pourrait devenir/dev/xvde). Dans ces cas, la lettre de fin de chaque nom de périphérique est incrémentée le même nombre de fois. Par exemple,/dev/sdb deviendrait/dev/xvdf et/dev/sdc deviendrait/dev/xvdg. Les AMI Amazon Linux créent un lien symbolique avec le nom que vous spécifiez au lancement qui pointe vers le chemin du périphérique renommé, mais les autres AMI peuvent se comporter différemment.

1

En tant que defined in the aws documentation et indiqué par @YairCarel, le mappage du pilote de périphérique est spécifique au système d'exploitation. Mais pour une distribution spécifique, il sera toujours le même. Donc, si vous connaissez la distribution Linux sur laquelle vous travaillez, vous pouvez la calculer.

Par exemple Amazon Linux conservera le nom sur la console AWS (ou au moins créera un lien symbolique). Ubuntu utilisera un préfixe différent /dev/xvd? au lieu de /dev/sd?. Et la famille Redhat va généralement incrémenter la lettre de fin avec un décalage fixe, donc /dev/xvdf est mappé sur /dev/sdb.