标签: hdparm

为什么驱动器的大小有两个不同的值,以及如何将它们与设备映射器和 LVM 协调?

我有一个通过 USB 连接的 1 TB 驱动器。它包含一个填充整个设备的 LVM物理卷(没有任何分区表)。当我尝试使用整个 PV扩展逻辑卷时设备映射器开始抱怨 LVM 在 PV 上分配的部分大于设备。来自设备映射器的错误消息(如 所示dmesg)报告大小为1953320367 [dm] 扇区:

device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367
Run Code Online (Sandbox Code Playgroud)

但是 LVM 创建了一个具有 238467 个物理范围的 PV ,即1953521664 [lvm] 个扇区(大约多 100 MB):

$ pvdisplay /dev/sdf
  --- Physical volume ---
  PV Name               /dev/sdf
  VG Name               apu-vg1
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238467 …
Run Code Online (Sandbox Code Playgroud)

linux lvm hard-disk device-mapper hdparm

14
推荐指数
1
解决办法
2327
查看次数

即使未安装,磁盘(在 USB 外壳中)也会不断唤醒

设置

我的 USB 机箱(Buffalo DriveStation Quad)包含四个连接到我的 nas 服务器(ubuntu 服务器 14.04)的驱动器。机箱配置为 JBOD 模式,因此我将在 Linux 中看到所有磁盘。

其中两个磁盘(sdb 和 sdc)使用软件 raid 配置为/dev/md0(raid1)。并且/dev/md0作为单个分区 ( /mnt/part1)挂载为ext4 文件系统,没有日志记录。

另外两个磁盘(sdd 和 sde)使用 LVM 设置为一个卷组,我从中安装了两个逻辑分区。其中一个是整个卷组容量的 90% ( /mnt/part2),另一个是 10% ( /mnt/part3)。两者都是没有日志记录的 ext4。

APM 问题

我的问题始于默认的 APM 模式,因为我注意到硬盘驱动器磁头每隔几分钟就会非常积极地停放。在对该主题进行了一番研究后,我最终使用了hdparm -B198 /dev/sd[bcde]. 这似乎可以实现一定程度的节能,但实际上并没有进行任何头部停车。

有睡吗?

我对目前的情况感到满意,但如果没有活动,我仍然希望驱动器进入睡眠状态。尤其是 sdb 和 sdc ( /mnt/part1),它们在 95% 的时间内没有真正获得任何活动。无论我尝试过什么,问题似乎都在于驱动器的睡眠时间不会超过一两分钟。

卸载所有分区并发出命令hdparm -y /dev/sd[bcde]将使驱动器进入睡眠模式,但只会持续几分钟。之后,他们都会一一醒来。我尝试通过启用 block_dump ( echo 1 > /proc/sys/vm/block_dump)来调试问题,但没有看到对磁盘的任何访问。

我还尝试使用 禁用 APM hdparm -B255 /dev/sd[bcde],然后命令它们进入睡眠状态,但同样的事情。几分钟后驱动器仍然会醒来。 …

power-management hard-disk usb-drive hdparm

13
推荐指数
1
解决办法
1095
查看次数

强制重读分区表:BLKRRPART 和 BLKPG ioctl 之间的区别?(Linux)

当我希望 Linux 在不重启的情况下考虑新创建的分区时,我有几个工具可用于强制刷新内核“分区缓存”:

  • partx -va /dev/sdX
  • kpartx -va /dev/sdX
  • hdparm -z /dev/sdX
  • sfdisk -R /dev/sdX
  • partprobe /dev/sdX
  • ...

我不确定这些技术之间的区别,但我认为它们不使用相同的ioctl,例如BLKRRPARTBLKPG。那么,它们之间有ioctl什么区别呢?

linux partition sfdisk hdparm

10
推荐指数
1
解决办法
9423
查看次数

如何检查驱动器是否支持热插拔?

并非所有SATA 驱动器都支持热插拔。尤其是较旧的型号似乎无法正常工作,并且需要重新启动系统,尽管控制器与较新的驱动器配合良好。

问题:如何在不拔插的情况下检查驱动器是否支持热插拔?

我想可以使用它来实现,hdparm但我找不到它。也许还有其他可用的方法?有人可以建议吗?

sata hard-disk hot-plug hdparm

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

列出 NVMe 驱动器的功能(如非 NVME 的 hdparm -I)

使用非 NVMe 驱动器,我可以运行:

# hdparm -I /dev/whatever | grep TRIM
Data Set Management TRIM supported (limit 8 block)
Deterministic read data after TRIM
Run Code Online (Sandbox Code Playgroud)

使用三星 960 EVO 1TB NVMe 驱动器 (PCI Express),我得到:

# hdparm -I /dev/nvme0n1
/dev/nvme0n1:
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
Run Code Online (Sandbox Code Playgroud)

我可以跑

# smartctl --all /dev/nvme0n1
Run Code Online (Sandbox Code Playgroud)

并获取有关驱动器的一些信息,但没有关于 TRIM 类型的信息。

我装了nvme-cli,跑nvme get-feature -f 0-f 0xe并从驱动器得到了一些功能,但没有对TRIM类型。

Linux 中有没有办法查询 NVME 设备,列出它支持的 TRIM 类型?

在 Linux 中是否有一种方法可以查询 NVMe 设备,以获取hdparm -I如果它不是 NVMe 时会显示的其他任何内容的列表,smartctl并且nvme …

smartctl hdparm nvme

7
推荐指数
1
解决办法
8604
查看次数

为什么缓存读取比 hdparm --direct 中的磁盘读取慢?

我正在尝试解释 hdparm 的这个结果:

janus@behemoth ~ $ sudo hdparm  -Tt --direct /dev/nvme0n1

/dev/nvme0n1:
 Timing O_DIRECT cached reads:   2548 MB in  2.00 seconds = 1273.69 MB/sec
 Timing O_DIRECT disk reads: 4188 MB in  3.00 seconds = 1395.36 MB/sec
Run Code Online (Sandbox Code Playgroud)

我不明白缓存读取如何比直接磁盘读取慢。如果我删除 --direct,我会得到我所期望的:磁盘读取比缓存的慢:

janus@behemoth ~ $ sudo hdparm  -Tt /dev/nvme0n1

/dev/nvme0n1:
 Timing cached reads:   22064 MB in  2.00 seconds = 11042.86 MB/sec
 Timing buffered disk reads: 2330 MB in  3.00 seconds = 776.06 MB/sec
Run Code Online (Sandbox Code Playgroud)

(虽然它现在说“缓冲磁盘读取”)。

有人可以向我解释发生了什么吗?

output hdparm

5
推荐指数
1
解决办法
2628
查看次数

hdparm 是否有测试写入速度的选项?

hdparm -t [device] 
Run Code Online (Sandbox Code Playgroud)

告诉我阅读速度。有没有办法显示写入速度?当我man hdarm | grep write得到 flag -F-n-r-W,所有这些都没有提供我正在寻找的所需结果。

那么有没有一种方法可以通过一个命令来显示读写速度呢?

filesystems hardware centos hard-disk hdparm

5
推荐指数
1
解决办法
9375
查看次数

“hdparm”电源管理设置存储在磁盘本身还是操作系统中?

我已经使用命令行设置了旋转时间hdparm -S 100 /dev/sda1,但在重新启动后(在此期间我分离了磁盘,但随后使用相同的电缆/端口再次连接它),它似乎没有进入睡眠状态。于是,我再次应用了该命令。

我认为睡眠设置存储在磁盘的固件中并由磁盘本身处理,因此它独立于计算机(新操作系统、操作系统重新启动等)。这是错误的吗?并且该设置存在于操作系统中,因此我必须hdparm -S在每次操作系统启动时再次运行该命令?

hard-disk hdparm

5
推荐指数
1
解决办法
2297
查看次数

从pseudo-fs获取块设备型号名称和制造商

[gala@arch ~]$ sudo !!
sudo hdparm -i /dev/sda

/dev/sda:

 Model=KINGSTON SHFS37A120G, FwRev=603ABBF0, SerialNo=50026B725B0A1515
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=unknown, MaxMultSect=1, MultSect=1
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-2,3,4,5,6,7

 * signifies the current active mode
Run Code Online (Sandbox Code Playgroud)

hdparmModel从哪里读取字段?从哪里来sysfs?从哪里来?

hard-disk sysfs hdparm

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

如何使用 ATA 命令检查磁盘是否为 SSHD(混合驱动器)

看了这个问题:

如何知道磁盘是 SSD 还是 HDD

我能够检测到 HDD 和 SSD。现在的问题是我不知道如何检测SSHD,因为该hdparm工具显示我的磁盘(ST1000DX001)是经典HDD。

我是否能够根据通过发出 IDENTIFY Ata 命令收集的任何信息来检测它?

linux hard-disk hdparm ssd-hdd-hybrid

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

为什么安全擦除不起作用?SG_IO:检测数据错误/丢失

我想安全地擦除我的 SSD(在 Ubuntu 18.04 上)

\n\n

我愿意

\n\n
sudo time hdparm --user-master u --security-erase mypassword /dev/sda\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到此错误消息

\n\n
/dev/sda:\n Issuing SECURITY_ERASE command, password="mypassword", user=user\nSG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 04 51 40 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\nSG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 04 51 40 01 21 04 00 …
Run Code Online (Sandbox Code Playgroud)

ssd hdparm

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

hpdarm -Y 是否足以停止我硬盘上的 IO?

我在笔记本电脑中使用带有两个硬盘驱动器的 Ubuntu 14.04。第一个包含我的根分区和我的主分区。第二个仅用于备份。

我知道硬盘驱动器会在几年后坏掉。由于第二个仅用于备份,我想确保在我不进行备份时没有读取/写入数据。/etc/fstab此硬盘驱动器的条目如下所示:

UUID=1ab2c3d4-1234-1234-1234-a1b2c3d4 /mnt/Backup btrfs defaults,comment=x-gvfs-show 0 2
Run Code Online (Sandbox Code Playgroud)

目前,我使用

hdparm -Y /dev/disk/by-uuid/1ab2c3d4-1234-1234-1234-a1b2c3d4
Run Code Online (Sandbox Code Playgroud)

让我的硬盘进入睡眠状态。这够了吗?

io debian hard-disk hdparm

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