首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >U2在linux中的热交换?

U2在linux中的热交换?
EN

Unix & Linux用户
提问于 2022-07-04 13:22:33
回答 1查看 578关注 0票数 1

我有一个Debian 11和一个U2SSD,应该是热交换的;这是我的内核:

代码语言:javascript
复制
root@eris:~# uname -a
Linux eris 5.18.0-0.bpo.1-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.18.2-1~bpo11+1 (2022-06-14) x86_64 GNU/Linux

驱动器安装在一个‘冰坞U2 NVMe SSD’,在引导时检测良好,我可以格式化和挂载它;但是,当我从机架上取出它时,内核不会检测到更改(没有dmesg中的任何内容),当我把它放回去时,mount和其他命令也找不到它。

我找到了本文中的在AIX中也是如此,也许在取出驱动器之前,我应该执行一些步骤--例如,在AIX中,您将首先告诉系统“取消配置”驱动器。

那么,我是不是做错了什么,如果是的话,我需要做什么来解决这个问题?

EN

回答 1

Unix & Linux用户

发布于 2022-07-07 09:33:01

我找到了一种方法来做我所需要的,即“取消配置”和“配置”驱动器作为热插拔的一部分。到目前为止,这就是我所做的,而且实际上比较简单:

这些是我的积木设备:

代码语言:javascript
复制
root@eris:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0  3.6T  0 disk 
├─nvme0n1p1 259:1    0  476M  0 part /boot/efi
├─nvme0n1p2 259:2    0 38.1G  0 part /
└─nvme0n1p3 259:3    0  3.6T  0 part /data
nvme1n1     259:4    0  3.5T  0 disk /test

我想取消配置的是nvme1n1 (从块设备列表中删除)。现在您需要在PCI总线上找到正确的设备地址,它被映射为/sys/bus/pci下的目录树--最简单的方法如下:

代码语言:javascript
复制
root@eris:~# for i in /sys/block/nvme*
> do
>   echo "$i is $(cat $i/device/address)"
> done
/sys/block/nvme0n1 is 0000:01:00.0
/sys/block/nvme1n1 is 0000:04:00.0

这表明nvme1n1对应于/sys/bus/pci/drivers/nvme/0000:04:00.0

代码语言:javascript
复制
root@eris:~# ll /sys/bus/pci/drivers/nvme/0000:04:00.0/
total 0
-r--r--r-- 1 root root  4096 Jul  7 09:24 aer_dev_correctable
-r--r--r-- 1 root root  4096 Jul  7 09:24 aer_dev_fatal
-r--r--r-- 1 root root  4096 Jul  7 09:24 aer_dev_nonfatal
-r--r--r-- 1 root root  4096 Jul  7 09:24 ari_enabled
-rw-r--r-- 1 root root  4096 Jul  7 09:24 broken_parity_status
-r--r--r-- 1 root root  4096 Jul  7 08:04 class
-rw-r--r-- 1 root root  4096 Jul  7 09:24 config
-r--r--r-- 1 root root  4096 Jul  7 09:24 consistent_dma_mask_bits
-r--r--r-- 1 root root  4096 Jul  7 09:24 current_link_speed
-r--r--r-- 1 root root  4096 Jul  7 09:24 current_link_width
-rw-r--r-- 1 root root  4096 Jul  7 09:24 d3cold_allowed
-r--r--r-- 1 root root  4096 Jul  7 08:04 device
-r--r--r-- 1 root root  4096 Jul  7 09:24 dma_mask_bits
lrwxrwxrwx 1 root root     0 Jul  7 08:04 driver -> ../../../../../../bus/pci/drivers/nvme
-rw-r--r-- 1 root root  4096 Jul  7 09:24 driver_override
-rw-r--r-- 1 root root  4096 Jul  7 09:24 enable
lrwxrwxrwx 1 root root     0 Jul  7 09:24 firmware_node -> ../../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:3b/device:3c/device:41/device:42
lrwxrwxrwx 1 root root     0 Jul  7 09:24 iommu -> ../../../../0000:00:00.2/iommu/ivhd0
lrwxrwxrwx 1 root root     0 Jul  7 09:24 iommu_group -> ../../../../../../kernel/iommu_groups/21
-r--r--r-- 1 root root  4096 Jul  7 09:24 irq
drwxr-xr-x 2 root root     0 Jul  7 09:24 link/
-r--r--r-- 1 root root  4096 Jul  7 09:24 local_cpulist
-r--r--r-- 1 root root  4096 Jul  7 09:24 local_cpus
-r--r--r-- 1 root root  4096 Jul  7 09:24 max_link_speed
-r--r--r-- 1 root root  4096 Jul  7 09:24 max_link_width
-r--r--r-- 1 root root  4096 Jul  7 09:24 modalias
-rw-r--r-- 1 root root  4096 Jul  7 09:24 msi_bus
drwxr-xr-x 2 root root     0 Jul  7 09:24 msi_irqs/
-rw-r--r-- 1 root root  4096 Jul  7 09:24 numa_node
drwxr-xr-x 3 root root     0 Jul  7 08:04 nvme/
-r--r--r-- 1 root root  4096 Jul  7 09:24 pools
drwxr-xr-x 2 root root     0 Jul  7 09:24 power/
-r--r--r-- 1 root root  4096 Jul  7 09:24 power_state
--w--w---- 1 root root  4096 Jul  7 09:24 remove
--w------- 1 root root  4096 Jul  7 09:24 rescan
--w------- 1 root root  4096 Jul  7 09:24 reset
-rw-r--r-- 1 root root  4096 Jul  7 09:24 reset_method
-r--r--r-- 1 root root  4096 Jul  7 09:24 resource
-rw------- 1 root root 16384 Jul  7 09:24 resource0
-r--r--r-- 1 root root  4096 Jul  7 08:04 revision
-rw------- 1 root root 65536 Jul  7 09:24 rom
lrwxrwxrwx 1 root root     0 Jul  7 08:10 subsystem -> ../../../../../../bus/pci
-r--r--r-- 1 root root  4096 Jul  7 08:04 subsystem_device
-r--r--r-- 1 root root  4096 Jul  7 08:04 subsystem_vendor
-rw-r--r-- 1 root root  4096 Jul  7 09:24 uevent
-r--r--r-- 1 root root  4096 Jul  7 08:04 vendor

这里我需要的是remove,一个只写的文件。若要将SSD设备从块设备列表中删除:

代码语言:javascript
复制
root@eris:~# echo 1 > /sys/bus/pci/drivers/nvme/0000:04:00.0/remove
root@eris:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0  3.6T  0 disk 
├─nvme0n1p1 259:1    0  476M  0 part /boot/efi
├─nvme0n1p2 259:2    0 38.1G  0 part /
└─nvme0n1p3 259:3    0  3.6T  0 part /data

它需要几秒钟,所以不要惊慌!为了拿回它:

代码语言:javascript
复制
root@eris:~# echo 1 > /sys/bus/pci/rescan
root@eris:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1     259:0    0  3.6T  0 disk 
├─nvme0n1p1 259:1    0  476M  0 part /boot/efi
├─nvme0n1p2 259:2    0 38.1G  0 part /
└─nvme0n1p3 259:3    0  3.6T  0 part /data
nvme1n2     259:5    0  3.5T  0 disk 

但是,请注意,nvme1n1已经变成了nvme1n2 --这是我还需要解决的问题,但我现在可以热插拔我的U2驱动器了。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/708574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档