我的公司制造了一个嵌入式 Debian Linux 设备,它从内部 SSD 驱动器上的 ext3 分区启动。由于该设备是一个嵌入式“黑匣子”,它通常以粗鲁的方式关闭,只需通过外部开关切断设备的电源即可。
这通常是没问题的,因为 ext3 的日志记录使事情井然有序,所以除了偶尔丢失部分日志文件之外,事情一直在顺利进行。
但是,我们最近看到许多单元在经过多次硬电源循环后,ext3 分区开始出现结构性问题——特别是,我们在 ext3 分区上运行 e2fsck,它发现了许多类似的问题显示在此问题底部的输出列表中。运行 e2fsck 直到它停止报告错误(或重新格式化分区)会清除问题。
我的问题是……在遭受大量突然/意外关闭的 ext3/SSD 系统上看到这样的问题有什么含义?
我的感觉是这可能是我们系统中软件或硬件问题的迹象,因为我的理解是(除非出现错误或硬件问题)ext3 的日志记录功能应该可以防止此类文件系统完整性错误。(注意:我知道用户数据没有被记录在日志中,因此可能会发生被删除/丢失/截断的用户文件;我在这里专门讨论文件系统元数据错误,如下所示)
另一方面,我的同事说这是已知/预期的行为,因为 SSD 控制器有时会重新排序写入命令,这可能会导致 ext3 日志混淆。特别是,他认为,即使在正常运行的硬件和没有错误的软件的情况下,ext3 日志也只会降低文件系统损坏的可能性,并非不可能,因此我们不应该对时不时地看到这样的问题感到惊讶。
我们谁是对的?
Embedded-PC-failsafe:~# ls
Embedded-PC-failsafe:~# umount /mnt/unionfs
Embedded-PC-failsafe:~# e2fsck /dev/sda3
e2fsck 1.41.3 (12-Oct-2008)
embeddedrootwrite contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Invalid inode number for '.' in directory inode 46948.
Fix<y>? yes
Directory inode 46948, block 0, offset 12: …Run Code Online (Sandbox Code Playgroud) 我在互联网上搜索了一个工具/实用程序,它可以告诉我对 SSD(或普通磁盘)执行的总写入量。输出应如下所示:
SSD Intel 320S :-
Total data written until now -- 2Tb
Total data read until now -- 4Tb
power on Hours -- 1234 Hrs
etc.
Run Code Online (Sandbox Code Playgroud)
但是我没有找到。有人知道这样的工具吗?
我知道 Windows 上的 SSDLife 工具可以做到这一点,但我特别希望在 Linux 上做到这一点。
我查找了Selivanov 建议的smartctl命令smartmontools。他的帖子非常有帮助。我将在这里添加更多信息,这些信息是我在网上搜索后发现的。
我发现gsmartcontrol(gui 版本smartctrl)特别有用。有关这些工具类的更多信息,请查看Smartmontools - 社区 Ubuntu 文档。此链接包含smartctl.
要了解每个 SMART 属性的含义,请查看此英特尔 SMART 属性。这些属性特定于英特尔 SSD,但仍然提供了一个想法,即 SMART 属性传达的信息类型。某些特定参数在不同 SSD 之间可能会有所不同。LBA 尺码是其中之一吗?我不知道。
另一个很好的信息来源是如何确定 Linux 下 SSD 的写入周期数或预期寿命?- 服务器故障。此处,最佳答案显示了SMART Attribute Id 225 …
破坏 SSD的可重复方式是什么?例如,如果我打开它,我可以取出并销毁数据的哪一部分(如何识别实际的“存储单元”)?
案例 1. 想要合理确定其数据不容易恢复的普通用户?
情况 2. 考虑数据是敏感的并且驱动器已经加密。要求是数据应该永远不可恢复,这意味着加密本身不足以满足要求。
意图:与其机械对应物相比,SSD 是电子的,因此问题如何破坏硬盘?不适用,因为它们的内在差异。我完全赞成根据这个问题更新原始问题(使其成为规范),然后将其作为副本关闭。
从这些先前提出的问题中剥离出来
我们有一个 HP 3PAR StoreServ 7400,其中 170 个虚拟机分布在 38 台主机上。
这是我理解的问题:(另外我被告知一些信息,我不确定它是否真实,我已经阅读了 HP 3PAR StoreServ 7400 白皮书并且真的找不到任何可以备份我的存储人员的东西告诉我。所以在下面如果有人注意到任何不真实的地方,请告诉我。)
3 PAR 分为 3 个部分,
第 1 层:SSD 用于缓存和快速访问常用文件。
第 2 层:和第 3 层:某种旋转盘,什么以及为什么有额外的 2 层我不确定,但我的假设是第 2 层用于不是最常访问但访问位的数据,第 3 层用于其余的存储。
在 SSD 部分中,当数据写入 SSD 块然后删除该块时,我在许多文章中读到过,直到将新数据写入该块时,该块才会归零,因此,当块内的数据被删除时,存储映射的表info 得到更新,然后当新数据写入同一个块时,该块首先需要归零,然后才能写入。如果驱动器没有周期性地调整,SSD 中的这个过程会导致较低的 w/r 速度。
3PAR LUN 是精简配置的,VM 是 Eager 厚配置的。
根据我的存储专家的说法,3PAR 有一个内置的特殊功能,可以根据需要将未使用的 SSD 存储提供给其他 VM,这是没有意义的。
事实核查:
厚置备的 VM 是一个 VMDK 文件,创建 VM 时,您指定 VM 的大小,这将创建一个 VMDK 文件。在我看来,这告诉我,如果 VM 被定期访问,那么整个 VMDK …
我想构建一个托管大约 2TB+ 数据的服务器。当然,就数据驱动器而言,SSD 不在此列。我的问题是:使用 SSD 作为引导驱动器有什么好处吗?我打算在上面放16G内存。我认为大部分时间服务应该加载到内存中,服务器应该很少需要重新启动。在这种情况下,使用 SSD 还是只使用带有两个 SATA 驱动器的 RAID1 有意义吗?
我们一直在 Linux (RHEL 5) 服务器中运行 SSD (Intel X25-M) 一段时间,但从来没有努力弄清楚过去一年它承受了多少写入负载。Linux下是否有任何工具可以告诉我们随着时间的推移大约有多少写入磁盘或者(甚至更好)它积累了多少磨损?只是在寻找提示,看看它是否接近死亡......
我最近遇到了一个致命的固件错误,该错误影响了部署在我数据中心的数十个 Crucial SSD。许多受影响的机器使用 LSI 或其他专有 SAS 控制器,Crucial 的可启动 ISO 无法识别这些控制器。所有受影响的机器都没有 Windows 许可证。其他 SSD 制造商的情况大致相似,包括三星和英特尔。
为了解决这个问题,我被迫停止每台机器,移除受影响的 SSD,从其热插拔盒中移除 SSD,将其临时安装到我的 ThinkPad 中,刷新固件,反转,冲洗,重复。通过所有受影响的设备花了一天的大部分时间。
我正在寻找硬件、软件和/或购买策略来缓解这种痛苦,因为 SSD 固件错误似乎不可避免,而且我们的 SSD 足迹正在增长。
我的第一个想法是买一台带有 eSATA 和其中一根电缆的笔记本电脑。至少应该这样做,所以我不必从他们的球童中取出驱动器。
当然其他人也遇到过这种情况。有什么新颖的解决方案吗?
我需要从我的一台 Linux 托管服务器上停用两个 SSD 磁盘。
为了安全地删除存储在磁盘中的数据,我打算使用:hdparm --security-erase.
我阅读了这个文档,它建议不要将任何磁盘连接到主机,除了要删除的磁盘。
并且本文指出,如果存在内核或固件错误,此过程可能会使驱动器无法使用或使运行它的计算机崩溃。
该服务器目前正在生产中,具有用于生产磁盘的软件 RAID 配置。我需要移除的磁盘没有 RAID 控制器。
题:
这是在生产环境中执行的相当安全的操作,还是通过移除磁盘并在另一台主机中执行此过程来更好地服务?
编辑:只是一个带有良好记录程序的链接
最近,我们的 oracle 数据库在我们目前所知的 1 个查询上锁定时遇到了问题。
我将对发生的事情进行细分,但实际上与我的问题没有太大关系,但我愿意接受建议。
断断续续地不知道什么时候会发生,过去一个月已经发生了 4 次,用户会点击应用程序中的某些内容。用户点击了什么仍然未知。无论单击什么,它都会对数据库运行查询,这将生成大约 700k 行。
我检查了正在运行查询的表,索引看起来不错。
数据库是 60GB,服务器上有 32GB。
从数据库服务器上的日志我看到高 I/O 但 CPU 和 RAM 保持不变。
一台应用服务器,CPU 使用率高达 75% 左右。我可以找到工作进程,找到 PID,但是当我终止与工作进程关联的 PID 时,CPU 将短暂关闭,然后立即恢复。
同样回收应用程序池,并重新启动 IIS 会做同样的事情,CPU 会短暂下降,然后又会恢复正常。
唯一可以使服务器恢复正常的方法就是重新启动。
所以我的建议是,如果这个查询是导致锁定的原因,可以增加盒子上的内存以允许数据库缓存并耗尽内存。我听过一次,但我不确定它是否属实。
存储是具有 3 层的 HP PAR 3,数据库几乎位于 SSD 层中。
SSD 或内存哪个更快
我们有一个服务器:
SSD 驱动器是 4 个全新的 2.5" Intel 530,读取速度为 540MB/s,写入速度为 490MB/s
但这是raid 10读取速度的测试结果:
hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 824 MB in 3.00 seconds = 274.50 MB/sec
[root@localhost ~]# hdparm -t /dev/mapper/vg_localhost-lv_root
/dev/mapper/vg_localhost-lv_root:
Timing buffered disk reads: 800 MB in 3.01 seconds = 266.19 MB/sec
Run Code Online (Sandbox Code Playgroud)
这是为了写入速度:
dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync
512+0 records …Run Code Online (Sandbox Code Playgroud) ssd ×10
linux ×4
controller ×1
ext3 ×1
filesystems ×1
firmware ×1
hard-drive ×1
hardware ×1
hp ×1
hp-proliant ×1
iis ×1
memory ×1
oracle ×1
redhat ×1
sata ×1
security ×1
trim ×1
ubuntu ×1