Ⅰ 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表示僅顯示特定的列。