无论如何,对于 Linux,有没有故意导致块设备报告 I/O 错误,或者可能出于测试目的模拟一个?
我一直试图在这个问题上找到一个直接的答案,但事实证明这是难以捉摸的。这个问题和它的答案是接近,但并没有真正给我,我想细节。让我们从我认为我知道的开始。
如果你有一个标准的块设备并且你运行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) 我发现自己需要块级别的冗余存储。文件级复制(Gluster、GFS 等)不适用于我的用例。
看起来 DRBD 是块复制的首选解决方案。似乎没有太多其他理智的选择。我的研究失败了,还是 DRBD 是城里唯一的游戏?
我正在尝试了解 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)
每个的目的是什么或何时使用它们?
将 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) 我正在尝试找出要在 RAID10 阵列上设置的正确预读值,我想知道 RAID 条带大小是否应纳入我的考虑因素。
我过去听说过关于此的相互矛盾的信息。我曾经听说您应该始终将预读值设置为 RAID 条带大小的倍数,并且永远不要低于条带大小,因为这是 RAID 控制器尝试一次读取的最小数据量。
然而,其他人告诉我,将预读设置为低于条带大小很好,并且实际上可以增加您可以跨阵列中的设备执行的并行读取量,从而提高性能并减少阵列上的负载。
那么它是哪个?不是条带大小倍数的预读设置是否有意义?
假设您有一个 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 是可能的,并且在必要时会使用它。但是,如果可能的话,我希望有更直接的东西,而不是模拟网络块设备并附加它。
我dd_rescue是硬盘驱动器,我知道坏块在哪里。我仍然随身携带驱动器,因此我可以从 SMART 或fdisk.
我想知道是否有可能在物理上看到这些坏块所在的位置。我听说过扇区、磁道、柱面(至少在旧磁盘中),但我不知道磁盘是如何组织的,也不知道将块映射到物理扇区所涉及的数学。我相信这将是一个很好的起点,我会尽快搜索它,但由于这是我现在遇到的情况,我提前提出问题,因此任何人都可以早点帮我。
理想情况下,我会有一个圆形磁盘的(文字)图像,我将能够确定磁盘中的位置,比如说,块 #1000。
可行吗?可能不是在具有磨损均衡技术的磁盘中,但至少在桌面硬盘驱动器上,例如我正在查看的 Western Digital Caviar Green,具有超过 40k 的坏块。
这是一个学术问题。该磁盘显然将不再受信任,但我希望能够查看是否存在物理模式。
我有一个希捷 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) 我从 AWS Backup 恢复了 EBS 卷并将其附加到新的 EC2 实例。当我lsblk可以在名字下看到它时/dev/nvme1n1。
更具体地说,输出lsblk是:
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) block-device ×10
linux ×8
lvm ×2
md ×2
nvme ×2
partition ×2
amazon-ebs ×1
device ×1
dom0 ×1
hard-drive ×1
linux-kernel ×1
mount ×1
qemu ×1
raid ×1
replication ×1
xen ×1