我已将光纤通道磁盘添加到 RHEL 5.5 服务器。磁盘存在并显示在 /dev/sdxx 下 - 但我需要给 udev 一个踢并让它刷新 /dev/disk/by-label/LABEL 链接;这是我做挂载点的地方。
我不想重新启动系统。
我badblocks用来测试我用来启动 RPi 的 32GB class-10 microSD 卡。我已经有一个正常运行的文件系统,所以我不想用-w选项(破坏性读写测试)扫描它。
我有两个选择:我可以使用默认的只读测试,或者我可以使用非破坏性读写测试(通过备份扇区,破坏性地测试它,然后恢复扇区的原始内容来完成)。
选择测试类型时应该考虑什么?我希望它尽可能快,但我也需要准确的结果。
我需要能够从文件中顺序读取数据,同时不将正在读取的数据存储在页面缓存中,因为预计不会再次读取文件内容,并且因为盒子上存在内存压力(想要将宝贵的内存用于有用的磁盘 I/O 缓存)。
我的问题是关于如何优化这些读取。由于我知道正在读取的数据按顺序放置在磁盘上(减去碎片),我希望能够提前读取(通过增加 /sys/block/sda/queue/read_ahead_kb)但我不确定这是否将带来任何好处,因为我必须使用 posix_fadvise(带有 POSIX_FADV_DONTNEED 标志)来防止正在读取的数据存储在页面缓存中。
是否会因为从页面缓存中删除数据的提示而简单地丢弃预读数据?
我明白通过安装dstat,iostat我可以获得磁盘活动统计信息。
但是,现在我希望尽量减少依赖项,因为我不想强迫我的脚本用户安装其他东西。
所以我想知道是否有任何方法可以从某个地方读取磁盘统计信息/proc/?
我设置 smartd 来向我发送邮件报告,以防我的磁盘出现故障。不幸的是,我每天都会收到具有相同(不变)值的相同属性的垃圾邮件:
The following warning/error was logged by the smartd daemon:
Device: /dev/sdb [SAT], 1 Offline uncorrectable sectors
Device info:
ST32000542AS, S/N:XXXXX, WWN:5-XXXXXX-XXXXXXXX, FW:XXXX, 2.00 TB
Run Code Online (Sandbox Code Playgroud)
我完全意识到具有不可纠正扇区的磁盘所隐含的危险。(此磁盘用于 RAID10 配置)
我只是不想每天收到相同的电子邮件,我只想在值发生变化/增加时收到一封电子邮件。
这是我的当前配置/etc/smartd.conf:
DEVICESCAN -d removable -n standby -t -m root -M exec /usr/share/smartmontools/smartd-runner
Run Code Online (Sandbox Code Playgroud)
为了实现 smartd 的预期行为,我必须改变什么?
我对 linux 硬盘驱动器/存储设备、块文件的命名方式有点困惑。
我的问题是:
IDE 设备和分区是如何命名的?
EIDE 设备和分区是如何命名的?
PATA 设备和分区是如何命名的?
SATA 设备和分区是如何命名的?
SCSI 设备和分区是如何命名的?
最后,我一直在阅读有关此主题的文章,并且看到了“主驱动器”和“从驱动器”的提及。这些是什么,它们的用途是什么,它们是如何命名的?
我有一些 HDD 磁盘,它有 4096 个物理扇区大小和 512 个字节逻辑大小。它是SATA磁盘。现在我想在 Linux 中使用 4kiB 作为逻辑扇区大小 - 而不是 512 字节。我怎样才能做到这一点?是否可以将此磁盘切换为仅在 4kiB 模式下运行?
如何确保我创建的所有分区都与 4kiB 对齐?我是否必须手动计算给定分区的开始和结束扇区数才能对齐 4kiB?
我使用 Linux,有时使用 Windows。我主要是使用 Linux fdisk 创建分区 - 而不是 Windows 分区。也许使用“fdisk -b 4096”就足够了?嗯...可能不会,因为 Linux 如何知道给定磁盘使用的扇区大小?
我运行 Ubuntu-20,并且使用smartctl扫描了我的笔记本电脑。测试结果如下:
SMART Attributes Data Structure revision number: 32
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 100 100 050 Pre-fail Always - 807002
3 Spin_Up_Time 0x0023 100 100 002 Pre-fail Always - 1261
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 4358
5 Reallocated_Sector_Ct 0x0033 001 001 005 Pre-fail Always FAILING_NOW 9800
7 Seek_Error_Rate 0x002f 100 100 070 Pre-fail Always - 17337
9 Power_On_Hours 0x0032 …Run Code Online (Sandbox Code Playgroud) 我刚刚尝试调整该badblocks实用程序以使用更多 RAM,并可能实现更高的性能。
我运行的确切命令是(没有硬盘的序列号):
badblocks -v -b 4096 -c 98304 -w -s /dev/disk/by-id/ata-WDC_WD5000LPCX-24C6HT0_SN >> /root/spare-hdd-badblocks.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)
然而,我不badblocks经常使用该工具,所以如果我可能会问...该-c开关到底有什么作用以及为什么建议实现更高的速度?它真的会消耗更多内存吗?如果是这样,因为我有足够的内存,进一步增加它可能是明智的吗?
从它的手册页:
-c:块数是一次测试的块数。默认值为 64。
我不明白,我只是希望有人能明白。
信用、数学和更多有价值信息的来源:
http://www.pantz.org/software/badblocks/badblocksusage.html
我的系统:具有 32GB ECC RAM 的无头 Xeon 服务器上的 Debian 11。
我已经阅读了有关 Linux 中命令的使用sync及其工作原理的信息。但我无法理解何时真正应该在文件中使用它,而且我没有找到实际的例子。
例如,该命令sync --data file.txt同步该命令的文件数据,但我没有找到关于何时应该使用它以及该命令如何工作的有用示例。
也许有一个工具可以监视这些更改,或者我需要做什么来检查该命令的效果?