我有一个外部硬盘驱动器连接到我的Ubuntu笔记本通过USB。整个硬盘都是加密的。在加密层旁边有一个LVM卷,我将其挂载到/mnt/es。一旦打开,lsblk就把它看作是:
sdc 8:32 0 2.7T 0 disk
└─es (dm-6) 252:6 0 2.7T 0 crypt
└─externalstorage-externalstorage (dm-7) 252:7 0 2.7T 0 lvm /mnt/es有时,硬盘会与卷“分离”,在这种情况下,数据变得不可访问:
sdc 8:32 0 2.7T 0 disk
es (dm-6) 252:6 0 2.7T 0 crypt
└─externalstorage-externalstorage (dm-7) 252:7 0 2.7T 0 lvm我注意到,这种情况通常发生在笔记本电脑入睡时。
现在的问题是,一旦sdc分离了去过吗?,我就不能去掉两个陈旧的卷es和externalstorage-externalstorage,以便再次重用它们的名称。我做的第一件事是umount /mnt/es,它做得很好。但是,即使没有安装音量,我也不能删除它:
dmsetup remove --force /dev/mapper/externalstorage-externalstorage
device-mapper: resume ioctl on externalstorage-externalstorage failed: Invalid argument
device-mapper: remove ioctl on externalstorage-externalstorage failed: Device or resource busy
Command failedinfo命令显示卷是打开的:
dmsetup info -c /dev/mapper/externalstorage-externalstorage
Name Maj Min Stat Open Targ Event UUID
externalstorage-externalstorage 252 7 L--w 1 1 0 LVM-R4bAWzxJ8Cy3MBIjmPps60Rd3cFVyBStxTeKaR6gBHdefTYfJNWhHfA8tzqOBHns下面是这卷书的内容,但它并没有告诉我多少:
fuser -m /dev/mapper/externalstorage-externalstorage
Cannot stat file /proc/5687/fd/4: Stale file handle
Cannot stat file /proc/5687/fd/5: Stale file handle
Cannot stat file /proc/5687/fd/6: Stale file handle
Cannot stat file /proc/5687/fd/7: Stale file handle
Cannot stat file /proc/5687/fd/11: Stale file handle从LVM的角度来看,它也是不可访问的:
pvdisplay
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 2981780979712: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 2981781037056: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 0: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 4096: Input/output error有趣的是,在这一点上,cryptsetup luksClose es可以重复任何次数,没有任何明显的影响或错误信息。
那么,我如何摆脱那些陈旧的卷(除了重新启动)?是否有任何方法来防止问题发生在第一,即为什么sdc不时分离?
Ubuntu14.04.3 LTS,内核3.19.0-42-泛型
vgchange -an会产生类似的错误,如下所示:
/dev/mapper/es: read failed after 0 of 4096 at 3000590794752: Input/output error
/dev/mapper/es: read failed after 0 of 4096 at 3000590876672: Input/output error
/dev/mapper/es: read failed after 0 of 4096 at 0: Input/output error
/dev/mapper/es: read failed after 0 of 4096 at 4096: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 2981780979712: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 2981781037056: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 0: Input/output error
/dev/externalstorage/externalstorage: read failed after 0 of 4096 at 4096: Input/output error发布于 2016-01-04 06:48:34
这更像是一种猜测,但看起来在删除地窖映射之前,您需要解除lvm的活动,基本上是从内部返回:
首先,您需要在lvm上收集任何陈旧的fs:
umount -f /mnt/es然后,关闭您似乎在密码设置之上的lvm。即使您有其他vgs,如果使用任何其他vg,以下内容也应该禁用它所能激活的任何内容,而不会损害系统:
vgchange -an在此之后,您可以使用dmsetup来删除由cryptsetup(!)创建的映射。
dmsetup remove externalstorage(我可能弄错了一些名字,请随时更正)
这似乎是一个基本的问题,在睡眠期间,您的USB驱动器正在从总线上掉落,当它回来时,块系统发现sdb消失了,尽管现在有一个sdc。
发布于 2019-04-03 08:47:44
umount卸载安装设备的任何文件系统。vgreduce命令删除物理卷,并(可选地) pvremove从磁盘中删除LVM元数据。multipath -l并记录设备的所有路径。然后,使用multipath -f device删除多路径设备。blockdev --flushbufs设备,将任何未完成的I/O刷新到设备的所有路径。这对于原始设备尤其重要,因为没有umount或vgreduce操作可以导致I/O刷新。/dev/sd、/dev/disk/by-path或major:minor编号。这对于确保将来添加的不同设备不会被误认为是当前设备是很重要的。echo 1 > /sys/block/device-name/device/delete,其中设备名称可能是sde。此操作的另一个变体是echo 1 > /sys/class/scsi_device/h:c:t:l/device/delete,其中h是HBA号,c是HBA上的通道,t是SCSI目标ID,l是LUN。有关更多细节,请参阅红帽文件!
此外,您还可以使用sg_utils脚本删除陈旧的卷使用rescan-scsi-bus.sh!
https://unix.stackexchange.com/questions/253104
复制相似问题