我想知道磁盘是固态驱动器还是硬盘。
lshw
未安装。我做了yum install lshw
,它说没有名为 lshw 的包。我不知道哪个版本的http://pkgs.repoforge.org/lshw/适合我的 CentOS。
我在网上搜索,没有任何内容可以解释如何知道驱动器是 SSD 还是 HDD。我应该先格式化它们吗?
结果fdisk -l
:
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074f7d
Device Boot Start End Blocks Id System
/dev/sda1 * 1 14 103424 83 Linux
Partition 1 does not end …
Run Code Online (Sandbox Code Playgroud) 我买了一个 SSD,我打算用全新的 Linux 安装来设置我的桌面系统。
众所周知,SSD 速度很快,但它们有一个缺点:写入次数(每个块?)是有限的。
所以我在考虑哪些数据应该放在 SSD 上,哪些应该放在 HDD 驱动器上。一般我认为经常变化的数据应该放在HDD上,不经常变化的数据可以放在SSD上。
现在我用类似的场景阅读了这个问题。答案中写道:“SSD 驱动器非常适合交换空间......”
为什么 SSD 非常适合交换空间?好的,我认为提高系统性能的潜力很大,但不会频繁交换数据更改,因此会在 SSD 上进行多次写入,从而导致 SSD 寿命较短?
/var 目录呢?它的内容不是也经常变化吗?把它放在硬盘上不是一个好主意吗?
是否还有其他不应位于 SSD 上的数据?
我有时需要将磁盘插入磁盘托架。在其他时候,我有一个非常奇怪的设置,即使用笔记本电脑上的 SATA-eSATA 电缆连接 SSD,同时从台式机上取电。
如何安全地从系统中移除 SATA 磁盘?这个Phoronix论坛帖子有一些建议:
justsumdood 写道:
An(noymous)droid 写道:
那么在拔掉插头之前你在软件方面做了什么?它是一个简单的“umount /dev/sd”[驱动器号]吗?卸载设备后,要“关闭”(或休眠)设备:Run Code Online (Sandbox Code Playgroud)hdparm -Y /dev/sdX
(其中 X 代表您要关闭的设备。例如:/dev/sdb)
这将使驱动器断电,以便在没有电压浪涌风险的情况下将其移除。
这是否意味着磁盘缓存会在此后正确刷新并关闭电源?
来自同一线程的另一个建议:
chithanh 写道:
所有 SATA 和 eSATA 硬件都可以在物理上进行热插拔(即如果插入/拔出插头不会损坏)。芯片组和驱动程序如何处理这是另一个问题。某些驱动程序/芯片组组合不能正确处理热插拔,需要一个热插拔命令,例如以下命令:
Run Code Online (Sandbox Code Playgroud)echo 0 - 0 > /sys/class/scsi_host/hostX/scan
将 X 替换为适合您的 SATA/eSATA 端口的编号。
我怀疑这样做是否正确,但我也找不到一些证据来反对它。
那么,从系统中删除附加磁盘的正确方法是什么?假设我已经卸载了磁盘上的每个分区并运行了sync
. 如果可能,请指向一些官方文档,我在 Linux 文档树或Linux ATA wiki 中找不到任何内容。
从最终用户的角度来看sync
,async
挂载选项和挂载选项有什么区别?使用这些选项之一挂载的文件系统是否比使用另一个选项挂载更快?如果没有设置,哪个选项是默认选项?
man mount
说这个sync
选项可能会减少闪存的寿命,但它可能是过时的传统智慧。无论如何,这让我有点担心,因为我的主硬盘驱动器,分区/
和/home
放置的位置,是 SSD 驱动器。
Ubuntu的安装程序(14.04)没有指定sync
,也不async
供选择/
分区,但已经设置async
了/home
由选项defaults
。这是我的/etc/fstab
,我添加了一些额外的行(见评论),但没有改变安装程序所做的行中的任何内容:
# / was on /dev/sda2 during installation
UUID=7e4f7654-3143-4fe7-8ced-445b0dc5b742 / ext4 errors=remount-ro 0 1
# /home was on /dev/sda3 during installation
UUID=d29541fc-adfa-4637-936e-b5b9dbb0ba67 /home ext4 defaults 0 2
# swap was on /dev/sda4 during installation
UUID=f9b53b49-94bc-4d8c-918d-809c9cefe79f none swap sw 0 0
# here goes part written by me:
# /mnt/storage
UUID=4e04381d-8d01-4282-a56f-358ea299326e …
Run Code Online (Sandbox Code Playgroud) 我想对 ssd(可能使用加密文件系统)进行基准测试,并将其与由 Crystaldiskmark 在 Windows 上完成的基准测试进行比较。
那么我怎样才能测量出与 Crystaldiskmark 大致相同的东西呢?
对于第一行(Seq),我想我可以做类似的事情
LC_ALL=C dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
sudo su -c "echo 3 > /proc/sys/vm/drop_caches"
LC_ALL=C dd if=tempfile of=/dev/null bs=1M count=1024
Run Code Online (Sandbox Code Playgroud)
但我不确定dd
参数。
对于随机 512KB、4KB、4KB(队列深度=32)读/写速度测试,我不知道如何在 linux 中重现测量结果?那么我该怎么做呢?
为了测试阅读速度,类似的东西sudo hdparm -Tt /dev/sda
对我来说似乎没有意义,因为我想要例如基准测试之类的东西encfs
。
编辑
@Alko,@iain
也许我应该写一些关于这个问题的动机:我正在尝试对我的 ssd 进行基准测试并比较一些加密解决方案。但这是另一个问题(在我的系统上对不同加密解决方案进行基准测试的最佳方法)。在网上浏览有关 ssd 和基准测试的信息时,我经常看到用户在论坛上发布他们的 CrystelDiskMark 结果。所以这是这个问题的唯一动机。我只想在 linux 上做同样的事情。对于我的特定基准测试,请参阅我的其他问题。
我已经使用过hdparm -n
,smartctl -A
但它似乎总是一种“每驱动器”技术,因为驱动器可能只回答这些工具中的一个。
那么,是否有一种标准方法可以在 Linux(HDD 或 SSD)上获取驱动器温度?如果没有,我可以使用什么(其他)工具来获取这些信息?
我们都知道 SSD 的预定寿命是有限的。如何在 Linux 中检查 SSD 的当前健康状态?
大多数谷歌搜索结果会要求您查找名为 Media_Wearout_Indicator 的百分比字段的 SMART 信息,或其他术语指标,如长期数据耐力——不存在——是的,我确实检查了两个 SSD,都没有这些字段。我可以继续寻找第三个 SSD,但我觉得这些字段没有标准化。
为了演示这里的问题,我们举了两个例子。
对于第一个 SSD,不清楚哪个字段表示磨损级别。然而,只有一个 Unknown_Attribute 的 RAW VALUE 介于 1 和 100 之间,因此我只能假设这就是我们正在寻找的:
$ sudo smartctl -A /dev/sda
smartctl 6.2 2013-04-20 r3812 [x86_64-linux-3.11.0-14-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
5 Reallocated_Sector_Ct 0x0002 …
Run Code Online (Sandbox Code Playgroud) 有不同的来源,建议采用不同的做法。我发现以下建议应该多久运行一次 fstrim。
什么是最佳选择,为什么?Ubuntu 14.04 默认使用第一个选项。
每当我出售驱动器时,我都会使用来自现场环境的碎片将其归零一次:
sudo shred -vzn 0 /dev/sdX
Run Code Online (Sandbox Code Playgroud)
在我仔细检查之前,它没有安装。这是我所知道的安全擦除驱动器的最快方法。现在我听说这对 SSD 不利。有没有办法安全地擦除同样快或更快的 SSD?
从理论的角度来看,我理解您需要覆盖整个卷才能使恢复变得不可能。所以我不知道有什么方法可以减轻 SSD 的压力。有人告诉我一次通过根本不会减少 SSD 的使用寿命。
会cat /dev/zero > /dev/sdX
一样快吗?
我不是在这里处理敏感数据,也不需要保护驱动器免受知识渊博的人不遗余力地恢复数据的影响。快速是我所需要的,同时又不会减少 SSD 的使用寿命。
编辑:这是否适用于 SSD 就像适用于 HDD 一样?
dd if=/dev/urandom of=/dev/sdc bs=1M count=2
Run Code Online (Sandbox Code Playgroud) 我在这个问题中看到可以将 SSD 和标准 SATA 硬盘驱动器放入单个 LVM 卷组 (VG)。
这如何影响性能?
当数据位于单个卷组内的 SATA 驱动器上时,有没有办法强制操作系统位于 SSD 上?
是否有关于在不同类型的驱动器上使用 LVM 的好的白皮书?
为每种驱动器类型和/或速度创建 VG 是否有益?我正在考虑为 SSD 创建一个 VG,为 SATA 创建一个 VG(以及我将来可能会添加的每种驱动器类型)。
ssd ×10
hard-disk ×5
linux ×2
benchmark ×1
block-device ×1
dd ×1
disk ×1
filesystems ×1
flash-memory ×1
fstab ×1
hardware ×1
hot-plug ×1
lvm ×1
mount ×1
partition ×1
performance ×1
sata ×1
shred ×1
smartctl ×1
swap ×1
temperature ×1
trim ×1