在文件系统的底层,æ“ä½œç³»ç»Ÿæ ¹æ®ä¸åŒçš„硬盘接å£è¯†åˆ«ç¡¬ç›˜ï¼ˆç›˜ç¬¦ï¼‰ï¼Œä¹‹åŽä¸æ–抽象(设备文件ã€åˆ†åŒºã€LVMã€æŒ‚è½½ï¼‰ï¼Œé€æ¸è¿‡æ¸¡åˆ°è½¯ä»¶ç³»ç»Ÿå½“ä¸
如今说到硬盘,一般都会说到 机械硬盘(HDD)与 固æ€ç¡¬ç›˜ï¼ˆSSD)。其实在固æ€ç¡¬ç›˜è¿˜æ²¡æœ‰å¦‚ä»Šè¿™æ ·æ™®åŠçš„æ—¶å€™ï¼Œå¸¸ç”¨çš„ä¸¤ç§æ¦‚念是 ç£ç›˜ï¼ˆMagnetic Storage) å’Œ é—ªå˜ï¼ˆFlash Storage)
打开维基的“ç£ç›˜â€é¡µé¢å…¶å®žæŒ‡å‘的就是 HDD(Hard disk driveï¼‰ï¼Œä¹Ÿå°±æ˜¯ç¡¬ç›˜ã€‚ç›®å‰æœ€æ™®é使用的硬盘ä¾ç„¶æ˜¯ç£ç›˜â€”—一ç§ç£æ€§å˜å‚¨å™¨ã€‚现在为了与的固æ€ç¡¬ç›˜ï¼ˆSDD)相区分,åˆè¢«ç§°ä¸ºä¼ 统硬盘或机械硬盘
ç£ç›˜çš„æž„é€ åŽŸç†ä¸ºï¼šå°†ç£æ€§ææ–™è¦†ç›–在圆形碟片(或者说盘片)上,通过一个读写头(ç£å¤´ï¼‰æ‚¬æµ®åœ¨ç¢Ÿç‰‡è¡¨é¢æ¥æ„ŸçŸ¥å˜å‚¨çš„æ•°æ®ã€‚通过碟片的旋转和ç£å¤´çš„径å‘移动æ¥è¯»å†™ç¢Ÿç‰‡ä¸Šä»»æ„ä½ç½®çš„æ•°æ®ã€‚碟片被划分为多个环形的轨é“(称为ç£é“,Track)æ¥ä¿å˜æ•°æ®ï¼Œæ¯ä¸ªç£é“åˆè¢«åˆ†ä¸ºå¤šä¸ªç‰å¯†åº¦ï¼ˆç‰å¯†åº¦æ•°æ®ï¼‰çš„弧形扇区(Sector)作为å˜å‚¨çš„基本å•元,内部结构如下图:
硬盘在工作时,盘片是一直旋转的,当想è¦è¯»å–æŸä¸ªæ‰‡åŒºçš„æ•°æ®æ—¶ï¼Œé¦–å…ˆè¦å°†è¯»å†™å¤´ç§»åŠ¨åˆ°è¯¥æ‰‡åŒºæ‰€åœ¨çš„ç£é“上,当想è¦è¯»å†™çš„æ‰‡åŒºæ—‹è½¬åˆ°è¯»å†™å¤´ä¸‹æ—¶ï¼Œè¯»å†™å¤´å¼€å§‹è¯»å†™æ•°æ®
é—ªå˜ï¼ˆFlash Storage)是一ç§åŠå¯¼ä½“å˜å‚¨å™¨ï¼Œå®ƒå’Œç£ç›˜ä¸€æ ·æ˜¯éžæ˜“失性的å˜å‚¨å™¨ï¼Œä½†æ˜¯å®ƒçš„è®¿é—®å»¶è¿Ÿåªæœ‰ç£ç›˜çš„åƒåˆ†ä¹‹ä¸€åˆ°ç™¾åˆ†ä¹‹ä¸€ï¼Œè€Œä¸”尺寸å°ã€åŠŸè€—ä½Žï¼ŒæŠ—éœ‡æ€§æ›´å¥½
é—ªå˜çš„æž„é€ åŽŸç†ä¸ºï¼šåˆ©ç”¨FGMOS(一ç§åŠå¯¼ä½“场效应晶体管)å¯ä»¥å˜å‚¨ç”µè·çš„特点,组æˆåŸºç¡€çš„记忆å•元;å†åˆ©ç”¨ç‰¹å®šç”µåŽ‹å€¼æŽ§åˆ¶æ …æžï¼Œå®žçŽ°ç”µè·çš„æ³¨å…¥ã€æŠ¹é™¤ï¼Œå³ä¿¡æ¯çš„å˜å‚¨
NOR型闪å˜çš„写入电路与晶体管结构
最早出现的闪å˜è¢«ç§°ä¸ºNOR型闪å˜ï¼Œå®ƒä½¿ç”¨ NOR闸(或称“或éžé—¨â€ï¼‰ 的电路结构,通过çƒç”µå注入的技术写入电è·ï¼Œå€Ÿç”±é‡åç©¿éš§æ•ˆåº”æ¥æŠ¹é™¤ç”µè·ã€‚NOR型闪å˜çš„æŠ¹é™¤åªèƒ½ä»¥è¿™äº›åŒºå—为å•ä½è¿›è¡Œï¼Œå…¶ä¼˜åŠ¿æ˜¯éšæœºè®¿é—®å’Œè¯»å–时间快,劣势在于频ç¹çš„写入和擦除,所以常è§äºŽç‰©è”网与å•片机
为了é™ä½Žå•å…ƒæˆæœ¬ã€ä¹Ÿæ›´æ˜“于写入和擦除,NAND型闪å˜é‡‡ç”¨äº†å¦ä¸€ç§ç”µè·¯ç»“构—— NAND闸(或称“与éžé—¨â€ï¼‰ ,利用穿隧注入写入电è·ï¼Œåˆ©ç”¨ç©¿éš§é‡Šæ”¾æŠ¹é™¤ç”µè·ã€‚NANDåž‹é—ªå˜æ›´é€‚åˆç§»åЍå˜å‚¨ï¼Œä¸æ–å‘展æˆä¸ºäº†SDå¡ã€U盘和SSD固æ€ç¡¬ç›˜
NAND型闪å˜çš„写入电路与晶体管结构
é—ªå˜çš„å˜å‚¨å•å…ƒéšç€æ“¦å†™æ¬¡æ•°çš„增多å˜åœ¨æŸå的风险,为了解决这个问题,大多数NAND型闪å˜äº§å“内部的控制器采用地å€å—釿˜ å°„çš„æ–¹å¼æ¥åˆ†å¸ƒå†™æ“作,目的是将写次数多的地å€è½¬ç§»åˆ°å†™æ¬¡æ•°å°‘çš„å—ä¸ã€‚该技术被称为磨æŸå‡è¡¡ï¼ˆWear Leveling)
总结:
常有人问机械硬盘和固æ€ç¡¬ç›˜åˆ°åº•æœ‰å“ªäº›åŒºåˆ«ï¼Œå…¶å®žæœ¬è´¨ä¸Šå°±æ˜¯æ˜ å°„äº†â€œç£ç›˜â€ä¸Žâ€œé—ªå˜â€ä¸¤ç§ä¸åŒçš„å˜å‚¨æŠ€æœ¯
总的æ¥è¯´é—ªå˜ï¼Œä¹Ÿå°±æ˜¯å›ºæ€ç¡¬ç›˜è‚¯å®šæ˜¯æ›´å…ˆè¿›çš„:速度更快ã€ä½“积更å°ã€åŠŸè€—æ›´ä½Žã€æŠ—éœ‡æ€§èƒ½æ›´å¥½ã€æ¸©åº¦é€‚应性更高。唯一的缺点å¯èƒ½æ˜¯å¤šæ¬¡æ“¦å†™ä¸‹æ•°æ®æœ‰ä¸¢å—的风险。ä¸è¿‡é€šè¿‡æŠ€æœ¯è¡¥è¶³ï¼ˆæ¯”如ECC),或技术æå‡ï¼ˆæ¯”å¦‚è®©è¿™ä¸ªå¤šæ¬¡çš„æ•°å€¼è¶‹äºŽæ— ç©·å¤§ï¼‰ï¼Œè¿™ä¸ªç¼ºç‚¹ç»ˆå°†ä¼šè¢«å…‹æœçš„
对于计算机系统æ¥è¯´ï¼Œç¡¬ç›˜çš„区别主è¦åœ¨æ•°æ®æŽ¥å£çš„ä¸åŒï¼Œä¼ 统上常è§å¯åˆ†ä¸º ATA(IDE)ã€SATAã€SCSI 三ç§
全称为Advanced Technology Attachment,是一ç§ç›¸å¯¹ä¼ 统的å˜å‚¨è®¾å¤‡æŽ¥å£æ ‡å‡†ï¼ŒIDE(Integrated Drive Electronics)是与之相匹é…çš„ç£ç›˜é©±åŠ¨å™¨æŠ€æœ¯ã€‚è¿™ä¸¤ä¸ªæœ¯è¯ç»å¸¸å¯ä»¥äº’用,应用于早期的计算机ä¸ï¼Œé€‚用于硬盘和CD-ROM
SATAæ ‡å‡†äºŽ2003年推出åŽï¼Œä¼ 统的ATA这时也被更具体的称为PATA(Parallel ATA),å³å¹¶å£å¼ATA
ATAä½¿ç”¨ä¼ ç»Ÿçš„40-pin并壿•°æ®çº¿è¿žæŽ¥ä¸»æ¿ä¸Žç¡¬ç›˜ï¼ŒæŽ¥å£é€Ÿåº¦æœ€å¤§ä¸º133MB/s。ATAçš„ä¼˜ç‚¹æ˜¯ä»·æ ¼ä½Žå»‰ï¼Œç¼ºç‚¹æ˜¯å¹¶å£çº¿çš„æŠ—干扰性太差,且排线å 用空间较大,ä¸åˆ©ç”µè„‘内部散çƒï¼Œå·²é€æ¸è¢«SATA所å–代
å‘展至今的ATAæ ‡å‡†å¯ç»†åˆ†ä¸ºATA-1(IDE)ã€ATA-2(EIDE Enhanced IDE/Fast ATA)ã€ATA-3(FastATA-2)ã€Ultra ATAã€Ultra ATA/33ã€Ultra ATA/66ã€Ultra ATA/100åŠSerial ATA
æ¨¡å¼ | ä»£å· | 别称 | æœ€å¤§ä¼ è¾“é€Ÿåº¦ (MB/s) | æœ€å°æ—¶é’Ÿå‘¨æœŸ | 版本定义 |
---|---|---|---|---|---|
Ultra DMA | 0 | 16.7 | 120 ns | ||
1 | 25.0 | 80 ns | ATA-4 | ||
2 | Ultra ATA/33 | 33.3 | 60 ns | ATA-4 | |
3 | 44.4 | 45 ns | ATA-5 | ||
4 | Ultra ATA/66 | 66.7 | 30 ns | ATA-5 | |
5 | Ultra ATA/100 | 100 | 20 ns | ATA-6 | |
6 | Ultra ATA/133 | 133 | 15 ns | ATA-7 | |
7 | Ultra ATA/167 | 167 | 12 ns | CompactFlash 6.0 |
Ultra DMA是目å‰è®¡ç®—机与ATAè®¾å¤‡ä¹‹é—´ä¼ è¾“æ•°æ®çš„æœ€å¿«æ¨¡å¼
全称为Serial ATA,å³ä¸²å£å¼ATA,特点是抗干扰性强,对数æ®çº¿çš„è¦æ±‚比ATAä½Žå¾ˆå¤šï¼Œé©±åŠ¨ç”µåŽ‹æ›´ä½Žï¼Œæ”¯æŒæŽ’çº¿æ›´é•¿ï¼Œä¸”æ”¯æŒçƒæ’æ‹”ç‰åŠŸèƒ½
SATA使用新的ç£ç›˜é©±åŠ¨æŠ€æœ¯â€”â€”AHCI,读å–速度更快,ä¸è¿‡ä¹Ÿå‘å‰å…¼å®¹IDE驱动(读写速度慢)
SATA-II的接å£é€Ÿåº¦ä¸º300MB/s,而SATA-IIIæ ‡å‡†å¯è¾¾åˆ°600MB/s,2013年推出的SATA Express则å¯è¾¾åˆ°æ›´å¿«é€Ÿåº¦
版本åç§° | 原始频宽 | ä¼ è¾“é€Ÿåº¦ | éœ€å¤–æŽ¥ç”µæº |
---|---|---|---|
SATA revision 1.0 | 1.5Gbit/s | 150MB/s | No |
SATA revision 2.0 | 3Gbit/s | 300MB/s | No |
SATA revision 3.0 | 6Gbit/s | 600MB/s | No |
eSATA | 6Gbit/s | 600MB/s | 需è¦å¤–接å˜åŽ‹å™¨ä¸Žç”µæº |
eSATAp | 6Gbit/s | 600MB/s | 通过一æ¡USB线æä¾›5V或12V电压 |
SATA Express | 16Gbit/s | 1.97GB/s | No |
eSATA 是 External Serial ATA的简称,为é¢å‘外接驱动器定制的的SATAæ‰©å±•ï¼ˆä¸»è¦æ˜¯æé«˜äº†æ’æ‹”è€ç”¨åº¦ï¼Œç›¸å¯¹äºŽSATA线缆大概åªèƒ½æ’æ‹”å‡ åæ¬¡ï¼ŒeSATA支æŒ2000æ¬¡ä»¥ä¸Šçš„æ’æ‹”)。它的最大缺点是没有电力供应,需è¦å•独的外接电æºï¼ˆé¢å¤–的电æºçº¿æˆ–者é¢å¤–çš„USB线供电)
为解决电æºé—®é¢˜ï¼ŒSATA-IO(国际ATA组织)åˆåœ¨2008年推出了eSATAp,它结åˆäº†eSATA的七个针脚åŠUSB 2.0的四个针脚,利用其ä¸çš„USB针脚为硬盘æä¾›5V或12V电压
全称为Small Computer System Interface,å³å°åž‹è®¡ç®—机系统接å£ï¼Œæ˜¯ä¸ºè®¡ç®—机与外接å˜å‚¨è®¾å¤‡ï¼ˆå¤–接硬盘ã€è½¯é©±ã€å…‰é©±ã€æ‰“å°æœºã€æ‰«æä»ªç‰ï¼‰ä¹‹é—´è®¾è®¡çš„æ•°æ®æŽ¥å£æ ‡å‡†
SCSI并䏿˜¯ä¸“ä¸ºç¡¬ç›˜è®¾è®¡çš„æŽ¥å£æ ‡å‡†ï¼Œå…·å¤‡æ›´å¹¿æ³›çš„é€‚ç”¨èŒƒå›´ã€‚åŒæ—¶SCSI控制器独立于系统总线工作,这æ„å‘³ç€æ›´å¿«çš„ä¼ è¾“é€Ÿåº¦ã€æ›´å¤§çš„æ•°æ®åžåé‡å’Œæ›´å°çš„系统CPUå 用(相比ATA与SATA)
SCSI使用一ç§å«åšâ€œå‘½ä»¤é˜Ÿåˆ—â€çš„æŠ€æœ¯æ¥ä¼˜åŒ–æ•°æ®çš„å˜å‚¨ï¼Œå…è®¸æŽ§åˆ¶å™¨æ ¹æ®æœ€ä½³çš„å‘½ä»¤æ¥æ‰§è¡Œå’Œé©±åŠ¨å™¨å†…æ•°æ®ç›¸å…³çš„è¯·æ±‚ã€‚å¯¹äºŽä¸€å°æœåС噍æ¥è¯´ï¼Œåœ¨åŒä¸€æ—¶åˆ»ä¼šæœ‰å¾ˆå¤šä¸åŒçš„用户å‘出请求,如果ç£ç›˜é©±åЍ噍ä¸å…·æœ‰ç±»ä¼¼è¿™ç§åº•层的能够处ç†å¾ˆå¤šå¹¶å‘需求的设计,那么ç£ç›˜é©±åŠ¨å™¨å°±ä¼šå˜æˆç³»ç»Ÿæ€§èƒ½çš„瓶颈。而SATA在这方é¢å°±ä¸å¦‚SCSI,所以SCSI被广泛用于ä¼ä¸šçº§çš„æœåŠ¡å™¨
版本åç§° | 别称 | 原始频宽 | ä¼ è¾“é€Ÿåº¦ | 规范文件 |
---|---|---|---|---|
SCSI-1 | Narrow SCSI | 40 Mbit/s | 5 MB/s | SCSI-1 (1986) |
Fast SCSI | 80 Mbit/s | 10 MB/s | SCSI-2 (1994) | |
Fast-Wide SCSI | 160 Mbit/s | 20 MB/s | SCSI-2ï¼›SCSI-3 SPI (1996) | |
Ultra SCSI | Fast-20 | 160 Mbit/s | 20 MB/s | SCSI-3 SPI |
Ultra Wide SCSI | 320 Mbit/s | 40 MB/s | SCSI-3 SPI | |
Ultra2 SCSI | Fast-40 | 320 Mbit/s | 40 MB/s | SCSI-3 SPI-2 (1997) |
Ultra2 Wide SCSI | 640 Mbit/s | 80 MB/s | SCSI-3 SPI-2 | |
Ultra3 SCSI | Ultra-160; Fast-80 wide |
1280 Mbit/s | 160 MB/s | SCSI-3 SPI-3 (1999) |
Ultra-320 SCSI | Ultra-4 SCSI; Fast-160 SCSI |
2560 Mbit/s | 320 MB/s | SCSI-3(2002) |
Ultra-640 SCSI | Ultra-5 | 5120 Mbit/s | 640 MB/s | SCSI-3(2003) |
å‘展至今,SCSI大的版本å·å‘展到3.0。如今SAS是新一代的SCSI技术,未æ¥ä¹Ÿè®¸ä¼šé€æ¸å–代SCSI
全称Serial Attached SCSI,å³ä¸²å£å¼SCSI,是新一代的SCSI技术,å¯å…¼å®¹SATAç¡¬ç›˜ï¼ŒåŒæ ·æ”¯æ´çƒæ’æ‹”ï¼Œé‡‡ç”¨ä¸²è¡ŒæŠ€æœ¯ä»¥èŽ·å¾—æ›´é«˜çš„ä¼ è¾“é€Ÿåº¦ï¼Œå¯è¾¾åˆ°12Gb/s,碟片转速也较快。而较å°çš„连接线,改善了系统内部空间空气æµé€šã€‚通常应用于æœåС噍ç‰ä¼ä¸šçº§äº§å“
版本åç§° | 原始频宽 | ä¼ è¾“é€Ÿåº¦ | 规范文件 |
---|---|---|---|
SAS 1.1 | 2400Mbit/s | 300MB/s | T10/INCITS 417-2006 |
SAS 2.1 | 4800Mbit/s | 600MB/s | T10/INCITS 478-2011 |
SAS 3.0 | 9600Mbit/s | 1200MB/s | T10/INCITS 519 |
SAS 4.0 | 19200Mbit/s | 2400MB/s | T10/INCITS 534 (draft) |
全称Fibre Channel,å³å…‰çº¤é€šé“接å£ï¼ŒåŽŸæœ¬å¹¶ä¸æ˜¯ä¸ºç¡¬ç›˜æ•°æ®æŽ¥å£æ‰€è®¾è®¡ï¼Œæ˜¯ä¸€ç§ç½‘络数æ®ä¼ 输技术。过去,FC大多用于超级计算机之间的数æ®äº’è”,但目å‰ä¹Ÿæˆä¸ºä¼ä¸šçº§å˜å‚¨SANä¸çš„一ç§å¸¸è§æŽ¥å£ç±»åž‹
FCå¯ä»¥ç†è§£ä¸ºä¼ 统I/O接å£ä¸Žç½‘络技术相结åˆè¶‹åŠ¿çš„ä¸€éƒ¨åˆ†ï¼Œå¯ä»¥ä¸€å¹¶æ»¡è¶³ç½‘络(networkï¼‰å’Œä¼ ç»ŸæŽ¥å£ï¼ˆchannel)两ç§ä¸åŒçš„ç”¨æˆ·éœ€æ±‚ã€‚åŒæ—¶åœ¨ä¼ è¾“é€Ÿåº¦ä¸Žä¼ è¾“è·ç¦»ä¸Šä¹Ÿæœ‰å·¨å¤§æå‡ï¼š
FC有ç€GBçº§çš„ä¼ è¾“é€Ÿåº¦ï¼ŒåŒæ—¶ä¹Ÿæ”¯æŒå…¬é‡Œçº§çš„ä¼ è¾“è·ç¦»ï¼ˆé€šè¿‡å…‰çº¤äº¤æ¢æœºå®žçŽ°ï¼‰
FC还æä¾›å…¼å®¹ä¼ ç»Ÿæ•°æ®æŽ¥å£æ ‡å‡†çš„çš„èƒ½åŠ›ï¼Œå°†ä¼ ç»Ÿçš„æŽ¥å£ä½œä¸ºä¸Šå±‚åè®®ï¼Œå…‰çº¤é€šé“æŽ¥å£çš„使用如下图所示:
连接和扩展是FCçš„å¦ä¸€ä¸ªç›®æ ‡ï¼Œé€šè¿‡å°†æ•°åƒä¸ªè®¾å¤‡å…±äº«æ•°æ®å¹¶è¿žæŽ¥åœ¨ä¸€èµ·æ¥ï¼ŒFC支æŒäº¤æ¢å…‰çº¤ï¼Œä¸€ä¸ªå…‰çº¤ç»“æž„ç†è®ºä¸Šå¯æ”¯æŒä¸€åƒå…百万地å€
总结:
SCSIæ ‡å‡†å½¢æˆäºŽ1982年(当时还å«SASI),并于1986å¹´æ£å¼æ ‡å‡†åŒ–ï¼›ATAæ ‡å‡†æŽ¨å‡ºäºŽ1986年,这两者的底层设计是有较大区别的,å¯ä»¥ç²—æµ…ç†è§£ä¸ºSCSI是为外接设备设计的。SCSIä¸çš„small computeråªæ˜¯å› 历å²åŽŸå› ä¿ç•™çš„åå—,现在的SCSI也早已应用于大型系统当ä¸äº†
SATAæ ‡å‡†æ£å¼æŽ¨å‡ºæ˜¯åœ¨2003年,相当于串å£å¼çš„ATAï¼›SASæ ‡å‡†æŽ¨å‡ºäºŽ2004年,相当于串å£å¼çš„SCSIï¼Œä¸¤è€…éƒ½æ˜¯é€šè¿‡ä¸²è¡ŒæŠ€æœ¯èŽ·å¾—æ›´é«˜çš„ä¼ è¾“é€ŸçŽ‡å¹¶æ”¹å–„å†…éƒ¨ç©ºé—´ç‰ã€‚æ¤å¤–,由于SAS硬盘å¯ä»¥ä¸ŽSATAç¡¬ç›˜å…±äº«åŒæ ·çš„背æ¿ï¼Œå› æ¤åœ¨åŒä¸€ä¸ªSASå˜å‚¨ç³»ç»Ÿä¸ï¼Œå¯ä»¥ç”¨SATA硬盘æ¥å–代部分昂贵的SASç¡¬ç›˜ï¼ŒèŠ‚çœæ•´ä½“çš„å˜å‚¨æˆæœ¬ã€‚但SATAå˜å‚¨ç³»ç»Ÿå¹¶ä¸èƒ½è¿žæŽ¥SAS硬盘
ç›®å‰çš„趋势是:SATA逿¸å–代ATA(IDE),SAS逿¸å–代SCSI
FC是为网络系统设计的(1988å¹´ï¼‰ï¼Œé€æ¸åº”用到大型硬盘系统当ä¸ï¼Œç›®å‰åªä½¿ç”¨äºŽé«˜ç«¯æœåŠ¡å™¨é¢†åŸŸã€‚å½“å‰ï¼Œä¸€èˆ¬çš„硬盘本身也是ä¸å…·å¤‡FC接å£çš„,æ’硬盘的机柜上带有FC接å£ï¼Œå†è¿žæŽ¥åˆ°å…‰çº¤äº¤æ¢æœºï¼ˆæœºæŸœå’Œç¡¬ç›˜ä¹‹é—´ä½¿ç”¨çš„还是SCSIç‰æŽ¥å£ï¼‰
2009年,Intelå¼€å§‹ç€æ‰‹å¯»æ‰¾SATA/AHCI的替代方案:SSD(固æ€ç¡¬ç›˜ï¼‰åœ¨å¤§ä¼—å¸‚åœºä¸Šé€æ¸æµè¡Œï¼Œä½œä¸ºä¸ºHDD(机械硬盘)设计的SATAåŠç›¸å¯¹åº”的驱动技术AHCIå·²ç»æˆä¸ºåˆ¶çº¦SSD速度的瓶颈
机械结构的HDD使用读å–臂åšè¯»å†™ï¼Œä¸Žç›´æŽ¥æ“ä½œå›ºæ€æ™¶ä½“结构的SSD差异很大
于是出现了M.2å’ŒNVMe。M.2接å£é‡‡ç”¨äº†å…¨æ–°çš„物ç†å¸ƒå±€å’Œè¿žæŽ¥å™¨ï¼ŒåŽŸæœ¬å« NGFF (Next Generation Form Factor),于2013å¹´æ£å¼ä»¥M.2çš„åå—æŽ¨å‡ºï¼›NVM Express(缩写NVMe),全称为Non-Volatile Memory Express,大致也是2013å¹´æ£å¼æŽ¨å‡ºã€‚从M.2å’ŒNVMe命å上都å¯ä»¥çœ‹å‡ºå…¶ä½œä¸ºä¸‹ä¸€ä»£ç¡¬ç›˜æŽ¥å£åŠé©±åЍå议的野心
M.2接å£å…许SSD直接连接到主æ¿PCIeæ€»çº¿ä¸Šï¼ŒåŒæ—¶ï¼Œç›¸æ¯”HDD时代的AHCI,NVMeå¯ä»¥å……分利用固æ€å˜å‚¨çš„并列化å˜å‚¨èƒ½åŠ›ï¼Œæä¾›æ›´é«˜çš„åžåé‡å’Œæ›´ä½Žçš„延迟,目å‰M.2接å£+NVMeå议的ç†è®ºæœ€é«˜ä¼ 输速度å¯è¾¾åˆ°20Gbps
M.2/NVMe与SATA/AHCI的主è¦ä¸åŒï¼š
也许有一天,SSD终将全é¢å–代HDD,NVMe也终将全é¢å–代现在的AHCI(M.2接å£ä¸ä¸€å®šï¼Œæ¯•竟接å£ä¸Žç¡¬ä»¶è”系更紧密)。目å‰Windows 8.1\Solaris 11.2\Mac OS X 10.10.3\Linux 3.3ç‰åŠå®ƒä»¬çš„æ›´æ–°ç‰ˆæœ¬ï¼Œéƒ½è‡ªå¸¦åŽŸç”Ÿçš„NVMe驱动了。苹果从2016å¹´çš„MacBook Pro开始,é…置了使用NVMeçš„SSDæ¥ä½œä¸ºè‡ªèº«çš„主机硬盘
é€šè¿‡ä¼ ç»ŸSATAã€SATA Expressã€NVMe体系结构的概览å¯ä»¥çœ‹åˆ°å®ƒä»¬ä¹‹é—´çš„区别
è¿™é‡Œå…¶ä»–ç±»åž‹çš„æ•°æ®æŽ¥å£ä¸»è¦æŒ‡ä¸‰ç±»ï¼šæ›¾ç»çš„æŽ¥å£æ ‡å‡†ã€å°‘è§çš„æŽ¥å£æ ‡å‡†å’Œéžç¡¬ç›˜çš„æŽ¥å£æ ‡å‡†
还有更多的接å£ç±»åž‹ï¼Œæ¯”å¦‚æ—©æœŸçš„å¤šåª’ä½“æŽ¥å£ VGAã€DVIï¼Œæ—©æœŸçš„æ‰“å°æœºæŽ¥å£ Parallel Port ç‰ç‰ï¼Œè¿™äº›éƒ½æ˜¯åœ¨è€æœºå™¨ä¸Šè¿˜èƒ½è§åˆ°çš„ã€‚è®¡ç®—æœºæŠ€æœ¯åœ¨è¿‡åŽ»çš„å‡ åå¹´ä¸è¿…猛å‘展,å„ç§æ–°æŠ€æœ¯æ–°æ¦‚念飞速更新,并ä¸ä¸€å®šæœ‰æ¸…晰的界定:比如SATA既指接å£è§„范(å硬件),也指代其驱动å议(å软件,AHCI);USBæ—¢è¡¨è¾¾ä¸€ç§æ±‡æµæŽ’æ ‡å‡†ï¼ˆæ€»çº¿ï¼‰ï¼Œä¹ŸæŒ‡ä»£å…¶å¯¹åº”çš„ç‰©ç†æŽ¥å£
ä¸è¿‡æ€»çš„趋势是趋å‘逿¸ç»Ÿä¸€çš„: SAS与SATAå…±äº«åŒæ ·èƒŒæ¿ã€USBå‡ ä¹Žå–代了所有外接设备接å£ã€FC统一了HIPPIå’ŒESCON,Thunderbolt就更牛逼了,兼顾了数æ®ä¼ 输和音视频信å·ä¼ 输——也许以åŽçš„电脑åªéœ€è¦ä¸€ç§æŽ¥å£ä¹Ÿè¯´ä¸å®š
å‘展到目å‰çš„æŽ¥å£æŠ€æœ¯ç²—糙的梳ç†ä¸€ä¸‹ï¼Œå¤§è‡´å¦‚下:
éœ€è¦æŒ‡å‡ºçš„ä¸€ç‚¹æ˜¯ï¼Œæ•°æ®æŽ¥å£å‚æ•°ä¸çš„æœ€å¤§ä¼ 输速度并ä¸ä»£è¡¨å®žé™…ç¡¬ç›˜çš„ä¼ è¾“é€Ÿåº¦ã€‚è®¸å¤šå› ç´ éƒ½ä¼šå½±å“ç¡¬ç›˜ä¼ è¾“çš„æ€§èƒ½ï¼ŒåŒ…æ‹¬è¿žæŽ¥ã€çº¿ç¼†ã€ç¼–ç 规范ã€è®¾å¤‡ç±»åž‹ä¹ƒè‡³æ–‡ä»¶ç³»ç»Ÿçš„工作模å¼
比如,æŸäº›æ”¯æŒ Thunderbolt 3 的计算机仅设计两个PCI通é“。但是想达到 Thunderbolt 3 支æŒçš„40Gb/s,需è¦å››ä¸ªPCI通é“。这æ„味ç€ï¼Œå¦‚æžœè®¡ç®—æœºåªæœ‰ä¸¤æ¡é€šé“ï¼Œåˆ™æœ€å¤§ä¼ è¾“é€Ÿåº¦åªèƒ½ä¸º20Gb/s
冿¯”如,如果需è¦åŒæ—¶åœ¨Macå’ŒWindows PC上使用åŒä¸€å—å˜å‚¨è®¾å¤‡ï¼ˆæ¯”如移动硬盘),通常需è¦exFATè¿™ä¸€æ–‡ä»¶ç³»ç»Ÿæ ¼å¼ã€‚ä½†æ˜¯ç”±äºŽè¿™ä¸€æ ¼å¼å¹¶ä¸æ˜¯é€‚åˆä¸¤ç§æ“ä½œç³»ç»Ÿçš„æœ€ä½³æ–‡ä»¶ç³»ç»Ÿï¼Œå› æ¤å¯èƒ½æ— æ³•èŽ·å¾—æœ€ä½³çš„ä¼ è¾“çŽ‡
总的æ¥è¯´ï¼ŒæŽ¥å£å‚æ•°åªå†³å®šé€Ÿåº¦ä¸Šé™ï¼ŒçŽ°å®žä½¿ç”¨ä¸å¸¸è¿œè¿œè¾¾ä¸åˆ°é‚£ä¸ªé€Ÿåº¦ã€‚ç†è®ºé€Ÿåº¦625M/sçš„USB3.0接å£åœ¨8b/10bç¼–ç 规范(USB3.0现行编ç è§„èŒƒï¼‰ä¸‹é€Ÿåº¦ä¸Šé™æ˜¯500M/s,而在实际使用ä¸ä¸€èˆ¬èƒ½è¾¾åˆ°150M/sçš„ä¼ è¾“é€Ÿåº¦å°±ä¸é”™äº†
æ“作系统通过ä¸åŒçš„ æ•°æ®æŽ¥å£ï¼ˆæŽ¥å£è§„范 + 驱动å议) æ¥è¯†åˆ«è¿žæŽ¥åœ¨ä¸»æœºä¸Šçš„硬盘。对于Linux系统æ¥è¯´ï¼Œå°±æ˜¯ /dev/
目录下的ä¸åŒæ–‡ä»¶
设备类型 | 装置在Linux内的文件å |
---|---|
软盘 | /dev/fd[0-1] |
IDE硬盘或光驱 | /dev/hd[a-d][1-9] |
SCSI硬盘(SATA/SCSI/USB) | /dev/sd[a-p][1-9] |
SCSI光驱 | æ•°æ®å…‰é©±ï¼š/dev/sr[0-1] 音频光驱:/dev/scd[0-1] |
SCSIç£å¸¦ | 自动回å·ç£å¸¦ï¼š/dev/st[0-1] ä¸è‡ªåŠ¨å›žå·ç£å¸¦ï¼š/dev/nst[0-1] |
SCSI通用设备 (匹é…éžsd/st/srç‰çš„å…¶ä»–SCSI设备) |
/dev/sg[1-9] |
NVMe硬盘 | /dev/nvme[0-9]n[1-9]p[1-9] |
æ‰“å°æœº | 25é’ˆ: /dev/lp[0-2] USB: /dev/usb/lp[0-15] |
é¼ æ ‡ | PS2: /dev/psaux USB: /dev/usb/mouse[0-15] |
以上称之为Linxu系统ä¸è®¾å¤‡æ–‡ä»¶çš„命å约定
对于Windows系统,设备入å£ä¸ä»¥æ–‡ä»¶ç³»ç»Ÿä¸çš„æ–‡ä»¶èŠ‚ç‚¹çš„å½¢å¼å‘ˆçŽ°ï¼Œè€Œæ˜¯ç”±ç³»ç»Ÿä¸ºè®¾å¤‡èµ‹äºˆé¢„ç•™çš„è®¾å¤‡å:比如CON表示键盘或å±å¹•,PRNè¡¨ç¤ºæ‰“å°æœºï¼ŒAUX表示串å£ï¼Œä½¿ç”¨PnPè®¾å¤‡æ ‘ç»Ÿä¸€ç®¡ç†ã€‚å¯å‚考 Windows I/O 管ç†
实际ä¸Linux的设备文件系统è¦è¿œæ¯”上表ä¸å¤æ‚,除了现实的硬盘设备,还有软件模拟的伪设备。比如我们还会看到下é¢è¿™äº›è®¾å¤‡æ–‡ä»¶ï¼š
å«ä¹‰ | 装置在Linux内的文件å |
---|---|
终端/伪终端 | 终端:/dev/tty[0-9] 串å£ï¼š/dev/ttyS[0-9] |
虚拟机硬盘 | /dev/vd[a-p][1-9] |
æŽ§åˆ¶å° ï¼ˆå…¶å®žæ˜¯ä¸ªç‰¹æ®Šçš„ä¼ªç»ˆç«¯ï¼‰ |
/dev/console |
PPP 设备 | /dev/ppp[0-9] |
Btrfs文件系统控制设备 | /dev/btrfs-control |
éžæ˜“失性RAM | /dev/nvram |
伪终端(ttyï¼‰çš„å†…å®¹æ•æ‰ | /dev/vcs[0-9] /dev/vcsa[0-9] |
伪设备:Loop设备 | /dev/loop[0-1] |
伪设备:永远满状æ€çš„设备 | /dev/full |
伪设备:接å—并丢弃所有输入 | /dev/null |
伪设备:产生连ç»çš„NULå—å…ƒ | /dev/zero |
ä¼ªè®¾å¤‡ï¼šäº§ç”Ÿéšæœºçš„å—å…ƒæµ(Blocking) | /dev/random |
ä¼ªè®¾å¤‡ï¼šäº§ç”Ÿéšæœºçš„å—å…ƒæµ(Non-Blocking) | /dev/urandom |
DeviceMapper 设备 | /dev/mapper/[poolå] |
DeviceMapper è®¾å¤‡çš„æ˜ å°„ | /dev/dm-[0-9] |
Unix98 PTY master çš„å¤ç”¨å™¨ | /dev/ptmx |
指å‘当å‰é¼ æ ‡çš„ç¬¦å·é“¾æŽ¥ | /dev/mouse |
指å‘当å‰å…‰é©±çš„符å·é“¾æŽ¥ | /dev/cdrom |
终端(Teletypewriterï¼‰ï¼Œæœ€åˆæ˜¯æŒ‡ç”µä¼ æ‰“å—æœºï¼ŒåŽæ¥æ³›æŒ‡è®¡ç®—机的终端设备。å‘展到今天,现在真æ£çš„硬件终端基本上已ç»è§ä¸åˆ°äº†ã€‚现在所说的终端ã€ä¼ªç»ˆç«¯éƒ½æ˜¯è½¯ä»¶ä»¿çœŸç»ˆç«¯ã€‚通过 SSH ç‰æ–¹å¼å»ºç«‹çš„远程连接都相当于使用了伪终端
è¿˜æœ‰æ›´å¤šçš„è®¾å¤‡æ–‡ä»¶æ— æ³•ä¸€ä¸€æžšä¸¾ï¼Œè€Œè¿™äº› 命å约定 ä¹Ÿå¹¶ä¸æ˜¯ä¸€æˆä¸å˜çš„ã€‚å®žé™…ä¸Šï¼Œåˆ°åº•å“ªä¸€è®¾å¤‡æ–‡ä»¶å¯¹åº”ä»€ä¹ˆæ ·çš„å‘½åæ–¹å¼å–å†³äºŽç³»ç»Ÿä¸ udev
的设置,其ä½äºŽ /lib/udev/rules.d/
文件夹下
一份真实的 udev
设置如下所示:
# do not edit this file, it will be overwritten on update
SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"
# select "system RTC" or just use the first one
SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc"
SUBSYSTEM=="rtc", KERNEL=="rtc0", SYMLINK+="rtc", OPTIONS+="link_priority=-100"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb -- subsystem=usb"
SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id"
ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}"
ACTION!="add", GOTO="default_permissions_end"
SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666"
SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666"
SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620"
SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640"
SUBSYSTEM=="input", GROUP="input"
SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0664"
SUBSYSTEM=="video4linux", GROUP="video"
SUBSYSTEM=="misc", KERNEL=="agpgart", GROUP="video"
SUBSYSTEM=="graphics", GROUP="video"
SUBSYSTEM=="drm", GROUP="video"
SUBSYSTEM=="dvb", GROUP="video"
SUBSYSTEM=="block", GROUP="disk"
SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="cdrom"
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="cdrom"
KERNEL=="sch[0-9]*", GROUP="cdrom"
KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
KERNEL=="pktcdvd", GROUP="cdrom"
SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape"
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk"
KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk"
KERNEL=="loop-control", GROUP="disk", OPTIONS+="static_node=loop-control"
KERNEL=="btrfs-control", GROUP="disk"
KERNEL=="rawctl", GROUP="disk"
SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk"
SUBSYSTEM=="aoe", GROUP="disk", MODE="0220"
SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
KERNEL=="rfkill", MODE="0664"
KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun"
KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse"
LABEL="default_permissions_end"
在Linuxä¸ï¼Œè®¾å¤‡æ–‡ä»¶çš„类型还å¯ä»¥åˆ†ä¸º å—符设备ã€å—设备和网络设备 三大类
æä¾›è¿žç»çš„æ•°æ®æµï¼Œåº”用程åºå¯ä»¥é¡ºåºè¯»å–ï¼Œé€šå¸¸ä¸æ”¯æŒéšæœºå˜å–。æ¤ç±»è®¾å¤‡æ”¯æŒæŒ‰å—节/å—符æ¥è¯»å†™æ•°æ®ã€‚键盘ã€ä¸²å£ã€è°ƒåˆ¶è§£è°ƒå™¨éƒ½æ˜¯å…¸åž‹çš„å—符设备
æä¾›ç¨³å®šçš„æ•°æ®å˜å‚¨ï¼Œåº”用程åºå¯ä»¥é€šè¿‡å¯»å€éšæœºçš„è®¿é—®è®¾å¤‡æ•°æ®ã€‚æ¤ç±»è®¾å¤‡çš„æ•°æ®è¯»å†™é€šå¸¸åªèƒ½ä»¥å—(一般为512B)çš„å€æ•°è¿›è¡Œã€‚硬盘ã€è½¯ç›˜ã€å…‰ç›˜éƒ½æ˜¯å…¸åž‹çš„å—设备
网络设备是特殊的设备文件,它负责接收和å‘é€å¸§æ•°æ®ï¼Œå¯èƒ½æ˜¯ç‰©ç†å¸§ï¼Œä¹Ÿå¯èƒ½æ˜¯ipæ•°æ®åŒ…,这些特性都由网络驱动决定。它并ä¸å˜åœ¨äºŽ /dev/
下é¢ã€‚网络设备是一个 net_device 结构,并通过 register_netdev 注册到系统里,最åŽé€šè¿‡ ifconfig -a
的命令å¯ä»¥çœ‹åˆ°
$ ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.155.155 netmask 255.255.240.0 broadcast 192.168.159.255
ether 00:16:3e:13:96:53 txqueuelen 1000 (Ethernet)
RX packets 49156667 bytes 11335926436 (10.5 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 42596644 bytes 8077138984 (7.5 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 287263 bytes 21775366 (20.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 287263 bytes 21775366 (20.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ç½‘å¡æ’在计算机主æ¿ä¸Šï¼Œç³»ç»Ÿä»ŽPCI总线检测到设备,并å¯ç”¨å®ƒï¼Œä½†å®ƒåªæ˜¯ä¸€æ”¯ç¡¬ä»¶è®¾å¤‡ï¼ˆç½‘å¡è®¾å¤‡ï¼‰ã€‚网å¡é©±åŠ¨éœ€è¦åŒ…装底层的设备细节,抽象为 net_device æ•°æ®ç»“构并注册到系统里,这就是一个网络设备。网络设备实际上是一ç§é€»è¾‘设备(伪设备)
《计算机体系结构基础》—— 第 5 ç« è®¡ç®—æœºç»„æˆåŽŸç†å’Œç»“æž„
《计算机组æˆåŽŸç†ã€‹â€”— 第 1 ç« è®¡ç®—æœºç³»ç»Ÿç»“æž„
《深入ç†è§£è®¡ç®—机系统》—— 第 6 ç« å˜å‚¨å™¨å±‚次结构
硬盘分类详解
《Linux Kernelæ ¸å¿ƒä¸æ–‡æ‰‹å†Œã€‹â€”— 第 8 ç« è®¾å¤‡é©±åŠ¨ç¨‹åº
IDEã€SATAã€SCSIã€SASã€FCã€SSD 硬盘区别——Dell
Lacieï¼šä¸ºä»€ä¹ˆæˆ‘çš„å¤–ç½®ç¡¬ç›˜æ— æ³•è¾¾åˆ°å¹¿å‘Šä¸çš„æ€§èƒ½ï¼Ÿ
NORé—ªå˜åŸºç¡€çŸ¥è¯†ï¼šå·¥ä½œåŽŸç†åŠåº”用
金士顿 KC2500 SSD 产å“说明书
西部数ç :SSD与HDDäº§å“æ¯”较
Intel:固æ€ç¡¬ç›˜ä¸Žæœºæ¢°ç¡¬ç›˜
Sun 公用 SCSI 体系结构
AHCI è§„èŒƒä¸æ–‡æ–‡æ¡£
Linuxå†…æ ¸ä¸çš„设备模型åŠSCSI示例解æž
Solaris 10 å‘行版本驱动程åºå¢žå¼ºåŠŸèƒ½
Linux终端(TTY)——终端与伪终端
Linux TTY/PTS概述
USB-IF 官方网站
The Linux SCSI Generic (sg) Driver
The Linux 2.4 SCSI subsystem HOWTO —— Chapter 9
Debian GNU/Linux 安装手册
Linux SCSI设备寻å€
Linux Filesystem Hierarchy —— Chapter 1.5
A Comparison of the Linux and Windows Device Driver Architectures
Windows I/O 管ç†
Microsoft: PnP Components
Why does Linux list NVMe drives as /dev/nvme0 instead of /dev/sda?
How To Find If The Disk Is SSD Or HDD In Linux
RAIDç£ç›˜é˜µåˆ—是什么
å†è°ˆlinuxä¸ä¸ºä½•没有网å¡è®¾å¤‡æ–‡ä»¶