Ssd
有沒有辦法在 Linux/Unix 上找出 SSD 頁面大小?fdisk 輸出中的“物理塊”是什麼?
我到處讀到,內部 SSD 都是以 4K 或更大的“頁面”構成的,這些“頁面”分組為大約 128-256 個頁面(1、2)的“塊”。SSD 使用這些頁面和塊,“它們只能在塊級別擦除數據”(因此頁面塊稱為“
$$ NAND $$擦除塊”)。並且該分區的 512B 塊被模擬(這是出於遺留原因)。 我正在嘗試接受有關 SSD 的教育,因為在三星 9 np900x3c 筆記型電腦上寫入我的 Sandisk U100 時,我遇到了一些奇怪的滯後/凍結。一件有用的事情是正確找出我的 SSD 有哪些頁面/塊?
Linux 上是否有
/sys/...
用於確定 SSD 頁面大小的實用程序或文件?或者“可能需要驅動器並在 NAND 晶片上搜尋零件號”,如評論中所述?
Google搜尋我的 Sandisk SSD 我找不到合適的數據表/規格。但是Sandisk和人們確實提到了“4K 隨機讀/寫”。這是否意味著磁碟有 4K 頁?
另外,
fdisk
顯示扇區大小(物理和邏輯)和 I/O 512 字節:Disk /dev/sda: 128.0 GB, 128035676160 bytes 255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x4b914713 Device Boot Start End Blocks Id System /dev/sda1 * 2048 50331647 25164800 83 Linux /dev/sda2 50331648 239583231 94625792 83 Linux /dev/sda4 239583232 250068991 5242880 82 Linux swap / Solaris
這裡的“物理”扇區大小是多少?這似乎不是SSD驅動器本身的參數,因為大家都說SSD頁面是4K+。它是磁碟的模擬參數嗎?“邏輯”是分區的扇區大小?另外,什麼是 I/O 大小?
附言
這個問題可能與這個關於 USB 快閃記憶體的問題相同——答案沒有抓住重點,
man fsstat
說fsstat displays the details associated with a file system
問題是關於磁碟本身的。我的文章有更多細節,也許它會吸引更好的回應?
- 報告
fdisk
的物理塊大小是磁碟在詢問時報告的物理塊大小。它很少與 SSD 頁面或擦除塊有任何關係。- 4 KiB 讀/寫是衡量 I/O 性能的常用指標,代表“小型”I/O 操作。
- SSD 沒有標準的方法來報告其頁面大小或擦除塊大小。很少有製造商在數據表中報告它們。(因為它們可能會在 SKU 的生命週期內發生變化,例如由於供應商的變化。)英特爾的一份白皮書表明 4 KiB 對齊就足夠了。
- 對於實際使用,只需將所有資料結構(分區、LUKS 容器的有效負載、LVM 邏輯卷)對齊到 1 或 2 MiB 邊界。畢竟,它是一個 SSD——它旨在處理常見的文件系統,例如 NTFS(它使用 4 KiB 分配單元)。如果 Windows 認為將分區對齊到 1 MiB 就足夠了,您可以打賭任何 SSD 製造商都會確保他們的產品在這種配置下執行良好。
- 最好在任何分區之外留下大約 5% 到 10% 的未分配空間。超額配置空間對 SSD 及時保持性能有很大幫助。