大家好,我是程序猿老王,就是那個(gè)程序猿老王。
今天,我將為大家介紹一下在Linux系統(tǒng)中磁盤管理中的一些關(guān)鍵操作,包括格式化、分區(qū)、掛載等。希望這篇文章對大家有所啟發(fā)。
磁盤管理基礎(chǔ)
1. 磁盤的概念
磁盤(Disk)是用于存儲(chǔ)和讀取數(shù)據(jù)的物理設(shè)備,通常由一個(gè)或多個(gè)旋轉(zhuǎn)的磁性盤片構(gòu)成。這些盤片一般由金屬或玻璃制成,并涂覆有磁性材料。作為計(jì)算機(jī)系統(tǒng)中的主要永久性存儲(chǔ)介質(zhì)之一,磁盤扮演著至關(guān)重要的角色。
2.磁盤工作機(jī)制
磁盤的工作機(jī)制是基于磁性材料的磁化和磁場感應(yīng)原理。下面是磁盤的工作機(jī)制的基本過程:
- 磁化:磁盤上的磁性材料可以被磁化,即通過施加磁場來使得材料的磁性定向發(fā)生變化。這種磁化可以通過電磁磁鐵或磁頭產(chǎn)生的磁場來實(shí)現(xiàn)。
- 磁場感應(yīng):磁頭是磁盤上的感應(yīng)器,它可以感受到磁場的變化并將其轉(zhuǎn)換為電信號(hào)。當(dāng)磁頭靠近磁盤表面時(shí),它可以檢測到磁性材料的磁化狀態(tài)。
- 數(shù)據(jù)讀取:在讀取數(shù)據(jù)時(shí),磁頭通過感應(yīng)磁場的變化來檢測磁盤上的數(shù)據(jù)。當(dāng)磁頭經(jīng)過磁化的區(qū)域時(shí),感應(yīng)到的磁場變化會(huì)轉(zhuǎn)換為電信號(hào),并由磁盤控制器解讀為相應(yīng)的數(shù)據(jù)。
- 數(shù)據(jù)寫入:在寫入數(shù)據(jù)時(shí),磁頭會(huì)通過施加磁場來改變磁盤上的磁化狀態(tài)。磁頭會(huì)根據(jù)要寫入的數(shù)據(jù),在磁盤上相應(yīng)的位置創(chuàng)建或改變磁化模式,從而將數(shù)據(jù)存儲(chǔ)在磁性材料中。
- 尋道和旋轉(zhuǎn):為了訪問特定的磁道和扇區(qū),磁頭需要在磁盤表面上移動(dòng)到目標(biāo)位置,這個(gè)過程稱為尋道操作。磁頭的移動(dòng)由磁盤驅(qū)動(dòng)器控制,它們可以在磁盤半徑方向上移動(dòng)。另外,磁盤通過旋轉(zhuǎn)盤片來實(shí)現(xiàn)高速讀寫操作,旋轉(zhuǎn)速度通常以每分鐘轉(zhuǎn)數(shù)(RPM)來表示。
通過控制磁場和磁頭的移動(dòng),磁盤實(shí)現(xiàn)了數(shù)據(jù)的存儲(chǔ)和檢索。這種機(jī)制具有較大的存儲(chǔ)容量、較低的成本以及相對較快的讀寫速度,使得磁盤成為計(jì)算機(jī)系統(tǒng)中主要的永久性存儲(chǔ)介質(zhì)之一。
3.磁盤的專業(yè)名稱
3.1盤片 片面 和 磁頭
盤片(Platter):盤片是硬盤驅(qū)動(dòng)器內(nèi)部的圓形磁性盤,通常由金屬或玻璃材料制成。硬盤驅(qū)動(dòng)器可以包含一個(gè)或多個(gè)盤片,它們堆疊在一起并通過中央軸固定。每個(gè)盤片都具有兩個(gè)平整的表面,稱為片面。
片面(Platter Surface):片面是盤片上的一個(gè)平整表面,用于存儲(chǔ)數(shù)據(jù)。一個(gè)盤片通常具有兩個(gè)片面,也就是兩個(gè)可用于讀寫數(shù)據(jù)的表面。每個(gè)片面都被劃分為一系列同心圓形的磁道,每個(gè)磁道又被劃分為多個(gè)扇區(qū)。
磁頭(Head):磁頭是位于盤片上方的裝置,用于讀取和寫入數(shù)據(jù)。在硬盤驅(qū)動(dòng)器中,磁頭位于移動(dòng)的磁臂上,并可以沿著盤片的半徑方向移動(dòng)。每個(gè)片面上都有一個(gè)磁頭與磁盤進(jìn)行數(shù)據(jù)交互。因此,如果硬盤驅(qū)動(dòng)器有多個(gè)盤片,每個(gè)片面上都會(huì)有一個(gè)磁頭。
3.2扇區(qū) 和 磁道
扇區(qū)(Sector):扇區(qū)是磁盤上最小的存儲(chǔ)單位。它是磁道上的一個(gè)小片段,通常的大小為512字節(jié)或4KB。每個(gè)磁盤扇區(qū)都有一個(gè)唯一的地址,通過這個(gè)地址可以定位和訪問特定的數(shù)據(jù)。操作系統(tǒng)和文件系統(tǒng)將數(shù)據(jù)組織成扇區(qū),然后使用扇區(qū)地址來讀取或?qū)懭霐?shù)據(jù)。
磁道(Track):磁道是磁盤表面上的一個(gè)圓環(huán),沿著盤片的半徑方向延伸。一個(gè)磁盤上通常有多個(gè)磁道,它們被編號(hào)以便標(biāo)識(shí)和訪問特定的磁道。每個(gè)磁道可以包含多個(gè)扇區(qū),形成一個(gè)數(shù)據(jù)環(huán)。磁盤的磁頭可以在磁盤表面上移動(dòng)到指定的磁道上,然后讀取或?qū)懭氪诺郎系纳葏^(qū)數(shù)據(jù)。
3.3磁頭 和 柱面
磁頭(Head):磁頭是位于硬盤驅(qū)動(dòng)器內(nèi)部的裝置,用于讀取和寫入數(shù)據(jù)。在硬盤驅(qū)動(dòng)器中,磁頭位于移動(dòng)的磁臂上,并可以沿著盤片的半徑方向移動(dòng)。每個(gè)片面上都有一個(gè)磁頭與磁盤進(jìn)行數(shù)據(jù)交互。磁頭負(fù)責(zé)在特定的磁道上讀取或?qū)懭霐?shù)據(jù)。通過控制磁頭的移動(dòng)和定位,可以將磁頭定位到目標(biāo)磁道上的特定位置,以進(jìn)行數(shù)據(jù)的讀寫操作。
柱面(Cylinder):柱面是硬盤驅(qū)動(dòng)器內(nèi)部的一個(gè)概念,表示位于多個(gè)盤片上的相同半徑位置的磁道的集合。換句話說,柱面由位于相同半徑位置的多個(gè)盤片上的磁道垂直堆疊而成。柱面號(hào)用于表示磁盤上具有相同半徑位置的磁道組合。通過將磁頭移動(dòng)到特定柱面,可以訪問該柱面上的所有磁道。
4.磁盤分類
根據(jù)接口類型,磁盤可以分為多種類型,以下是一些常見的磁盤接口分類:
- SATA(Serial ATA)磁盤:SATA是目前最為常見的磁盤接口類型,廣泛用于臺(tái)式機(jī)和筆記本電腦。它提供了較高的數(shù)據(jù)傳輸速度和較低的成本,支持熱插拔和熱交換。
- SAS(Serial Attached SCSI)磁盤:SAS是一種高性能磁盤接口,主要用于企業(yè)級服務(wù)器和存儲(chǔ)系統(tǒng)。它提供了更高的數(shù)據(jù)傳輸速度和更可靠的連接,支持多路徑冗余和熱插拔功能。
- SCSI(Small Computer System Interface)磁盤:SCSI是一種早期的磁盤接口,用于連接高性能計(jì)算機(jī)系統(tǒng)和外部存儲(chǔ)設(shè)備。它提供了高速數(shù)據(jù)傳輸和靈活的設(shè)備連接選項(xiàng),支持多設(shè)備鏈路和高級功能。
- NVMe(Non-volatile Memory express)磁盤:NVMe是一種基于PCIe(Peripheral Component Interconnect Express)總線的高性能磁盤接口。它專為固態(tài)硬盤(SSD)設(shè)計(jì),具有低延遲和高速數(shù)據(jù)傳輸能力,廣泛用于高性能計(jì)算和數(shù)據(jù)中心環(huán)境。
這些磁盤接口類型在性能、可靠性、兼容性和成本等方面有所區(qū)別,適用于不同的應(yīng)用場景和需求。選擇合適的磁盤接口類型要考慮主機(jī)設(shè)備的接口支持、數(shù)據(jù)傳輸需求和預(yù)算限制。
二、磁盤分區(qū)優(yōu)勢
管理和組織數(shù)據(jù):分區(qū)可以幫助您更好地管理和組織磁盤上的數(shù)據(jù)。通過將磁盤分割為多個(gè)區(qū)域,您可以將不同類型的數(shù)據(jù)存儲(chǔ)在不同的分區(qū)中,例如操作系統(tǒng)文件、應(yīng)用程序、用戶數(shù)據(jù)等。這樣可以更好地組織文件,并使其更易于管理和維護(hù)。沒有分區(qū)時(shí),所有數(shù)據(jù)都存儲(chǔ)在同一個(gè)磁盤上,可能會(huì)導(dǎo)致數(shù)據(jù)混亂和難以管理。
性能:分區(qū)可以對磁盤的性能產(chǎn)生影響。通過將數(shù)據(jù)分布在多個(gè)分區(qū)中,可以提高磁盤訪問的效率。例如,將操作系統(tǒng)和程序文件分配到一個(gè)分區(qū),將用戶數(shù)據(jù)分配到另一個(gè)分區(qū),這樣可以減少磁頭的移動(dòng)距離,提高讀寫速度。沒有分區(qū)時(shí),所有數(shù)據(jù)都存儲(chǔ)在同一個(gè)區(qū)域,可能會(huì)導(dǎo)致磁頭頻繁移動(dòng),降低訪問效率。
安全性和穩(wěn)定性:通過將系統(tǒng)和用戶數(shù)據(jù)分開存儲(chǔ)在不同的分區(qū)中,可以提高系統(tǒng)的安全性和穩(wěn)定性。如果發(fā)生系統(tǒng)故障或數(shù)據(jù)損壞,可能只影響某個(gè)特定的分區(qū),而不會(huì)影響整個(gè)磁盤上的數(shù)據(jù)。沒有分區(qū)時(shí),數(shù)據(jù)的安全性和穩(wěn)定性可能會(huì)受到更大的威脅,因?yàn)檎麄€(gè)磁盤上的數(shù)據(jù)都處于相同的風(fēng)險(xiǎn)之中。
多引導(dǎo)系統(tǒng):分區(qū)使得在同一磁盤上安裝多個(gè)操作系統(tǒng)變得可能。每個(gè)操作系統(tǒng)可以位于不同的分區(qū)中,這樣可以實(shí)現(xiàn)多引導(dǎo),使用戶可以在啟動(dòng)時(shí)選擇要運(yùn)行的操作系統(tǒng)。如果不對磁盤進(jìn)行分區(qū),則無法輕松實(shí)現(xiàn)多引導(dǎo)系統(tǒng)。
兼容性:某些文件系統(tǒng)在使用時(shí)需要特定的分區(qū)類型。通過將磁盤進(jìn)行分區(qū),可以選擇適當(dāng)?shù)姆謪^(qū)類型以支持所需的文件系統(tǒng)。沒有分區(qū)時(shí),可能無法滿足特定文件系統(tǒng)的要求。
總之,磁盤分區(qū)提供了更好的數(shù)據(jù)管理、性能、安全性和靈活性。它允許更好地組織和管理磁盤上的數(shù)據(jù),提高性能,提供數(shù)據(jù)的安全性和穩(wěn)定性,并允許實(shí)現(xiàn)多引導(dǎo)系統(tǒng)和不同文件系統(tǒng)的兼容性。沒有分區(qū)時(shí),這些優(yōu)勢和功能將無法實(shí)現(xiàn)。
三、磁盤分區(qū)
在Linux下,磁盤格式化、分區(qū)和掛載的詳細(xì)步驟如下所示:
1.確定磁盤設(shè)備
使用以下命令來查看可用磁盤設(shè)備:
/?#?fdisk?-l Disk?/dev/mmcblk1:?7456?MB,?7818182656?bytes,?15269888?sectors 238592?cylinders,?4?heads,?16?sectors/track Units:?sectors?of?1?*?512?=?512?bytes Disk?/dev/mmcblk1?doesn't?contain?a?valid?partition?table Disk?/dev/mmcblk1boot0:?4?MB,?4194304?bytes,?8192?sectors 128?cylinders,?4?heads,?16?sectors/track Units:?sectors?of?1?*?512?=?512?bytes Disk?/dev/mmcblk1boot0?doesn't?contain?a?valid?partition?table Disk?/dev/mmcblk1boot1:?4?MB,?4194304?bytes,?8192?sectors 128?cylinders,?4?heads,?16?sectors/track Units:?sectors?of?1?*?512?=?512?bytes Disk?/dev/mmcblk1boot1?doesn't?contain?a?valid?partition?table Disk?/dev/mmcblk0:?15?GB,?15931539456?bytes,?31116288?sectors 486192?cylinders,?4?heads,?16?sectors/track Units:?sectors?of?1?*?512?=?512?bytes Device???????Boot?StartCHS????EndCHS????????StartLBA?????EndLBA????Sectors??Size?Id?Type /dev/mmcblk0p1?*??0,32,33?????8,73,1????????????2048?????133119?????131072?64.0M??c?Win95?FAT32?(LBA) /dev/mmcblk0p2????8,73,2??????912,229,21??????133120???31116287???30983168?14.7G?83?Linux
從上面可以得出:
/dev/mmcblk1:容量為7456 MB的磁盤。238592柱面,4個(gè)磁頭,每個(gè)磁道16個(gè)扇區(qū)。磁盤上沒有有效的分區(qū)表。
/dev/mmcblk1boot0和/dev/mmcblk1boot1是磁盤的引導(dǎo)區(qū),大小為4 MB,但它們沒有有效的分區(qū)表。
/dev/mmcblk0:容量為15 GB的磁盤。486192柱面,4個(gè)磁頭,每個(gè)磁道16個(gè)扇區(qū)。包含兩個(gè)分區(qū):
- /dev/mmcblk0p1是引導(dǎo)分區(qū),大小為64.0M,使用Win95 FAT32(LBA)文件系統(tǒng)。
- /dev/mmcblk0p2是第二個(gè)分區(qū),大小為14.7G,使用Linux文件系統(tǒng)(ID為83)。
2.使用fdisk命令對磁盤進(jìn)行分區(qū)
/?#?fdisk?/dev/mmcblk1 The?number?of?cylinders?for?this?disk?is?set?to?238592. There?is?nothing?wrong?with?that,?but?this?is?larger?than?1024, and?could?in?certain?setups?cause?problems?with: 1)?software?that?runs?at?boot?time?(e.g.,?old?versions?of?LILO) 2)?booting?and?partitioning?software?from?other?OSs ???(e.g.,?DOS?FDISK,?OS/2?FDISK) Command?(m?for?help):
此時(shí)命令欄提示輸入’m’,可以看到有如下參數(shù):
Command?(m?for?help):?m Command?Action a???????toggle?a?bootable?flag b???????edit?bsd?disklabel c???????toggle?the?dos?compatibility?flag d???????delete?a?partition l???????list?known?partition?types n???????add?a?new?partition o???????create?a?new?empty?DOS?partition?table p???????print?the?partition?table q???????quit?without?saving?changes s???????create?a?new?empty?Sun?disklabel t???????change?a?partition's?system?id u???????change?display/entry?units v???????verify?the?partition?table w???????write?table?to?disk?and?exit x???????extra?functionality?(experts?only) Command?(m?for?help):?
各指令含義如下:
- a: 切換引導(dǎo)標(biāo)志(toggle a bootable flag)
- b: 編輯BSD磁盤標(biāo)簽(edit bsd disklabel)
- c: 切換DOS兼容性標(biāo)志(toggle the dos compatibility flag)
- d: 刪除分區(qū)(delete a partition)
- l: 列出已知的分區(qū)類型(list known partition types)
- n: 添加新分區(qū)(add a new partition)
- o: 創(chuàng)建一個(gè)新的空DOS分區(qū)表(create a new empty DOS partition table)
- p: 打印分區(qū)表(print the partition table)
- q: 退出而不保存更改(quit without saving changes)
- s: 創(chuàng)建一個(gè)新的空Sun磁盤標(biāo)簽(create a new empty Sun disklabel)
- t: 更改分區(qū)的系統(tǒng)ID(change a partition’s system id)
- u: 更改顯示/輸入單位(change display/entry units)
- v: 驗(yàn)證分區(qū)表(verify the partition table)
- w: 將表寫入磁盤并退出(write table to disk and exit)
- x: 額外功能(僅供專家使用)(extra functionality (experts only)) 繼續(xù)往下,進(jìn)行創(chuàng)建分區(qū)操作:
Command?(m?for?help):?n Partition?type ???p???primary?partition?(1-4) ???e???extended p Partition?number?(1-4):?1 First?sector?(16-15269887,?default?16):? Using?default?value?16 Last?sector?or?+size{,K,M,G,T}?(16-15269887,?default?15269887):?+32M Command?(m?for?help):?n Partition?type ???p???primary?partition?(1-4) ???e???extended p Partition?number?(1-4):?2 First?sector?(65552-15269887,?default?65552):? Using?default?value?65552 Last?sector?or?+size{,K,M,G,T}?(65552-15269887,?default?15269887):? Using?default?value?15269887 Command?(m?for?help):?t Partition?number?(1-4):?1 Hex?code?(type?L?to?list?codes):?c Changed?system?type?of?partition?1?to?c?(Win95?FAT32?(LBA)) Command?(m?for?help):?a Partition?number?(1-4):?1 Command?(m?for?help):?w The?partition?table?has?been?altered. Calling?ioctl()?to?re-read?partition?table [?1334.059435]??mmcblk1:?p1?p2
以下是對上面輸入命令的詳細(xì)解釋:
- 使用命令’n’創(chuàng)建一個(gè)新的分區(qū):
- 選擇主分區(qū)(primary partition)類型,輸入’p’。
- 輸入分區(qū)號(hào),這里選擇1。
- 輸入起始扇區(qū),默認(rèn)為16,可以直接按回車鍵使用默認(rèn)值。
- 輸入結(jié)束扇區(qū)或者分區(qū)大小,這里輸入’+32M’表示分區(qū)大小為32MB。
- 使用命令’n’再次創(chuàng)建一個(gè)新的分區(qū):
- 選擇主分區(qū)(primary partition)類型,輸入’p’。
- 輸入分區(qū)號(hào),這里選擇2。
- 輸入起始扇區(qū),默認(rèn)為65552,可以直接按回車鍵使用默認(rèn)值。
- 輸入結(jié)束扇區(qū)或者分區(qū)大小,這里使用默認(rèn)值15269887。
- 使用命令’t’設(shè)置分區(qū)類型:
- 輸入要設(shè)置類型的分區(qū)號(hào),這里選擇1。
- 輸入十六進(jìn)制代碼(Hex code),這里輸入’c’表示將分區(qū)1的系統(tǒng)類型設(shè)置為Win95 FAT32(LBA)。
- 使用命令’a’設(shè)置引導(dǎo)標(biāo)志:
- 輸入要設(shè)置引導(dǎo)標(biāo)志的分區(qū)號(hào),這里選擇1。
- 使用命令’w’保存更改并退出:
- 確認(rèn)分區(qū)表已經(jīng)被修改,并且調(diào)用ioctl()重新讀取分區(qū)表。
- 提示分區(qū)表已經(jīng)被修改,并成功保存更改。
最后,磁盤分區(qū)表將被修改,分區(qū)1被設(shè)置為Win95 FAT32(LBA)類型,并且設(shè)置為引導(dǎo)分區(qū)。
請注意,這些操作可能會(huì)對磁盤上的數(shù)據(jù)產(chǎn)生影響,請確保在進(jìn)行此類操作之前備份重要數(shù)據(jù)。
四、磁盤格式化
磁盤格式化是指在磁盤上創(chuàng)建文件系統(tǒng)以準(zhǔn)備存儲(chǔ)數(shù)據(jù)的過程。通過格式化,磁盤將被分區(qū)劃分為邏輯塊,并創(chuàng)建用于存儲(chǔ)和組織文件的文件系統(tǒng)結(jié)構(gòu)。格式化磁盤將清除磁盤上的所有數(shù)據(jù),并為其提供一個(gè)干凈的文件系統(tǒng)環(huán)境,使其可以開始存儲(chǔ)新的數(shù)據(jù)。
這里,我們將上面的兩個(gè)分區(qū)分別格式化為Fat32格式的文件系統(tǒng)和ext4格式的文件系統(tǒng)
- 將’/dev/mmcblk1p1’格式化為Fat32格式的文件系統(tǒng)
- 將’/dev/mmcblk1p2’格式化為ext4格式的文件系統(tǒng)
Fat32格式,使用命令如下:
mkfs.vfat?-F?32?-n?"boot"?/dev/mmcblk1p1
每個(gè)選項(xiàng)的含義解釋如下:
- -F 32:指定創(chuàng)建的文件系統(tǒng)類型為FAT32。
- -n MyVolume:設(shè)置卷標(biāo)為”MyVolume”,該卷標(biāo)將作為文件系統(tǒng)的名稱顯示。
- /dev/mmcblk1p1:是要格式化的設(shè)備或分區(qū)
ext4格式,使用命令如下:
mkfs.ext4?-F?-L?"rootfs"?/dev/mmcblk1p2 -/bin/sh:?mkfs.ext4:?not?found?
每個(gè)選項(xiàng)的含義解釋如下:
- -F:強(qiáng)制進(jìn)行格式化,即使設(shè)備已經(jīng)被掛載。
- -L “rootfs”:設(shè)置文件系統(tǒng)的標(biāo)簽為”rootfs”,該標(biāo)簽將作為文件系統(tǒng)的名稱顯示。
- /dev/mmcblk1p2:要格式化的設(shè)備或分區(qū)。
這里我們的文件系統(tǒng)不支持mkfs.ext4格式,但是可以使用它的孿生兄弟“mke2fs”,指令如下:
mke2fs?-F?-L?"rootfs"?/dev/mmcblk1p2 Filesystem?label=rootfs OS?type:?Linux Block?size=4096?(log=2) Fragment?size=4096?(log=2) 475136?inodes,?1900542?blocks 95027?blocks?(5%)?reserved?for?the?super?user First?data?block=0 Maximum?filesystem?blocks=4194304 58?block?groups 32768?blocks?per?group,?32768?fragments?per?group 8192?inodes?per?group Superblock?backups?stored?on?blocks: ????????32768,?98304,?163840,?229376,?294912,?819200,?884736,?1605632 /?#?
現(xiàn)在我們已經(jīng)將上面的兩個(gè)分區(qū)格式化完成了,下一步就是掛載分區(qū)。
五、磁盤掛載
1.創(chuàng)建掛載點(diǎn)
首先,您需要選擇一個(gè)目錄作為掛載點(diǎn)。可以使用mkdir命令創(chuàng)建一個(gè)空目錄作為掛載點(diǎn),例如:
mkdir?/mnt/boot
2.執(zhí)行掛載命令
使用mount命令將文件系統(tǒng)掛載到指定的掛載點(diǎn)上,例如:
mount?/dev/mmcblk1p1?/mnt/boot
使用“df”指令查看是否掛載成功,命令如下:
/?#?df?-a Filesystem???????????1K-blocks??????Used?Available?Use%?Mounted?on /dev/root?????????????15141732????161948??14188824???1%?/ devtmpfs????????????????216388?????????0????216388???0%?/dev proc?????????????????????????0?????????0?????????0???0%?/proc tmpfs???????????????????249668?????????0????249668???0%?/tmp sysfs????????????????????????0?????????0?????????0???0%?/sys devpts???????????????????????0?????????0?????????0???0%?/dev/pts /dev/mmcblk1p1???????????32260?????????1?????32260???0%?/mnt/boot
很明顯已經(jīng)’/dev/mmcblk1p1‘分區(qū)已經(jīng)成功掛載到’/mnt/boot‘目錄下。
3.訪問文件系統(tǒng)
現(xiàn)在,可以通過掛載點(diǎn)來訪問和操作文件系統(tǒng)中的文件和目錄。
例如,您可以使用cd命令進(jìn)入掛載點(diǎn),并使用其他文件操作命令進(jìn)行文件的讀取、寫入等操作:
cd?/mnt/boot touch?test.txt
然后掉電重啟開發(fā)板,再次查看’/mnt/boot’下是否有test.txt文件:
/?#?ls?/mnt/boot/ /?#?
很明顯是沒有test.txt文件,磁盤的’/dev/mmcblk1p1’分區(qū)未進(jìn)行掛載到’/mnt/boot’目錄下,因此在’/mnt/boot’下是看不到test.txt文件的。
/?#?df?-a Filesystem???????????1K-blocks??????Used?Available?Use%?Mounted?on /dev/root?????????????15141732????161948??14188824???1%?/ devtmpfs????????????????216388?????????0????216388???0%?/dev proc?????????????????????????0?????????0?????????0???0%?/proc tmpfs???????????????????249668?????????0????249668???0%?/tmp sysfs????????????????????????0?????????0?????????0???0%?/sys devpts???????????????????????0?????????0?????????0???0%?/dev/pts
test.txt文件是保存在磁盤的’/dev/mmcblk1p1’分區(qū),掉電后需要手動(dòng)掛載到’/mnt/boot’該目錄下,才能查看到test.txt文件,如下:
/?#?mount?/dev/mmcblk1p1?/mnt/boot [??179.885442]?FAT-fs?(mmcblk1p1):?Volume?was?not?properly?unmounted.?Some?data?may?be?corrupt.?Please?run?fsck. /?#?ls?/mnt/boot/ test.txt /?#
另一個(gè)分區(qū)掛載如下:
mkdir?/mnt/rootfs mount?/dev/mmcblk1p2?/mnt/rootfs /?#?df?-h Filesystem????????????????Size??????Used?Available?Use%?Mounted?on /dev/root????????????????14.4G????158.2M?????13.5G???1%?/ devtmpfs????????????????211.3M?????????0????211.3M???0%?/dev tmpfs???????????????????243.8M?????????0????243.8M???0%?/tmp /dev/mmcblk1p1???????????31.5M???????512?????31.5M???0%?/mnt/boot /dev/mmcblk1p2????????????7.1G?????20.0K??????6.8G???0%?/mnt/rootfs
六、開機(jī)自動(dòng)掛載
1.設(shè)備路徑掛載
如果希望在系統(tǒng)啟動(dòng)時(shí)自動(dòng)掛載分區(qū),可以編輯/etc/fstab文件并添加相應(yīng)的條目。例如:
#???????????????? proc????????????/proc???????????proc????defaults????????0???????0 tmpfs???????????/tmp????????????tmpfs???defaults????????0???????0 sysfs???????????/sys????????????sysfs???defaults????????0???????0 /dev/mmcblk1p1??/mnt/boot???????vfat????defaults????????0???????0 /dev/mmcblk1p2??/mnt/rootfs?????ext4????defaults????????0???????0
重新啟動(dòng)開發(fā)板,使用’df’命令查看是否自動(dòng)掛載
/?#?df?-h Filesystem????????????????Size??????Used?Available?Use%?Mounted?on /dev/root????????????????14.4G????158.2M?????13.5G???1%?/ devtmpfs????????????????211.3M?????????0????211.3M???0%?/dev tmpfs???????????????????243.8M?????????0????243.8M???0%?/tmp /dev/mmcblk1p1???????????31.5M???????512?????31.5M???0%?/mnt/boot /dev/mmcblk1p2????????????7.1G?????20.0K??????6.8G???0%?/mnt/rootfs
ok,自動(dòng)掛載成功。
2.UUID掛載
另一種掛載方法,這里在教大家使用UUID來進(jìn)行自動(dòng)掛載,如下:
獲取分區(qū)的UUID:使用以下命令各分區(qū)的UUID:
/?#?blkid? /dev/mmcblk0p2:?LABEL="rootfs"?UUID="4bdc82c7-5e83-4992-9966-cd99a2317944"?TYPE="ext4" /dev/mmcblk0p1:?LABEL="boot"?UUID="DF8D-2A71"?TYPE="vfat" /dev/mmcblk1p2:?LABEL="rootfs"?UUID="54b75bd6-7cdf-4e80-aa48-1af163bf61f3"?TYPE="ext2" /dev/mmcblk1p1:?TYPE="vfat"
編輯/etc/fstab文件并添加相應(yīng)的條目。例如:
#???????????????? proc????????????/proc???????????proc????defaults????????0???????0 tmpfs???????????/tmp????????????tmpfs???defaults????????0???????0 sysfs???????????/sys????????????sysfs???defaults????????0???????0 UUID=54b75bd6-7cdf-4e80-aa48-1af163bf61f3???/mnt/rootfs?ext4?defaults?0?0
保存后,重啟開發(fā)板,成功自動(dòng)掛載,如下:
/?#?df?-h Filesystem????????????????Size??????Used?Available?Use%?Mounted?on /dev/root????????????????14.4G????158.2M?????13.5G???1%?/ devtmpfs????????????????211.3M?????????0????211.3M???0%?/dev tmpfs???????????????????243.8M?????????0????243.8M???0%?/tmp /dev/mmcblk1p2????????????7.1G?????20.0K??????6.8G???0%?/mnt/rootfs
在掛載文件系統(tǒng)時(shí),您可以使用設(shè)備路徑(如 /dev/mmcblk1p1)或文件系統(tǒng)的UUID來標(biāo)識(shí)要掛載的分區(qū)。這兩種方法各有一些區(qū)別和好處:
1.設(shè)備路徑 (/dev/mmcblk1p1):
- 標(biāo)識(shí)分區(qū)的路徑:使用設(shè)備路徑是一種直接而簡單的方法來標(biāo)識(shí)要掛載的分區(qū)。它基于設(shè)備文件的物理路徑,可以明確地指定要掛載的分區(qū)。例如,’/dev/mmcblk1p1′ 表示第二個(gè)MMC類型的磁盤的第一個(gè)分區(qū)。
- 相對容易記憶:設(shè)備路徑通常較短且易于記憶,因?yàn)樗鼈冎苯优c設(shè)備文件的名稱相關(guān)。
但是,設(shè)備路徑可能會(huì)受到設(shè)備插入和拔出的影響。如果您的系統(tǒng)中存在多個(gè)磁盤或設(shè)備連接狀態(tài)發(fā)生變化,設(shè)備路徑可能會(huì)改變。
2.文件系統(tǒng)UUID:
- 標(biāo)識(shí)分區(qū)的唯一性:每個(gè)文件系統(tǒng)都有一個(gè)唯一的UUID(通用唯一標(biāo)識(shí)符),用于識(shí)別分區(qū)。UUID是在創(chuàng)建文件系統(tǒng)時(shí)生成的,并且是全局唯一的。它不受設(shè)備連接狀態(tài)的影響,因此即使設(shè)備路徑發(fā)生變化,UUID仍將保持不變。
- 穩(wěn)定性和持久性:使用UUID來掛載分區(qū)可以提供更穩(wěn)定和持久的掛載方式,因?yàn)榧词怪匦聠?dòng)系統(tǒng)或更改設(shè)備連接狀態(tài),UUID標(biāo)識(shí)的分區(qū)仍然可以準(zhǔn)確地被找到。
- 更適合自動(dòng)化和腳本:使用UUID可以更方便地進(jìn)行自動(dòng)化操作和腳本編寫,因?yàn)閁UID提供了一個(gè)固定的標(biāo)識(shí)符來唯一標(biāo)識(shí)特定的分區(qū)。
總的來說,使用設(shè)備路徑或UUID進(jìn)行掛載都是可行的方法,具體取決于您的需求和使用場景。如果您的系統(tǒng)中沒有頻繁插拔設(shè)備并且不涉及自動(dòng)化操作,使用設(shè)備路徑可能更加簡單和直接。而如果您需要更穩(wěn)定和持久的掛載方式,以及更適合自動(dòng)化操作,使用UUID則更為可靠和推薦。
今天的內(nèi)容到此就完了,感謝大家的收看,如有不正之處,歡迎批評指正,下期再見!