mkfs是“make file system”的縮寫。該命令通常用于在Linux系統(tǒng)服務(wù)器中管理存儲設(shè)備。您可以將mkfs視為用于將磁盤格式化為特定文件系統(tǒng)的命令行工具。
mkfs -t [fs type] [target device]
您還可以按以下方式使用mkfs命令。
mkfs.[fs type] [target device]
在本教程中,我將大體討論什么是文件系統(tǒng)。我還將提供有效使用mkfs命令的示例。
由于mkfs命令處理磁盤和分區(qū),因此它要求您是root用戶或sudo用戶,具有運(yùn)行admin命令的訪問權(quán)限。
注意:mkfs是功能強(qiáng)大的工具。重要的是要了解更改文件系統(tǒng)的潛在后果。選擇錯誤的設(shè)備節(jié)點(diǎn)將刪除該設(shè)備上的所有數(shù)據(jù)。使用此命令需要您自擔(dān)風(fēng)險。
1、什么是文件系統(tǒng)?
文件系統(tǒng)(fs)是指管理設(shè)備上數(shù)據(jù)的結(jié)構(gòu)和邏輯。文件系統(tǒng)控制數(shù)據(jù)的存儲和檢索方式。
文件系統(tǒng)有很多類型,每種都有各自的優(yōu)缺點(diǎn)。這是最常見的文件系統(tǒng)類型:
FAT*
NTFS
ext*
APFS
HFS*
您可能之前曾經(jīng)遇到過一種或多種這些文件系統(tǒng)類型。您甚至可以將類型與各自的操作系統(tǒng)關(guān)聯(lián)。
一般而言,F(xiàn)AT / NTFS是為Windows設(shè)計(jì)的,Ext是與Linux系統(tǒng)一起使用的,而APFS / HFS是macos文件系統(tǒng)。這些中的每一個都以不同的方式處理文件結(jié)構(gòu)的邏輯,這可能導(dǎo)致問題。
這就是為什么在聲明文件系統(tǒng)類型或“格式化”設(shè)備之前考慮這一點(diǎn)至關(guān)重要的原因。每個用例都是不同的,由您決定哪種文件系統(tǒng)最適合您的需求。
2、mkfs命令示例
讓我向您展示mkfs命令的一些最常見用法。
請不要在您的實(shí)際系統(tǒng)上盲目嘗試任何這些命令。它將格式化目標(biāo)設(shè)備/磁盤分區(qū),擦除所有數(shù)據(jù)。
3、不帶任何選項(xiàng)的mkfs創(chuàng)建ext2文件系統(tǒng)
如果您沒有為目標(biāo)設(shè)備指定文件系統(tǒng)類型,它將使用默認(rèn)的ext2文件系統(tǒng)。
sudo mkfs /dev/sdb1
4、用mkfs指定文件類型
使用ext2并不是很方便或不可取。如今,大多數(shù)Linux系統(tǒng)建議使用ext4。您可以通過以下方式指定文件系統(tǒng):
sudo mkfs -t ext4 /dev/sdb1
您也可以像這樣使用它:
sudo mkfs.ext4 /dev/sdb1
5、檢查設(shè)備上的壞塊
您還可以檢查設(shè)備上的壞塊,但請記住,檢查通常需要很長時間。
sudo mkfs -c /dev/sdb1
6、檢查設(shè)備的文件系統(tǒng)類型
您可能要檢查剛剛使用mkfs命令格式化的設(shè)備的文件系統(tǒng)類型。您可以將file命令用于此目的。
sudo file -sL /device
這是一個示例,顯示了它可以顯示什么樣的輸出:
Linux@handbook:~$ sudo file -s /dev/nvme0n1p2
/dev/nvme0n1p2: Linux rev 1.0 ext4 filesystem data, UuiD=34daa4b7-a2c4-4983-b5cc-df9baa6a6543 (extents) (64bit) (large files) (huge files)
7、現(xiàn)實(shí)生活中的用例:使用mkfs命令在USB設(shè)備上創(chuàng)建文件系統(tǒng)
現(xiàn)在您已經(jīng)有了一些背景信息,您可以開始使用mkfs。
我能想到的最實(shí)用的演示是格式化USB閃存驅(qū)動器。這些相同的原理將適用于您選擇的任何類型的存儲。
8、查找您的設(shè)備
首先,您需要找到您的設(shè)備。您可以使用的一種方法是sudo fdisk -l。這將列出當(dāng)前已安裝的所有磁盤節(jié)點(diǎn)。
您的輸出顯然會有所不同。在確定所需的驅(qū)動器時,請格外小心。如果不確定,請卸載磁盤,然后fdisk -l再次運(yùn)行命令。如果您擁有正確的設(shè)備,則斷開連接時不會列出該設(shè)備。
9、驗(yàn)證分區(qū)
我使用的設(shè)備是Patriot Memory USB,位于/dev/sdb。除了識別正確的磁盤外,您還需要確保更改了所需分區(qū)的fs。
我使用fdisk工具刪除現(xiàn)有數(shù)據(jù)并編寫新的分區(qū)表。在執(zhí)行此操作時,我創(chuàng)建了一個要寫入的新分區(qū)。該分區(qū)將成為我們的目標(biāo):/dev/sdb1。
10、卸載
在嘗試更改文件系統(tǒng)之前,需要使用以下umount命令將其卸載。
christopher@Linux-handbook:~$ sudo umount /dev/sdb1
11、創(chuàng)建文件系統(tǒng)
既然已經(jīng)驗(yàn)證了目標(biāo)并卸載了驅(qū)動器,則可以繼續(xù)創(chuàng)建文件系統(tǒng)。
我在-v此處添加了詳細(xì)選項(xiàng),以在運(yùn)行時顯示更多信息。
該過程可能需要一些時間,但除非目標(biāo)大于2 TB,否則應(yīng)在20分鐘內(nèi)完成。
我在最后一個項(xiàng)目上掛了幾個程序問題。不幸的是,沒有進(jìn)度指示器,也沒有拋出任何錯誤。
12、驗(yàn)證新創(chuàng)建的文件系統(tǒng)
首先,檢查您剛剛使用的設(shè)備的文件系統(tǒng)。是您想要的那個嗎?
sudo file -sL /dev/sdb1
重要的是,要確保將在使用該設(shè)備的系統(tǒng)上識別該設(shè)備。我創(chuàng)建了一個名為test的文件夾,并在其中創(chuàng)建了一個名為test.txt的文件。
為了節(jié)省時間,您可以在此處復(fù)制并粘貼我的命令。
mkdir test && cd test
touch test.txt
echo “THIS IS ONLY A TEST” > test.txt
cat test.txt
如果一切正常,則應(yīng)該能夠?qū)Ⅱ?qū)動器安裝到所需的系統(tǒng)并訪問文件。如果無法訪問系統(tǒng)上的文件,則可能存在兼容性問題。