下面的剧本运行良好,但如果我运行lsscsi命令,/u01始终是LUN 0(/dev/sdc(,/ora01应该是LUN1(/dev/sdd(,/data应该是LUN2(/dev/sde(。这里的问题是有时它会被交换。即/ora01将是LUN2&数据将是LUN1。请对此提出建议。。
tasks:
- name: vgcreate
lvg:
vg: "{{ item.vgname }}"
pvs: "{{ item.pvsdisk }}"
with_items:
- { vgname: u01, pvsdisk: /dev/sdc }
- { vgname: ora01, pvsdisk: /dev/sdd }
- { vgname: data, pvsdisk: /dev/sde }
- name: lvcreate
lvol:
vg: "{{ item.vgname }}"
lv: "{{ item.lvname }}"
size: 100%VG
with_items:
- { vgname: u01, lvname: lgvol_1 }
- { vgname: ora01, lvname: lgvol_2 }
- { vgname: data, lvname: lgvol_3 }
- name: create file system
filesystem:
fstype: ext4
dev: /dev/{{ item.vgname }}/{{ item.lvname }}
with_items:
- { vgname: u01, lvname: lgvol_1 }
- { vgname: ora01, lvname: lgvol_2 }
- { vgname: data, lvname: lgvol_3 }
- name: mount logical volume
mount:
name: /{{ item.vgname }}
src: /dev/{{ item.vgname }}/{{ item.lvname }}
fstype: ext4
state: mounted
with_items:
- { vgname: u01, lvname: lgvol_1 }
- { vgname: ora01, lvname: lgvol_2 }
- { vgname: data, lvname: lgvol_3 }
它不是Ansible。您遇到的问题是设备名称"/dev/sda"等不是永久性的。它们是按照出现的顺序分配的,所以如果这个顺序不同,设备就会以不同的名称列出。IRL"sda"方法还有更多的问题,例如,如果某个设备因错误而断开连接(ISCSI的情况下为超时(,然后重新连接,它可以获得一个新名称(例如/dev/sdg
(。在内核内部深处,将有/dev/sda(不可见但被占用(和/dev/sdg——同一个设备,具有不同的名称。
TL;DR;如果顺序对您来说很重要,请不要依赖/dev/sd*表示法。将其视为分配了随机名称的磁盘"集合"。
如果你需要选择特定的设备,你需要找到不变量(设备肯定有(。少数选项:
- SCSI路径
- 插槽编号(如果是机柜中的真实设备(
- 文件系统的UUID
- 设备的零件号和/或供应商指定的序列号
其中一些标识可以通过/dev/disk/by-*进行:
- 通过id/
- 按零件标签/
- 按路径/
- 按标签/
- 通过分娩液/
- 通过uuid/
有些需要经过深思熟虑的搜索过程(通过识别进行探测(。你可能想看看几个工具的输出:
- blkid
- isscsi
- iscsiadm-m会话
甚至可以窥探每个设备中的/sys/block和符号链接。
基本上,这个问题就像有人把你的硬盘随机插入新电脑一样。哪个驱动器是用来做什么的?