标签: block-device

故意在 Linux 中引起 I/O 错误?

无论如何,对于 Linux,有没有故意导致块设备报告 I/O 错误,或者可能出于测试目的模拟一个?

linux linux-kernel block-device

43
推荐指数
4
解决办法
1万
查看次数

LVM、设备映射器、软件突袭和块设备的预读设置 - 什么获胜?

我一直试图在这个问题上找到一个直接的答案,但事实证明这是难以捉摸的。这个问题它的答案是接近,但并没有真正给我,我想细节。让我们从我认为我知道的开始。

如果你有一个标准的块设备并且你运行sudo blockdev --report你会得到这样的东西:

RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096          0    500107862016   /dev/sda
rw   256   512  4096       2048    399999238144   /dev/sda1
rw   256   512  1024  781252606            1024   /dev/sda2
Run Code Online (Sandbox Code Playgroud)

现在,您决定使用--setra任何分区将默认值 256 更改为 128 ,并且它会发生在整个块设备上,如下所示:

sudo blockdev --setra 128 /dev/sda1
sudo blockdev --report
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   128   512  4096          0    500107862016   /dev/sda
rw   128   512  4096       2048    399999238144   /dev/sda1
rw   128   512  1024  781252606            1024 …
Run Code Online (Sandbox Code Playgroud)

linux lvm software-raid md block-device

29
推荐指数
1
解决办法
2万
查看次数

DRBD 是 Linux 唯一可行的块复制解决方案吗?

我发现自己需要块级别​​的冗余存储。文件级复制(Gluster、GFS 等)不适用于我的用例。

看起来 DRBD 是块复制的首选解决方案。似乎没有太多其他理智的选择。我的研究失败了,还是 DRBD 是城里唯一的游戏?

linux replication block-device

15
推荐指数
2
解决办法
2万
查看次数

为什么 nvme 有字符设备和块设备?

我正在尝试了解 nvme 的配置。

但我不明白为什么有两个设备:nvme 块和 nvme 字符设备:

crw------- 1 root root 243, 0 Dec 12 16:09 /dev/nvme0
brw-rw---- 1 root disk 259, 0 Jan 14 01:30 /dev/nvme0n1
Run Code Online (Sandbox Code Playgroud)

每个的目的是什么或何时使用它们?

device block-device nvme

12
推荐指数
2
解决办法
7622
查看次数

带有 blktap 磁盘(“tap:aio:”)的 Xen 4.1 主机(dom0)未连接

将 blktap 与 xen-4.1 一起使用时出现问题,该 xen-4.1 运行带有 dom0 xen-4.1 的 Ubuntu Precise 库存内核。

我得到:

[    5.580106] XENBUS: Waiting for devices to initialise: 295s...290s.
...
[  300.580288] XENBUS: Timeout connecting to device: device/vbd/51713 (local state 3, remote state 1)
Run Code Online (Sandbox Code Playgroud)

还有一些系统日志行:

May 17 13:07:30 localhost logger: /etc/xen/scripts/blktap: add XENBUS_PATH=backend/tap/10/51713
May 17 13:07:31 localhost logger: /etc/xen/scripts/blktap: Writing backend/tap/10/51713/hotplug-status connected to xenstore.
Run Code Online (Sandbox Code Playgroud)

与 tap:aio: 磁盘行。文件:/作品。

disk = [
    'tap:aio:/data/root.img,xvda1,w',
]
Run Code Online (Sandbox Code Playgroud)

清晰和精确的 domU 内核存在问题,并且两个来宾都在 Ubuntu hardy dom0 Host 64bit 2.6.24-28-xen xen-3.3 中工作

 3.2.0-24-generic #37-Ubuntu SMP …
Run Code Online (Sandbox Code Playgroud)

linux xen dom0 block-device

8
推荐指数
1
解决办法
4572
查看次数

RAID 条带大小对预读设置有何影响?

我正在尝试找出要在 RAID10 阵列上设置的正确预读值,我想知道 RAID 条带大小是否应纳入我的考虑因素。

我过去听说过关于此的相互矛盾的信息。我曾经听说您应该始终将预读值设置为 RAID 条带大小的倍数,并且永远不要低于条带大小,因为这是 RAID 控制器尝试一次读取的最小数据量。

然而,其他人告诉我,将预读设置为低于条带大小很好,并且实际上可以增加您可以跨阵列中的设备执行的并行读取量,从而提高性能并减少阵列上的负载。

那么它是哪个?不是条带大小倍数的预读设置是否有意义?

linux raid software-raid md block-device

6
推荐指数
1
解决办法
2616
查看次数

访问 LVM 卷上的分区

假设您有一个 LVM 卷 /dev/vg0/mylv。您已将此作为虚拟磁盘呈现给虚拟化或模拟的来宾系统。在安装过程中,来宾系统将其视为 /dev/sda 并将其分区为 /dev/sda{1,2,5,6} 并完成安装。现在,您需要从主机系统内部访问这些文件系统,而无需运行来宾系统。fdisk 看到这些分区就好了:

# fdisk -l /dev/vg0/mylv
           Device Boot      Start         End      Blocks   Id  System
/dev/vg0/mylv1            2048      684031      340992   83  Linux
/dev/vg0/mylv2          686078    20969471    10141697    5  Extended
/dev/vg0/mylv5          686080     8290303     3802112   83  Linux
/dev/vg0/mylv6         8292352    11980799     1844224   83  Linux
Run Code Online (Sandbox Code Playgroud)

但是,/dev/vg0/mylv1 等设备实际上并不存在。我猜是因为它们在 LV 内,操作系统默认无法识别这种类型的嵌套。有什么方法可以刺激 Linux,以便 /dev/vg0/mylv1 或等效的出现,从而可以在主机系统中安装?

我知道 qemu-nbd 是可能的,并且在必要时会使用它。但是,如果可能的话,我希望有更直接的东西,而不是模拟网络块设备并附加它。

linux partition lvm qemu block-device

6
推荐指数
1
解决办法
308
查看次数

是否可以计算出硬盘上的坏块在物理上的位置?

dd_rescue是硬盘驱动器,我知道坏块在哪里。我仍然随身携带驱动器,因此我可以从 SMART 或fdisk.

我想知道是否有可能在物理上看到这些坏块所在的位置。我听说过扇区、磁道、柱面(至少在旧磁盘中),但我不知道磁盘是如何组织的,也不知道将块映射到物理扇区所涉及的数学。我相信这将是一个很好的起点,我会尽快搜索它,但由于这是我现在遇到的情况,我提前提出问题,因此任何人都可以早点帮我。

理想情况下,我会有一个圆形磁盘的(文字)图像,我将能够确定磁盘中的位置,比如说,块 #1000。

可行吗?可能不是在具有磨损均衡技术的磁盘中,但至少在桌面硬盘驱动器上,例如我正在查看的 Western Digital Caviar Green,具有超过 40k 的坏块。

这是一个学术问题。该磁盘显然将不再受信任,但我希望能够查看是否存在物理模式。

hard-drive block-device

6
推荐指数
1
解决办法
995
查看次数

/proc/partitions 中的大小单位没有意义

我有一个希捷 750GB 硬盘。

Parted 显示驱动器为 750GB

parted /dev/sdc print
Model: ST375064 0AS (scsi)
Disk /dev/sdc: 750GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End    Size   File system  Name     Flags
 1      17.4kB  750GB  750GB  ext3         primary
Run Code Online (Sandbox Code Playgroud)

但是,输入的大小/proc/partitions应该以块为单位:

cat /proc/partitions
major minor  #blocks  name
8       32  732574584 sdc
Run Code Online (Sandbox Code Playgroud)

Parted 说块大小是 512B,blockdev --getbsz /dev/sdc说块大小是 4096。

但是……很明显,这/proc/partition是错误地以 KiB 而不是块报告设备大小。

这种行为可以依赖于跨 Linux 和/或内核版本吗?(我需要一种可编写脚本且一致的方法来查找块设备的大小)

Centos 6.6 与 3.10 内核。

编辑我

lsblk -o kname,phy-sec,log-sec,min-io
KNAME PHY-SEC LOG-SEC MIN-IO
sda …
Run Code Online (Sandbox Code Playgroud)

linux partition block-device

6
推荐指数
1
解决办法
3060
查看次数

AWS:无法挂载我恢复的卷(EBS 快照)

我从 AWS Backup 恢复了 EBS 卷并将其附加到新的 EC2 实例。当我lsblk可以在名字下看到它时/dev/nvme1n1

\n

更具体地说,输出lsblk是:

\n
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\nloop0         7:0    0   25M  1 loop /snap/amazon-ssm-agent/4046\nloop1         7:1    0 55.4M  1 loop /snap/core18/2128\nloop2         7:2    0 61.9M  1 loop /snap/core20/1169\nloop3         7:3    0 67.3M  1 loop /snap/lxd/21545\nloop4         7:4    0 32.5M  1 loop /snap/snapd/13640\nloop5         7:5    0 55.5M  1 loop /snap/core18/2246\nloop6         7:6    0 67.2M  1 loop /snap/lxd/21835\nnvme0n1     259:0    0    8G  0 disk \n\xe2\x94\x94\xe2\x94\x80nvme0n1p1 259:1    0    8G  0 part /\nnvme1n1     259:2    0 …
Run Code Online (Sandbox Code Playgroud)

linux mount amazon-ebs block-device nvme

6
推荐指数
0
解决办法
923
查看次数