Ⅰ linux下如何查询哪个磁盘是SSD
Linux
SSD是非转动磁盘, Linux可以通过读 sysfs:
cat /sys/block/sda/queue/rotational
返回 0, 就是 SSD。
Windows
据说可以用GetDriveType接口去读。
ATA命令
ATA命令里的Identify Device得到的回log中,word 217是Nominal media rotation rate,表示答RPM,转数。SSD没有转数,所以有一个标志位表示它是非转动磁盘。
Ⅱ linux下怎么查看ssd盘的读写次数
虽说灵魂献祭d简称ssd。。。但在这里问硬盘方面的问题。。。
Ⅲ 请教关于linux上nvme ssd的ioctl调用的问题
省去了控制器的复NVMe比SAS/SATA的热制插拔要复杂的多。在进行热插拔测试之前,第一步就是要确认当前的系统是否支持热插拔。1,确认SSD的支持对于SSD,热插拔需要保证在插盘的过程中不会产生电流波峰而损坏器件;拔盘的时候,不会因为突然掉电而丢失数据。这个可以向SSD供应商确定或者查看产品规格书。2,确认PCIe卡槽的支持上面提到,NVMe是直接连接到PCIeBus上的,U.2接口也是直接跟PCIe相连(当判断插入的设备为NVMeSSD时)。某些U.2接口内部连接的PCIe卡槽并不支持热插拔。PCIeSpec规定了热插拔寄存器。下图(通过lspci-vvv获取)显示了一个PCIe卡槽的Capabilities寄存器信息。其中LnkSta,SltCap,SltCtl和SltSta4个部分在热插拔过程中比较有用(具体意义请参考PCIeSpec)。HotPlug和Surprise是最基础的判断热插拔的标志位。SltSta中有一个PresDet位指示当前是否有PCIe设备插入卡槽。
Ⅳ 固态硬盘在linux下怎么优化
1.使用Ext4 without journaling文件系统
传统的SSD+Linux组合一般推荐Ext2文件系统,主要是考虑到Ext3、Ext4需要额外的记录日志,会缩短SSD使用寿命,而且新出现的TRIM技术在Ext2中有两个缺点:
仅支持离线TRIM,换句话说文件系统必须只读挂载;
需要手动执行hdparm命令或wiper.sh脚本。
Ext4则没有这些限制,允许TRIM后台运行,并且日志记录功能可以手动关闭(没有日志的情况下,文件系统更容易损坏,如突然断电),如果你甘愿冒这样的风险,从而延长SSD使用寿命,值得一试。另外,许多测试中如:Testing EXT4 & Btrfs On A Serial ATA 3.0 SSD,像Btrfs这样为SSD准备的文件系统不如Ext4速度快(用SSD不就为了快么)。
所以,上面安装系统时,选择了Ext4系统,接下来需要关闭日志功能。
首先,系统挂载时无法停用日志功能,所以需要进入刚才的U盘系统,利用root权限执行:
tune2fs -O ^has_journal /dev/sda1
即关闭/dev/sda1上的日志功能。
然后,运行操作系统检测:
e2fsck -f /dev/sda1
不这样,文件系统可能会出错。
最后,重启,进入SSD中的系统,检查是否设置成功:
dmesg | grep EXT4
如果出现:
EXT4-fs (sda1): mounted filesystem without journal
说明设置成功。
原来是:mounted filesystem with ordered data mode
如果需要再次开启日志功能,只要运行tune2fs -O has_journal /dev/sda1即可。
2.开启TRIM功能
TRIM是一种操作系统调度SSD块写入的方式。主要是因为同一个SSD的闪存单元频繁操作会磨损,影响使用寿命,区别于传统的机械硬盘处理删除数据。Linux内核自2.6.33开始支持TRIM。
首先,检查内核版本是否支持TRIM:
uname -a
然后,检查SSD硬盘是否支持TRIM:
hdparm -I /dev/sda
如果显示比如(不同硬件可能不同提示):
* Data Set Management TRIM supported
说明支持。
这两个条件都满足,在/etc/fstab中将:
/dev/sda1 / ext4 defaults 改为:
/dev/sda1 / ext4 discard,defaults 分区、挂载点、已经存在的选项不一定一样。
测试新的fstab文件:
mount -oremount /dev/sda1
然后挂载:
mount
如果显示discard字样,说明成功,如:
/dev/sda1 on / type ext4 (rw,discard)
3.swap空间处理
对于大内存来说swap基本上都是空闲的,除非电脑进入休眠状态,系统会将内存内容转到swap中。有了SSD,开关机都在几秒中,对我来说swap没用,所以上面直接不分配swap空间。
如果分配了也行,空间要小,而且通过设置/proc/sys/vm/swappiness里面的值,来减少swap换出量:
echo 1 > /proc/sys/vm/swappiness
0到100之间,值越大换出量越大。
4.设置noatime
当访问文件时,系统会更新last-access这个文件/目录元数据,设置noatime后可以减少这种操作。
将2步中的:
/dev/sda1 / ext4 discard,defaults 改为:
/dev/sda1 / ext4 noatime,discard,defaults 测试设置成功方法与上面一样。
5.使用noop磁盘调度
通常操作系统调度机械硬盘时会提供一些数据的物理位置,这样有利于机械硬盘优化寻道,但是对SSD没意义,所以采用noop磁盘调度,即简单发送请求,可以提高效率。
可以通过以下命令查看调度方法:
cat /sys/block/sda/queue/scheler
比如显示:
[noop] deadline cfq
在/etc/rc.local中添加如下语句:
echo noop > /sys/block/sda/queue/scheler
6.内存分区加速
如果内存够大,可以用ramdisk的方式,将一些经常变化的位置如/tmp放入内存,加快速度,减少对SSD的访问。
依然是加在/etc/fstab中:
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0
更新方法与2相同,记得将浏览器等程序的缓存目录设置到/tmp下。
Ⅳ 求SPI的SSD1306在linux下的测试程序
求SPI的SSD1306在linux下的测试程序理解SPI的驱动框架,还是从最基本的三个入口点触发,platform_device,platform_bus,platform_driver。
其中内核一提供给platform_bus,platform_driver在spi_s3c24xx_gpio.c和spi_s3c24xxc.c中,其中spi_s3c24xx_gpio.c用于IO模拟SPI (本例讨论的是IO模拟SPI),spi_s3c24xxc.c用于s3c24xx的硬件SPI。因此,我们需要动手写一个platform_device。
看看spi_s3c24xx_gpio.c做了些什么。
static int s3c2410_spigpio_probe(struct platform_device *dev)
{
... ...
/* [cgw]: 分配一个SPI主机 */
master = spi_alloc_master(&dev->dev, sizeof(struct s3c2410_spigpio));
... ...
sp = spi_master_get_devdata(master);
platform_set_drvdata(dev, sp);
/* [cgw]: 分配与spi硬件相关的配置,如指定哪些IO为MISO,MOSI,SCLK,CS,SPI工作模式,最大时钟等等 */
/* in the plkatform data */
sp->info = dev->dev.platform_data;
/* [cgw]: 提供实现SPI各种模式的时序的基本方法,和CS的激活方法 */
/* setup spi bitbang adaptor */
sp->bitbang.master = spi_master_get(master);
sp->bitbang.chipselect =
Ⅵ linux怎么查看磁盘是ssd还是hdd
1、判断cat
/sys/block/*/queue/rotational的返回值。如果返回1则表示磁盘可旋转,可以判断是HDD;反之,如果返回0,则表示磁盘不可以旋转,就有可能是SSD。
注意:/sys/block/下面不只有硬盘,还可能有别的块设备,它们都会干扰你的判断。
2、使用lsblk命令进行判断,参数-d表示显示设备名称,参数-o表示仅显示特定的列。