1
0
wiki/Tech/computer-storage/2.-存储硬件.html

568 lines
436 KiB
HTML
Raw Normal View History

2024-08-05 18:05:18 +08:00
<!DOCTYPE html>
<html><head><title>2. 存储硬件</title><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="2. 存储硬件"/><meta property="og:description" content="本文详细介绍了存储硬件的多种类型包括磁带、光盘、硬盘驱动器HDD、固态硬盘SSD和RAID技术以及中国企业长江存储在存储技术领域的发展历程和成就。."/><meta property="og:image" content="https://wiki.7wate.com/static/og-image.png"/><meta property="og:width" content="1200"/><meta property="og:height" content="675"/><link rel="icon" href="../../static/icon.png"/><meta name="description" content="本文详细介绍了存储硬件的多种类型包括磁带、光盘、硬盘驱动器HDD、固态硬盘SSD和RAID技术以及中国企业长江存储在存储技术领域的发展历程和成就。."/><meta name="generator" content="Quartz"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><script async src="https://umami.7wate.com/script.js" data-website-id="c061efdc-95dd-4d21-9d04-a1ffda0a85b9"></script><script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?94d8ccb156eb7c65abf317e6e01cdba9";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-MHMEL0F832"></script><script>
(function() {
window.dataLayer = window.dataLayer || [];
function gtag() {
window.dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-MHMEL0F832');
})();
</script><link href="../../index.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://fonts.googleapis.com/css2?family=IBM Plex Mono&amp;family=Schibsted Grotesk:wght@400;700&amp;family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&amp;display=swap" rel="stylesheet" type="text/css" spa-preserve/><script src="../../prescript.js" type="application/javascript" spa-preserve></script><script type="application/javascript" spa-preserve>const fetchData = fetch(`../../static/contentIndex.json`).then(data => data.json())</script></head><body data-slug="Tech/computer-storage/2.-存储硬件"><div id="quartz-root" class="page"><div id="quartz-body"><div class="left sidebar"><h1 class="page-title "><a href="../..">📚 X·Eden</a></h1><div class="spacer mobile-only"></div><div class="search "><div id="search-icon"><p>Search</p><div></div><svg tabIndex="0" aria-labelledby="title desc" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title id="title">Search</title><desc id="desc">Search</desc><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"></path><circle cx="8" cy="8" r="7"></circle></g></svg></div><div id="search-container"><div id="search-space"><input autocomplete="off" id="search-bar" name="search" type="text" aria-label="Search for something" placeholder="Search for something"/><div id="results-container"></div></div></div></div><div class="darkmode "><input class="toggle" id="darkmode-toggle" type="checkbox" tabIndex="-1"/><label id="toggle-label-light" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="dayIcon" x="0px" y="0px" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35;" xmlSpace="preserve"><title>Light mode</title><path d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26z M17.5,6 C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6z M27.5,9 c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06 L6.439,8.561z M33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16z M28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,25z"></path></svg></label><label id="toggle-label-dark" for="darkmode-toggle" tabIndex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" version="1.1" id="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background='new 0 0 100 100'" xmlSpace="preserve"><title>Dark mode</title><path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447-14.65,22.008-14.65,35.369 c0,13.36,5.203,25.921,14.65,35
<p><img src="https://static.7wate.com/img/2023/04/13/919160de144ca.png" alt="磁带"/></p>
<blockquote>
<p>来源:<a href="https://baike.baidu.com/pic/%E5%BD%95%E9%9F%B3%E7%A3%81%E5%B8%A6/19208887/1/a71ea8d3fd1f413446dceaf02c1f95cad0c85e51?fr=lemma#aid=1&amp;pic=a71ea8d3fd1f413446dceaf02c1f95cad0c85e51" class="external">录音磁带图片_百度百科</a>;仅学术引用,著作权归作者所有。</p>
</blockquote>
<p>磁带存储是一种利用磁性材料存储数据的存储技术,具有可靠性高、容量大、成本低的特点,被广泛应用于数据备份、存档、长期存储等领域。</p>
<p>磁带存储的历史可以追溯到上世纪 50 年代,当时的磁带存储容量较小,读写速度较慢,主要用于存储机器指令和数据备份等应用。随着磁头技术、磁性材料技术的不断发展,磁带存储的容量和速度得到了大幅提升,使得其在数据备份、存档等领域得到了广泛应用。</p>
<p><img src="https://static.7wate.com/img/2023/04/13/16615f136d82c.png" alt="磁存储原理图"/></p>
<blockquote>
<p>来源:<a href="http://media4.open.com.cn/L603/fushi/0903/jisuanjzcyl/web/lesson/char4/j5.htm" class="external">计算机组成原理</a></p>
</blockquote>
<p>磁带存储的实现是通过将数据记录在磁带表面的磁性颗粒上,通过磁头读取磁带表面的磁性信号实现数据的读写。<strong>磁带存储一般采用串行读写的方式,因此其读写速度相对较慢,但磁带存储的容量较大,可以达到数百 TB 的级别,且数据可靠性较高,可以长期保存数据。</strong></p>
<p>**磁带存储的主要应用场景是数据备份、存档和长期存储等领域。**在数据备份领域,磁带存储被广泛应用于数据中心、云服务提供商等场景,用于备份大量的数据和应用程序。在存档和长期存储领域,磁带存储可以用于保存重要的历史文档、音乐和影像等资料,具有容量大、可靠性高、成本低等优点。</p>
<p>在一些应用场景中,磁带存储的性能和特性比硬盘和固态硬盘更加适合,例如需要长期存储大量数据的场景,或者是需要备份和归档大量数据的场景。另外,在一些监管和合规性要求比较高的行业,如金融、医疗等领域,磁带存储也被广泛应用,因为<strong>磁带存储具有防篡改、数据安全等特点。</strong></p>
<p>总的来说,磁带存储虽然在读写速度和可靠性等方面不如硬盘和固态硬盘,但是由于其容量大、成本低和长期可靠性等特点,使得其在某些特定的场景下仍然具有很大的应用前景。</p>
<h2 id="光盘optical-disc">光盘Optical Disc<a aria-hidden="true" tabindex="-1" href="#光盘optical-disc" class="internal"> §</a></h2>
<p>如 CD、DVD 和 Blu-ray通过激光在光盘上刻录和读取数据适合长期存储和数据备份但读写速度较慢容量有限。</p>
<p><img src="https://static.7wate.com/img/2023/04/13/ce44ff6b78a81.jpg" alt="Melody 90min PLATiNUM CD disc.jpg"/></p>
<blockquote>
<p>来源:<a href="https://zh.wikipedia.org/wiki/File:Melody_90min_PLATiNUM_CD_disc.jpg" class="external">File:Melody 90min PLATiNUM CD disc.jpg - 维基百科,自由的百科全书</a>;仅学术引用,著作权归作者所有。</p>
</blockquote>
<p>光盘存储是一种基于激光技术的数字存储介质主要由光盘、CD-ROM、DVD 和 Blu-ray 等几种类型组成。它是一种非易失性存储介质,可以长期保存数据。</p>
<p>光盘存储的历史可以追溯到 20 世纪 80 年代初期当时的光盘主要是音频光盘主要用于存储音乐。随着激光技术的发展和数字化技术的普及光盘存储也逐渐应用于数字存储领域。1985 年Philips 和 Sony 公司共同推出了第一种数字光盘标准 CDCompact Disc从此光盘存储开始进入数字时代。之后随着技术的不断发展CD-ROM、DVD 和 Blu-ray 等新一代光盘存储技术相继问世,容量和读取速度也得到了显著提升。</p>
<p><img src="https://static.7wate.com/img/2023/04/13/357e1bb6da04e.png" alt="光存储实现原理"/></p>
<blockquote>
<p>来源:<a href="https://www.eet-china.com/mp/a157461.html" class="external">一文读懂光储存技术及原理-面包板社区</a>;仅学术引用,著作权归作者所有。</p>
</blockquote>
<p>光盘存储的实现主要基于激光技术。在光盘上刻有一系列螺旋状的凹槽,凹槽的长度和深度对应着数据的 1 和 0。当激光照射到光盘表面时通过检测反射光的强弱和光波的相位变化就可以判断凹槽的长度和深度从而读取数据。不同类型的光盘其光盘结构和读取方式也不同。</p>
<p>**光盘存储适用于长期存储重要数据、分发软件、电影、音乐等媒体内容、随身携带备份个人数据或保存重要文档、兼容性广的数据存储需求。**虽然已经被硬盘和固态硬盘所取代,但在某些场合下仍然有其独特的应用优势。</p>
<h2 id="磁盘disk">磁盘Disk<a aria-hidden="true" tabindex="-1" href="#磁盘disk" class="internal"> §</a></h2>
<p>传统的硬盘驱动器HDD使用旋转的磁性盘片来存储数据。优点是容量大成本低缺点是速度相对较慢。</p>
<p><img src="https://static.7wate.com/img/2023/04/13/0dc5ede099703.jpg" alt="Laptop-hard-drive-exposed.jpg"/></p>
<blockquote>
<p>来源:<a href="https://zh.wikipedia.org/wiki/File:Laptop-hard-drive-exposed.jpg" class="external">File:Laptop-hard-drive-exposed.jpg - 维基百科,自由的百科全书</a>;仅学术引用,著作权归作者所有。</p>
</blockquote>
<p>机械硬盘Hard Disk DriveHDD是一种数据存储设备是计算机系统中最常用的存储媒介之一。它是一种使用磁盘片来存储数据的设备通过机械臂上的读写头在盘片上读写数据。</p>
<h3 id="发展历史">发展历史<a aria-hidden="true" tabindex="-1" href="#发展历史" class="internal"> §</a></h3>
<p>机械硬盘存储的历史可以追溯到 20 世纪 50 年代,当时 IBM 公司研制出了第一个硬盘,容量为 5MB。随着计算机技术的不断进步机械硬盘存储的容量、速度、可靠性等方面都得到了不断提升和改善成为了计算机存储系统中不可或缺的一部分。</p>
<ul>
<li>
<p>1956 年IBM 305 RAMAC 是现代硬盘的雏形,容量仅为 5MB。</p>
</li>
<li>
<p>1973 年IBM 3340 推出,拥有“温彻斯特”绰号,其存储单元恰好是当时“温彻斯特来福枪”的口径和填弹量。</p>
</li>
<li>
<p>1980 年,希捷科技公司开发出 5.25 英寸的 5MB 硬盘 ST506这是面向台式机的首款硬盘产品。</p>
</li>
<li>
<p>1991 年IBM 推出首款 3.5 英寸的 1GB 硬盘,应用了 MRMagneto Resistive 磁阻)技术,为硬盘容量的巨大提升奠定基础。</p>
</li>
<li>
<p>1997 年IBM 应用 GMRGiant Magneto Resistive巨磁阻技术使磁头灵敏度进一步提升进而提高存储密度。</p>
</li>
<li>
<p>2005 年日立环储和希捷都宣布将开始大量采用磁盘垂直写入技术perpendicular recording</p>
</li>
<li>
<p>2011 年,机械硬盘逐渐被固态硬盘所取代,希捷宣布收购三星旗下的硬盘业务。</p>
</li>
</ul>
<p>2020 年截至现存主要硬盘制造商包括<strong>西部数据、希捷、东芝、日立</strong>等。</p>
<h3 id="数据接口">数据接口<a aria-hidden="true" tabindex="-1" href="#数据接口" class="internal"> §</a></h3>
<p>机械硬盘的接口是指将硬盘与计算机主板或控制卡连接的接口。早期的机械硬盘接口主要有 IDE (Integrated Drive Electronics) 和 SCSISmall Computer System Interface两种。目前常见的机械硬盘接口主要包括 SATASerial ATA和 SASSerial Attached SCSI两种。</p>
<table><thead><tr><th>接口</th><th>传输速率</th><th>优点</th><th>缺点</th><th>适用场景</th></tr></thead><tbody><tr><td>IDEIntegrated Drive Electronics</td><td>最高 133MB/s</td><td>支持 PATA 和 SATA 接口,兼容性好</td><td>传输速率较慢,线缆长度受限</td><td>早期的个人电脑、低端工作站等</td></tr><tr><td>SCSISmall Computer System Interface</td><td>最高 640MB/s</td><td>高速传输,支持多设备连接,可扩展性强</td><td>价格较高,设置和维护较为复杂</td><td>高端服务器、存储阵列等</td></tr><tr><td>SATASerial ATA</td><td>最高 6Gbps</td><td>价格低廉,易于使用和安装</td><td>传输速率较慢,线缆长度受限</td><td>个人电脑、工作站、NAS 等</td></tr><tr><td>SASSerial Attached SCSI</td><td>最高 12Gbps</td><td>高速传输,支持多设备连接</td><td>价格较高</td><td>服务器、存储阵列等高端应用</td></tr><tr><td>FCFibre Channel</td><td>最高 32Gbps</td><td>高速传输,支持多设备连接,可扩展性强</td><td>价格较高,设置和维护较为复杂</td><td>高端存储阵列、数据中心等</td></tr></tbody></table>
<h3 id="硬盘尺寸">硬盘尺寸<a aria-hidden="true" tabindex="-1" href="#硬盘尺寸" class="internal"> §</a></h3>
<table><thead><tr><th>尺寸</th><th>容量</th><th>转速</th><th>缓存</th><th>平均寻道时间</th><th>内部传输速度</th><th>适用场景</th></tr></thead><tbody><tr><td>3.5 英寸机械硬盘</td><td>160GB-16TB</td><td>5400-15000 转/分</td><td>8MB-256MB</td><td>4-15ms</td><td>最高 300MB/s</td><td>台式电脑NAS服务器工作站等大型设备</td></tr><tr><td>2.5 英寸机械硬盘</td><td>40GB-5TB</td><td>4200-15000 转/分</td><td>8MB-128MB</td><td>10-15ms</td><td>最高 200MB/s</td><td>笔记本电脑,便携式硬盘,智能电视,游戏机等</td></tr><tr><td>1.8 英寸机械硬盘</td><td>30GB-320GB</td><td>4200-5400 转/分</td><td>2MB-16MB</td><td>15-20ms</td><td>最高 100MB/s</td><td>平板电脑,超极本,便携式媒体播放器等</td></tr></tbody></table>
<h3 id="实现原理">实现原理<a aria-hidden="true" tabindex="-1" href="#实现原理" class="internal"> §</a></h3>
<p>机械硬盘存储的实现原理是基于磁性材料在磁场作用下的磁化性质。机械硬盘的磁性材料被划分为许多同心圆形的磁道,每个磁道又被划分为多个扇区,每个扇区存储着一定数量的数据。当计算机需要读取或写入数据时,机械硬盘的读写头会在磁盘上移动,将数据从磁盘读取或写入到存储器中。</p>
<p>机械硬盘的物理结构包括盘片、读写头、马达、控制器等组件。盘片是机械硬盘最重要的组件之一,用于存储数据。读写头则是机械硬盘的另一个重要组件,用于读取和写入数据。马达则用于旋转盘片,使得读写头能够顺利读取和写入数据。控制器则用于控制硬盘的读写和数据传输过程。</p>
<h3 id="设计结构">设计结构<a aria-hidden="true" tabindex="-1" href="#设计结构" class="internal"> §</a></h3>
<blockquote>
<p>来源:<a href="https://zh.wikipedia.org/wiki/File:Disk-structure2.svg" class="external">File:Disk-structure2.svg - 维基百科,自由的百科全书</a>;仅学术引用,著作权归作者所有。</p>
</blockquote>
<p>机械硬盘是一种基于磁记录技术的数据存储设备,其物理结构主要包括磁头、盘片、马达、主轴、磁道、扇区、簇、块和分区表等部分。</p>
<ul>
<li>
<p>磁头:机械硬盘中最为关键的部分之一,其作用是读写盘片上的数据。通常情况下,一块硬盘上会有多个磁头,每个磁头分别负责读写一侧或多侧盘片上的数据。</p>
</li>
<li>
<p>盘片:机械硬盘中存储数据的主要介质,它由铝合金或玻璃材料制成,表面上涂覆有磁性材料,用于记录数据。一块硬盘通常包含多个盘片,每个盘片分别分成若干个磁道和扇区,存储数据。</p>
</li>
<li>
<p>马达和主轴:是机械硬盘中的另外两个核心部件。马达用于带动盘片旋转,主轴则承载盘片和保持其旋转稳定。马达和主轴的性能直接影响到机械硬盘的读写速度和稳定性。</p>
</li>
<li>
<p>磁道:盘片表面的一个环形区域,类似于一条有向的螺旋线。每个磁道又被划分为多个扇区,用于存储数据。随着硬盘存储密度的提高,磁道数量也在不断增加。</p>
</li>
<li>
<p>簇:机械硬盘中的一个逻辑概念,它是由多个扇区组成的一个数据单元。簇的大小通常为几个扇区,取决于硬盘的格式化方式和操作系统的文件系统。</p>
</li>
<li>
<p>块:操作系统中对数据进行管理的最小单元,每个块通常有固定的大小,用于存储文件或其他数据。</p>
</li>
<li>
<p>分区表:硬盘中用于记录分区信息的一个特殊区域,它记录了硬盘分区的数量、大小和位置等信息。操作系统需要依据分区表来读取和写入硬盘上的数据。</p>
</li>
</ul>
<h3 id="mbr-和-gpt">MBR 和 GPT<a aria-hidden="true" tabindex="-1" href="#mbr-和-gpt" class="internal"> §</a></h3>
<p>机械硬盘的逻辑结构主要包括两种格式:<strong>MBRMaster Boot Record主引导记录和 GPTGUID Partition Table全局唯一标识分区表</strong></p>
<p><strong>MBR 是早期 PC 硬盘的标准分区方案</strong>,它将硬盘的分区信息保存在硬盘的第一个扇区中(即 0 号扇区),这个扇区的大小为 512 字节。MBR 可以分为两个部分:引导程序区和分区表。引导程序区存储了启动时需要加载的程序,分区表则记录了硬盘分区的信息,每个分区表项占用 16 字节其中包括分区类型、起始扇区和分区大小等信息。MBR 最多支持 4 个主分区或 3 个主分区和 1 个扩展分区。</p>
<p><strong>GPT 是新一代硬盘分区标准</strong>,它将硬盘的分区信息保存在硬盘的第一个和第二个 LBALogical Block Addressing逻辑块寻址扇区中每个 LBA 扇区的大小为 512 字节。GPT 采用了一个 128 位的唯一标识符GUID来标识分区表因此支持更多的分区。每个 GPT 分区表项占用 128 字节其中包括分区类型、GUID、起始扇区和分区大小等信息。GPT 最多支持 128 个分区。</p>
<table><thead><tr><th>特性</th><th>MBR</th><th>GPT</th></tr></thead><tbody><tr><td>最大容量</td><td>2 TB</td><td>9.4 ZB</td></tr><tr><td>分区数</td><td>最多 4 个</td><td>最多 128 个</td></tr><tr><td>兼容性</td><td>较好,可用于 BIOS 和 UEFI 系统</td><td>较好,主要用于 UEFI 系统</td></tr><tr><td>系统要求</td><td>任何操作系统都支持</td><td>Windows xp 64 位 +、Mac OS X 10.6.5 及更高版本、Linux 和 UNIX</td></tr><tr><td>安全性</td><td></td><td>支持在分区表中存储磁盘分区信息的完整性校验和,可检测分区表是否被修改</td></tr></tbody></table>
<h2 id="固态驱动器ssd">固态驱动器SSD<a aria-hidden="true" tabindex="-1" href="#固态驱动器ssd" class="internal"> §</a></h2>
<p><img src="https://static.7wate.com/img/2023/04/13/45b2bccd8d63d.png" alt="长江存储"/></p>
<p>固态硬盘Solid State DriveSSD是一种非易失性的存储设备主要用于存储数据。与传统的机械硬盘Hard Disk DriveHDD相比它没有任何移动部件因此在速度、耐用性和能源消耗方面具有明显优势。</p>
<h3 id="发展历史-1">发展历史<a aria-hidden="true" tabindex="-1" href="#发展历史-1" class="internal"> §</a></h3>
<p>固态硬盘的发展始于上世纪 50 年代那时候的存储设备主要基于半导体技术。随着半导体技术的发展SSD 逐渐成为计算机领域的一种主流存储设备。早期的 SSD 主要用于军事和航空领域因为它们对性能和稳定性有很高的要求。随着技术的进步和成本的降低SSD 已经成为消费者市场上的常见产品。</p>
<ul>
<li>
<p>1978 年Toshiba 的工程师 Fujio Masuoka 发明了闪存技术,这是固态硬盘的基础技术。</p>
</li>
<li>
<p>1991 年SanDisk 推出首款基于 NAND 闪存的固态硬盘,容量为 20MB主要应用于工业和军事领域。</p>
</li>
<li>
<p>1995 年IBM 发布了第一款 PCI 接口的固态硬盘,提高了数据传输速度。</p>
</li>
<li>
<p>2007 年Intel 推出了其首款主流固态硬盘——Intel X25-M使用了 MLCMulti-Level CellNAND 闪存技术,容量为 80GB标志着固态硬盘开始进入消费者市场。</p>
</li>
<li>
<p>2008 年OCZ 推出了第一款支持 SATA 接口的固态硬盘,使得 SSD 更容易与现有计算机系统兼容。</p>
</li>
<li>
<p>2011 年,高通和三星等公司联合制定了 UFSUniversal Flash Storage标准为移动设备提供了更高速度的存储解决方案。</p>
</li>
<li>
<p>2013 年NVMe 1.0 规范正式发布,为固态硬盘提供了更高性能的数据传输接口。</p>
</li>
<li>
<p>2015 年,三星发布了其首款 NVMe 固态硬盘——Samsung 950 Pro采用 M.2 接口和 V-NAND 技术,具有更高的读写速度和更小的尺寸。</p>
</li>
</ul>
<p>2020 年主流的 SSD 厂商包括<strong>三星、英特尔、西部数据、东芝、海力士和金士顿</strong>等。</p>
<h3 id="数据接口-1">数据接口<a aria-hidden="true" tabindex="-1" href="#数据接口-1" class="internal"> §</a></h3>
<table><thead><tr><th>接口</th><th>传输速度</th><th>优点</th><th>缺点</th><th>适用场景</th></tr></thead><tbody><tr><td>PATAParallel ATA</td><td>最高 133MB/s</td><td>成本较低,向后兼容性好</td><td>速度较慢,数据线较粗,占用空间大</td><td>早期台式机和笔记本电脑</td></tr><tr><td>SATASerial ATA</td><td>最高 6Gbps</td><td>速度较快,数据线较细,易安装,兼容性好</td><td>速度相对于 NVMe 仍较慢</td><td>台式机和笔记本电脑</td></tr><tr><td>NVMeNon-Volatile Memory Express</td><td>PCIe 3.0 x432 Gbit/s</td><td>更高的传输速度,低延迟,可扩展性好</td><td>成本较高,需要主板支持</td><td>高性能台式机、笔记本、服务器等</td></tr><tr><td></td><td>PCIe 4.0 x464 Gbit/s</td><td></td><td></td><td></td></tr></tbody></table>
<h3 id="硬盘尺寸-1">硬盘尺寸<a aria-hidden="true" tabindex="-1" href="#硬盘尺寸-1" class="internal"> §</a></h3>
<p>固态硬盘有多种尺寸,如 2.5 英寸、1.8 英寸和 mSATA。2.5 英寸是最常见的尺寸适用于笔记本电脑和台式机。1.8 英寸和 mSATA 主要用于超薄笔记本和移动设备。近年来M.22230、2242、2260、2280接口的 SSD 也越来越受欢迎,因为它们具有更小的尺寸和更高的性能。</p>
<p><em>**M.2 尺寸中的四位数字表示长度和宽度。**例如M.2 2280 表示宽度为 22mm长度为 80mm。此外M.2 SSD 可能采用 SATA 或 NVMe 接口,需要根据设备的接口要求进行选择。</em></p>
<h3 id="实现原理-1">实现原理<a aria-hidden="true" tabindex="-1" href="#实现原理-1" class="internal"> §</a></h3>
<p>固态硬盘SSD是一种非易失性的数据存储设备它使用闪存Flash Memory作为存储介质。闪存具有较高的存储密度、较快的读取速度和较低的功耗因此非常适合用于固态硬盘。与传统的机械硬盘HDD相比固态硬盘没有机械运动部件因此具有更高的读写速度、更低的延迟和更高的可靠性。</p>
<p>固态硬盘的核心组件包括控制器和闪存。控制器负责管理数据的读写操作、通信接口(如 SATA 或 NVMe、错误检测和校正ECC以及其他高级功能如垃圾回收和可穿戴平衡。闪存中的数据存储在称为存储单元的微小晶体管中数据通过改变存储单元的电子电压来表示不同的状态。</p>
<p>为了提高写入性能和延长硬盘寿命,固态硬盘采用了可穿戴平衡策略,并通过映射表将操作系统看到的逻辑地址映射到闪存中的物理地址。此外,固态硬盘还使用垃圾回收算法优化存储空间使用,以及接收操作系统的 TRIM 命令来提高写入性能。</p>
<h3 id="设计结构-1">设计结构<a aria-hidden="true" tabindex="-1" href="#设计结构-1" class="internal"> §</a></h3>
<p><img src="https://static.7wate.com/img/2023/04/13/a650d29e84cf7.png" alt="设计结构"/></p>
<blockquote>
<p>来源:<a href="https://www.cnblogs.com/lmhyhblog/p/12508849.html" class="external">深入浅出SSD - 注册以后还能改吧 - 博客园</a>;仅学术引用,著作权归作者所有。</p>
</blockquote>
<ol>
<li><strong>闪存芯片Flash Memory Chips</strong>:闪存是固态硬盘的核心存储介质,通常采用 NAND 型闪存。闪存具有较高的存储密度、较快的读取速度和较低的功耗。根据存储单元所存储的比特数,闪存可以分为 SLC单级单元、MLC多级单元、TLC三级单元和 QLC四级单元等类型。</li>
</ol>
<table><thead><tr><th>类型</th><th>存储比特数</th><th>写入速度</th><th>寿命</th><th>容量密度</th><th>成本</th><th>适用场景</th></tr></thead><tbody><tr><td>SLC</td><td>1 比特/单元</td><td>最快</td><td>最高(约 10 万次)</td><td></td><td></td><td>企业级存储、高性能应用、工业级存储等要求高可靠性和耐用性的场景</td></tr><tr><td>MLC</td><td>2 比特/单元</td><td>中等</td><td>高(约 3 万次)</td><td></td><td>中等</td><td>主流消费级和企业级应用,平衡了性能、耐用性和成本</td></tr><tr><td>TLC</td><td>3 比特/单元</td><td>较慢</td><td>中等(约 1 万次)</td><td></td><td>较低</td><td>主流消费级存储,适用于大容量、低成本的应用场景</td></tr><tr><td>QLC</td><td>4 比特/单元</td><td>最慢</td><td>最低(约 1 千次)</td><td>最高</td><td>最低</td><td>面向大容量存储需求,以成本为主要考虑因素的应用场景</td></tr></tbody></table>
<ol>
<li>
<p><strong>控制器Controller</strong>:控制器是固态硬盘的大脑,负责管理数据的读写操作、通信接口(如 SATA 或 NVMe、错误检测和校正ECC以及其他高级功能如垃圾回收、可穿戴平衡和 AES 加密。控制器的性能对固态硬盘的整体性能有很大影响。</p>
</li>
<li>
<p><strong>缓存Cache</strong>:部分固态硬盘配置有 DRAM 或 SRAM 作为缓存用于临时存储数据以提高数据传输速度。缓存还可以用于存储映射表Mapping Table用于记录逻辑地址和物理地址之间的映射关系。</p>
</li>
<li>
<p><strong>电源电路Power Circuitry</strong>:固态硬盘的电源电路负责将来自主板的电源转换为适用于控制器和闪存芯片的电压。</p>
</li>
<li>
<p><strong>接口Interface</strong>:固态硬盘需要一个接口与主板相连,以便于数据传输和电源供应。常见的接口类型包括 SATA、mSATA、M.2(支持 SATA 和 NVMe 协议)以及 U.2 等。</p>
</li>
<li>
<p><strong>固件Firmware</strong>:固态硬盘的固件包含一组存储在控制器上的指令,用于控制和管理硬盘的各种功能。固件可以通过制造商发布的更新来优化性能和修复已知问题。</p>
</li>
<li>
<p><strong>散热Thermal Management</strong>:高性能的固态硬盘在运行过程中可能会产生较高的热量,因此需要采取一定的散热措施。散热解决方案包括散热片、热导管以及与主板的热接触等。</p>
</li>
</ol>
<p>总之,固态硬盘的设计结构由闪存芯片、控制器、缓存、电源电路、接口、固件以及散热系统等组件组成。这些组件共同协作,实现了高速、低功耗、高可靠性和抗震性等优点。相较于传统的机械硬盘,固态硬盘在许多应用场景中具有明显优势,特别是在高性能需求、移动设备和企业级应用等方面。随着闪存技术的不断发展,固态硬盘的容量和性价比也在逐渐提高,使得固态硬盘成为越来越多用户的首选存储设备。</p>
<h2 id="raid独立磁盘冗余阵列技术">RAID独立磁盘冗余阵列技术<a aria-hidden="true" tabindex="-1" href="#raid独立磁盘冗余阵列技术" class="internal"> §</a></h2>
<h3 id="raid-0条带化">RAID 0条带化<a aria-hidden="true" tabindex="-1" href="#raid-0条带化" class="internal"> §</a></h3>
<p><img src="https://static.7wate.com/img/2023/04/21/14427cb4c5bfe.png" alt="RAID 0"/></p>
<p>RAID 0条带化是一种数据分发方式数据被分成大小相等的块并分别存储在多个硬盘上以提高读写性能。它没有冗余机制一旦任意一块硬盘出现故障整个阵列的数据都会丢失。</p>
<h3 id="raid-1镜像">RAID 1镜像<a aria-hidden="true" tabindex="-1" href="#raid-1镜像" class="internal"> §</a></h3>
<p><img src="https://static.7wate.com/img/2023/04/21/51b7d32f3ef4f.png" alt="RAID 1"/></p>
<p>RAID 1镜像是通过在多个硬盘上保存完全相同的数据来提高数据可靠性。每个硬盘上的数据都是相同的如果一个硬盘出现故障数据仍然可以从其他硬盘中恢复。</p>
<h3 id="raid-5分布式奇偶校验">RAID 5分布式奇偶校验<a aria-hidden="true" tabindex="-1" href="#raid-5分布式奇偶校验" class="internal"> §</a></h3>
<p><img src="https://static.7wate.com/img/2023/04/21/46b8ef22d0f89.png" alt="RAID 5"/></p>
<p>RAID 5分布式奇偶校验将数据块和校验块分别存储在多个硬盘上。校验块被计算为所有数据块的异或值以提供数据冗余和容错能力。RAID 5 可以通过使用奇偶校验的方式在一个硬盘故障时恢复数据,但是如果两个硬盘故障,则可能会导致数据无法恢复。</p>
<h3 id="raid-6双奇偶校验">RAID 6双奇偶校验<a aria-hidden="true" tabindex="-1" href="#raid-6双奇偶校验" class="internal"> §</a></h3>
<p><img src="https://static.7wate.com/img/2023/04/21/3b1de1acc0ada.png" alt="RAID 6"/></p>
<p>RAID 6双奇偶校验与 RAID 5 类似,但是它使用两个校验块来提供更高的数据冗余和容错能力,可以在两个硬盘故障的情况下恢复数据。</p>
<h3 id="raid-1001镜像--条带化">RAID 10/01镜像 + 条带化)<a aria-hidden="true" tabindex="-1" href="#raid-1001镜像--条带化" class="internal"> §</a></h3>
<p><img src="https://static.7wate.com/img/2023/04/21/8226c8415d5ab.png" alt="RAID 1+0"/></p>
<p><img src="https://static.7wate.com/img/2023/04/21/b0cc485a28a53.png" alt="RAID 0+1"/></p>
<p>RAID 10/01镜像 + 条带化)都是将 RAID 0 和 RAID 1 组合而成的 RAID 级别,其中 RAID 10 是镜像 + 条带化RAID 01 是条带化 + 镜像。它们的区别在于数据的条带化和镜像是先进行哪一个操作。</p>
<ul>
<li>RAID 10镜像 + 条带化 RAID 10 首先将多个磁盘分成两组,每一组中的磁盘都是相互镜像的,然后将这两组磁盘进行条带化。</li>
<li>RAID 01条带化 + 镜像 RAID 01 首先将多个磁盘进行条带化,然后将这些条带进行镜像备份。</li>
</ul>
<p>**RAID 10 和 RAID 01 虽然都是将 RAID 0 和 RAID 1 进行组合,但它们的性能和可靠性并不相同。**RAID 10 通常被认为比 RAID 01 更为可靠因为它允许多个磁盘同时出现故障而不会导致数据丢失。另外RAID 10 的写入性能也比 RAID 01 更好,因为 RAID 10 能够同时使用多个磁盘进行并行写入。</p>
<h3 id="raid-级别对比">RAID 级别对比<a aria-hidden="true" tabindex="-1" href="#raid-级别对比" class="internal"> §</a></h3>
<table><thead><tr><th>RAID 级别</th><th>优点</th><th>缺点</th><th>硬盘数量</th><th>允许损坏</th><th>适用场景</th></tr></thead><tbody><tr><td>RAID 0</td><td>高性能,读写速度快,性价比高</td><td><strong>容错性差</strong>,一块硬盘出问题会导致全部数据丢失</td><td>n≥2</td><td>0</td><td>需要高性能的应用场景,如视频编辑、大型数据库等</td></tr><tr><td>RAID 1</td><td>数据冗余,可靠性高,单盘故障不会影响数据</td><td><strong>容量利用率低</strong>,需要成倍增加硬盘数量</td><td>n≥2</td><td>n-1</td><td>对数据可靠性要求较高的应用场景,如企业数据中心等</td></tr><tr><td>RAID 5</td><td>较高的读写性能,具有数据冗余,单盘故障仍能正常运行</td><td><strong>写性能较差</strong>,阵列重建需要消耗大量时间</td><td>n≥3</td><td>1</td><td>对读写性能和数据可靠性要求较高的应用场景,如小型企业数据库等</td></tr><tr><td>RAID 6</td><td>可以容忍任意两块硬盘故障,可靠性更高</td><td><strong>读写性能较差</strong>,阵列重建需要更长时间</td><td>n≥4</td><td>2</td><td>对数据可靠性要求非常高的应用场景,如金融、医疗等</td></tr><tr><td>RAID 10</td><td>读写性能优秀,可靠性高,同时具备数据冗余和高性能的优点</td><td><strong>成本较高</strong>,容量利用率低</td><td>n=4,n%2=0</td><td>n/2</td><td>对读写性能和数据可靠性要求都很高的应用场景,如大型企业数据库等</td></tr></tbody></table>
<p>**RAID 级别的选择应该根据实际的业务需求和场景来确定。**例如对于一个需要高性能和可靠性的应用场景RAID 10 可能是更好的选择但如果成本和容量利用率是更重要的考虑因素RAID 5 可能是更好的选择。</p>
<h2 id="长江存储">长江存储<a aria-hidden="true" tabindex="-1" href="#长江存储" class="internal"> §</a></h2>
<p><a href="https://www.ymtc.com/" class="external">长江存储</a>Yangtze Memory Technologies Co., Ltd.YMTC是一家中国领先的半导体存储产品制造商总部位于武汉市东湖新技术开发区。长江存储成立于 2016 年,由中国国家集成电路产业投资基金、武汉市政府、合肥市政府和清华紫光集团共同投资成立。</p>
<ul>
<li>
<p>2016 年,长江存储正式成立。</p>
</li>
<li>
<p>2017 年,长江存储研发成功 32 层堆叠 3D NAND 闪存。</p>
</li>
<li>
<p>2018 年,公司成功研发 64 层堆叠 3D NAND 闪存,实现量产。</p>
</li>
<li>
<p>2019 年,长江存储发布 128 层 3D NAND 闪存。</p>
</li>
<li>
<p>2020 年,长江存储正式宣布 128 层 3D NAND 闪存量产。</p>
</li>
<li>
<p>2021 年,长江存储的 128 层闪存开始广泛应用于客户端 SSD 产品。</p>
</li>
</ul>
<p>长江存储的主要发展方向是提高闪存产品的性能和容量,降低生产成本,不断扩大市场份额。公司将继续专注于 3D NAND 闪存技术的研发和量产,努力实现更高层次的堆叠技术,以满足客户在各种应用场景的需求。此外,长江存储也将积极拓展国际市场,与全球半导体产业链深度合作,提高国产存储器在全球市场的竞争力。</p>
<p>长江存储是中国领先的半导体存储制造商,自成立以来,公司在 3D NAND 闪存技术领域取得了显著成果。通过不断提高产品性能、降低成本以及拓展国际市场,长江存储正努力在全球存储产业中树立中国品牌的地位,推动国产半导体产业的发展。</p>
<p><em><strong>国产之光,冲冲冲!</strong></em></p></article></div><div class="right sidebar"><div class="graph "><h3>Graph View</h3><div class="graph-outer"><div id="graph-container" data-cfg="{&quot;drag&quot;:true,&quot;zoom&quot;:true,&quot;depth&quot;:1,&quot;scale&quot;:1.1,&quot;repelForce&quot;:0.5,&quot;centerForce&quot;:0.3,&quot;linkDistance&quot;:30,&quot;fontSize&quot;:0.6,&quot;opacityScale&quot;:1,&quot;showTags&quot;:true,&quot;removeTags&quot;:[]}"></div><svg version="1.1" id="global-graph-icon" xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 55 55" fill="currentColor" xmlSpace="preserve"><path d="M49,0c-3.309,0-6,2.691-6,6c0,1.035,0.263,2.009,0.726,2.86l-9.829,9.829C32.542,17.634,30.846,17,29,17
s-3.542,0.634-4.898,1.688l-7.669-7.669C16.785,10.424,17,9.74,17,9c0-2.206-1.794-4-4-4S9,6.794,9,9s1.794,4,4,4
c0.74,0,1.424-0.215,2.019-0.567l7.669,7.669C21.634,21.458,21,23.154,21,25s0.634,3.542,1.688,4.897L10.024,42.562
C8.958,41.595,7.549,41,6,41c-3.309,0-6,2.691-6,6s2.691,6,6,6s6-2.691,6-6c0-1.035-0.263-2.009-0.726-2.86l12.829-12.829
c1.106,0.86,2.44,1.436,3.898,1.619v10.16c-2.833,0.478-5,2.942-5,5.91c0,3.309,2.691,6,6,6s6-2.691,6-6c0-2.967-2.167-5.431-5-5.91
v-10.16c1.458-0.183,2.792-0.759,3.898-1.619l7.669,7.669C41.215,39.576,41,40.26,41,41c0,2.206,1.794,4,4,4s4-1.794,4-4
s-1.794-4-4-4c-0.74,0-1.424,0.215-2.019,0.567l-7.669-7.669C36.366,28.542,37,26.846,37,25s-0.634-3.542-1.688-4.897l9.665-9.665
C46.042,11.405,47.451,12,49,12c3.309,0,6-2.691,6-6S52.309,0,49,0z M11,9c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2
S11,10.103,11,9z M6,51c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S8.206,51,6,51z M33,49c0,2.206-1.794,4-4,4s-4-1.794-4-4
s1.794-4,4-4S33,46.794,33,49z M29,31c-3.309,0-6-2.691-6-6s2.691-6,6-6s6,2.691,6,6S32.309,31,29,31z M47,41c0,1.103-0.897,2-2,2
s-2-0.897-2-2s0.897-2,2-2S47,39.897,47,41z M49,10c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S51.206,10,49,10z"></path></svg></div><div id="global-graph-outer"><div id="global-graph-container" data-cfg="{&quot;drag&quot;:true,&quot;zoom&quot;:true,&quot;depth&quot;:-1,&quot;scale&quot;:0.9,&quot;repelForce&quot;:0.5,&quot;centerForce&quot;:0.3,&quot;linkDistance&quot;:30,&quot;fontSize&quot;:0.6,&quot;opacityScale&quot;:1,&quot;showTags&quot;:true,&quot;removeTags&quot;:[]}"></div></div></div><div class="toc desktop-only"><button type="button" id="toc" class><h3>Table of Contents</h3><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="fold"><polyline points="6 9 12 15 18 9"></polyline></svg></button><div id="toc-content"><ul class="overflow"><li class="depth-0"><a href="#磁带tape" data-for="磁带tape">磁带Tape</a></li><li class="depth-0"><a href="#光盘optical-disc" data-for="光盘optical-disc">光盘Optical Disc</a></li><li class="depth-0"><a href="#磁盘disk" data-for="磁盘disk">磁盘Disk</a></li><li class="depth-1"><a href="#发展历史" data-for="发展历史">发展历史</a></li><li class="depth-1"><a href="#数据接口" data-for="数据接口">数据接口</a></li><li class="depth-1"><a href="#硬盘尺寸" data-for="硬盘尺寸">硬盘尺寸</a></li><li class="depth-1"><a href="#实现原理" data-for="实现原理">实现原理</a></li><li class="depth-1"><a href="#设计结构" data-for="设计结构">设计结构</a></li><li class="depth-1"><a href="#mbr-和-gpt" data-for="mbr-和-gpt">MBR 和 GPT</a></li><li class="depth-0"><a href="#固态驱动器ssd" data-for="固态驱动器ssd">固态驱动器SSD</a></li><li class="depth-1"><a href="#发展历史-1" data-for="发展历史-1">发展历史</a></li><li class="depth-1"><a href="#数据接口-1" data-for="数据接口-1">数据接口</a></li><li class="depth-1"><a href="#硬盘尺寸-1" data-for="硬盘尺寸-1">硬盘尺寸</a></li><li class="depth-1"><a href="#实现原理-1" data-for="实现原理-1">实现原理</a></li><li class="depth-1"><a href="#设计结构-1" data-for="设计结构-1">设计结构</a></li><li class="depth-0"><a href="#raid独立磁盘冗余阵列技术" data-for="raid独立磁盘冗余阵列技术">RAID独立磁盘冗余阵列技术</a></li><li class="depth-1"><a href="#raid-0条带化" data-for="raid-0条带化">RAID 0条带化</a></li><li class="depth-1"><a href="#raid-1镜像" data-for="raid-1镜像">RAID 1镜像</a></li><li class="depth-1"><a href="#raid-5分布式奇偶校验" data-for="raid-5分布式奇偶校验">RAID 5分布式奇偶校验</a></li><li class="depth-1"><a href="#raid-6双奇偶校验" data-for="raid-6双奇偶校验">RAID 6双奇偶校验</a></li><li class="depth-1"><a href="#raid-1001镜像--条带化" data-for="raid-1001镜像--条带化">RAID 10/01镜像 + 条带化)</a></li><li class="depth-1"><a href="#raid-级别对比" data-for="raid-级别对比">RAID 级别对比</a></li><li class="depth-0"><a href="#长江存储" data-for="长江存储">长江存储</a></li></ul></div></div><div class="backlinks "><h3>Backlinks</h3><ul class="overflow"><li>No backlinks found</li></ul></div><div class="explorer mobile-only"><button type="button" id="explorer" data-behavior="collapse" data-collapsed="collapsed" data-savestate="true" data-tree="[{&quot;path&quot;:&quot;Basics&quot;,&quot;collapsed&quot;:true},{&quot;path&quot;:&quot;Basics/english&quot;,&quot;collapsed&quot;:true},{&quot;path&quot;:&quot;Blog&quot;,&quot;collapsed&quot;:true},{&quot;path&quot;:&quot;Book&quot;,&quot;collapsed&quot;:true},{&quot;path&quot;:&quot;Book/个人成长&quot;,&quot;collapsed&quot;:true},{&quot;path&quot;:&quot;Book/医学健康&quot;,&quot;collapsed&quot;:true},{&quot;path&quot;:&quot;Book/历史&quot;,&quot;collapsed&quot;:true},{&quot;path&quot;:&quot;Book/哲学宗教&quot;,&quot;collapsed&quot;:true},{&quot;path&quo
function toggleCallout() {
const outerBlock = this.parentElement;
outerBlock.classList.toggle(`is-collapsed`);
const collapsed = outerBlock.classList.contains(`is-collapsed`);
const height = collapsed ? this.scrollHeight : outerBlock.scrollHeight;
outerBlock.style.maxHeight = height + `px`;
let current = outerBlock;
let parent = outerBlock.parentElement;
while (parent) {
if (!parent.classList.contains(`callout`)) {
return;
}
const collapsed2 = parent.classList.contains(`is-collapsed`);
const height2 = collapsed2 ? parent.scrollHeight : parent.scrollHeight + current.scrollHeight;
parent.style.maxHeight = height2 + `px`;
current = parent;
parent = parent.parentElement;
}
}
function setupCallout() {
const collapsible = document.getElementsByClassName(
`callout is-collapsible`
);
for (const div of collapsible) {
const title = div.firstElementChild;
if (title) {
title.removeEventListener(`click`, toggleCallout);
title.addEventListener(`click`, toggleCallout);
const collapsed = div.classList.contains(`is-collapsed`);
const height = collapsed ? title.scrollHeight : div.scrollHeight;
div.style.maxHeight = height + `px`;
}
}
}
document.addEventListener(`nav`, setupCallout);
window.addEventListener(`resize`, setupCallout);
</script><script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
mermaid.initialize({
startOnLoad: false,
securityLevel: 'loose',
theme: darkMode ? 'dark' : 'default'
});
document.addEventListener('nav', async () => {
await mermaid.run({
querySelector: '.mermaid'
})
});
</script><script src="https://cdn.jsdelivr.net/npm/katex@0.16.7/dist/contrib/copy-tex.min.js" type="application/javascript"></script><script src="../../postscript.js" type="module"></script></html>