這里有所有你想知道的關(guān)于設(shè)置存儲(chǔ)器而又不敢問的一切。?
在大多數(shù)的計(jì)算機(jī)系統(tǒng)上,Linux 或者是其它,當(dāng)你插入一個(gè) USB 設(shè)備時(shí),你會(huì)注意到一個(gè)提示驅(qū)動(dòng)器存在的警告。如果該驅(qū)動(dòng)器已經(jīng)按你想要的進(jìn)行分區(qū)和格式化,你只需要你的計(jì)算機(jī)在文件管理器或桌面上的某個(gè)地方列出驅(qū)動(dòng)器。這是一個(gè)簡(jiǎn)單的要求,而且通常計(jì)算機(jī)都能滿足。
然而,有時(shí)候,驅(qū)動(dòng)器并沒有按你想要的方式進(jìn)行格式化。對(duì)于這些,你必須知道如何查找準(zhǔn)備連接到您計(jì)算機(jī)上的存儲(chǔ)設(shè)備。
什么是塊設(shè)備?
硬盤驅(qū)動(dòng)器通常被稱為“塊設(shè)備”,因?yàn)橛脖P驅(qū)動(dòng)器以固定大小的塊進(jìn)行讀寫。這就可以區(qū)分硬盤驅(qū)動(dòng)器和其它可能插入到您計(jì)算機(jī)的一些設(shè)備,如打印機(jī)、游戲手柄、麥克風(fēng),或相機(jī)。一個(gè)簡(jiǎn)單的方法用來(lái)列出連接到你 Linux 系統(tǒng)上的塊設(shè)備就是使用?lsblk(list block devices)命令:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
├─sda1?8:1?0?1G?0?part?/boot
└─sda2?8:2?0?237.5G?0?part
└─luks-e2bb...e9f8?253:0?0?237.5G?0?crypt
├─fedora-root?253:1?0?50G?0?lvm?/
├─fedora-swap?253:2?0?5.8G?0?lvm?[SWAP]
└─fedora-home?253:3?0?181.7G?0?lvm?/home
sdb?8:16?1?14.6G?0?disk
└─sdb1?8:17?1?14.6G?0?part
最左列是設(shè)備標(biāo)識(shí)符,每個(gè)都是以?sd?開頭,并以一個(gè)字母結(jié)尾,字母從?a?開始。每個(gè)塊設(shè)備上的分區(qū)分配一個(gè)數(shù)字,從?1?開始。例如,第一個(gè)設(shè)備上的第二個(gè)分區(qū)用?sda2?表示。如果你不確定到底是哪個(gè)分區(qū),那也不要緊,只需接著往下讀。
lsblk?命令是無(wú)損的,僅僅用于檢測(cè),所以你可以放心的使用而不用擔(dān)心破壞你驅(qū)動(dòng)器上的數(shù)據(jù)。
使用 dmesg 進(jìn)行測(cè)試
如果你有疑問,你可以通過在?dmesg?命令的最后幾行查看驅(qū)動(dòng)器的卷標(biāo),這個(gè)命令顯示了操作系統(tǒng)最近的日志(比如說(shuō)插入或移除一個(gè)驅(qū)動(dòng)器)。一句話,如果你想確認(rèn)你插入的設(shè)備是不是?/dev/sdc?,那么,把設(shè)備插到你的計(jì)算機(jī)上,然后運(yùn)行這個(gè)?dmesg?命令:
$?sudo?dmesg?|?tail
顯示中列出的最新的驅(qū)動(dòng)器就是你剛剛插入的那個(gè)。如果你拔掉它,并再運(yùn)行這個(gè)命令一次,你可以看到,這個(gè)設(shè)備已經(jīng)被移除。如果你再插上它再運(yùn)行命令,這個(gè)設(shè)備又會(huì)出現(xiàn)在那里。換句話說(shuō),你可以監(jiān)控內(nèi)核對(duì)驅(qū)動(dòng)器的識(shí)別。
理解文件系統(tǒng)
如果你只需要設(shè)備卷標(biāo),那么你的工作就完成了。但是如果你的目的是想創(chuàng)建一個(gè)可用的驅(qū)動(dòng)器,那你還必須給這個(gè)驅(qū)動(dòng)器做一個(gè)文件系統(tǒng)。
如果你還不知道什么是文件系統(tǒng),那么通過了解當(dāng)沒有文件系統(tǒng)時(shí)會(huì)發(fā)生什么可能會(huì)更容易理解這個(gè)概念。如果你有多余的設(shè)備驅(qū)動(dòng)器,并且上面沒有什么重要的數(shù)據(jù)資料,你可以跟著做一下下面的這個(gè)實(shí)驗(yàn)。否則,請(qǐng)不要嘗試,因?yàn)楦鶕?jù)其設(shè)計(jì)目的,這個(gè)肯定會(huì)刪除您的資料。
當(dāng)一個(gè)驅(qū)動(dòng)器沒有文件系統(tǒng)時(shí)也是可以使用的。一旦你已經(jīng)肯定,正確識(shí)別了一個(gè)驅(qū)動(dòng)器,并且已經(jīng)確定上面沒有任何重要的資料,那就可以把它插到你的計(jì)算機(jī)上 —— 但是不要掛載它,如果它被自動(dòng)掛載上了,那就請(qǐng)手動(dòng)卸載掉它。
$?su?-
#?umount?/dev/sdx{,1}
為了防止災(zāi)難性的復(fù)制 —— 粘貼錯(cuò)誤,下面的例子將使用不太可能出現(xiàn)的?sdx?來(lái)作為驅(qū)動(dòng)器的卷標(biāo)。
現(xiàn)在,這個(gè)驅(qū)動(dòng)器已經(jīng)被卸載了,嘗試使用下面的命令:
#?echo?'hello world'?>?/dev/sdx
你已經(jīng)可以將數(shù)據(jù)寫入到塊設(shè)備中,而無(wú)需將其掛載到你的操作系統(tǒng)上,也不需要一個(gè)文件系統(tǒng)。
再把剛寫入的數(shù)據(jù)取出來(lái),你可以看到驅(qū)動(dòng)器上的原始數(shù)據(jù):
#?head?-n?1?/dev/sdx
hello world
這看起來(lái)工作得很好,但是想象一下如果 “hello world” 這個(gè)短語(yǔ)是一個(gè)文件,如果你想要用這種方法寫入一個(gè)新的文件,則必須:
知道第 1 行已經(jīng)存在一個(gè)文件了
知道已經(jīng)存在的文件只占用了 1 行
創(chuàng)建一種新的方法來(lái)在后面添加數(shù)據(jù),或者在寫第 2 行的時(shí)候重寫第 1 行
例如:
#?echo?'hello world
> this is a second file'?>>?/dev/sdx
獲取第 1 個(gè)文件,沒有任何改變。
#?head?-n?1?/dev/sdx
hello world
但是,獲取第 2 個(gè)文件的時(shí)候就顯得有點(diǎn)復(fù)雜了。
#?head?-n?2?/dev/sdx?|?tail?-n?1
this?is?a second?file
顯然,通過這種方式讀寫數(shù)據(jù)并不實(shí)用,因此,開發(fā)人員創(chuàng)建了一個(gè)系統(tǒng)來(lái)跟蹤文件的組成,并標(biāo)識(shí)一個(gè)文件的開始和結(jié)束,等等。
大多數(shù)的文件系統(tǒng)都需要一個(gè)分區(qū)。
創(chuàng)建分區(qū)
分區(qū)是硬盤驅(qū)動(dòng)器的一種邊界,用來(lái)告訴文件系統(tǒng)它可以占用哪些空間。舉例來(lái)說(shuō),你有一個(gè) 4GB 的 USB 驅(qū)動(dòng)器,你可以只分一個(gè)分區(qū)占用一個(gè)驅(qū)動(dòng)器(4GB),或兩個(gè)分區(qū),每個(gè) 2GB (又或者是一個(gè) 1GB,一個(gè) 3GB,只要你愿意),或者三個(gè)不同的尺寸大小,等等。這種組合將是無(wú)窮無(wú)盡的。
假設(shè)你的驅(qū)動(dòng)器是 4GB,你可以使用 GNU?parted?命令來(lái)創(chuàng)建一個(gè)大的分區(qū)。
#?parted?/dev/sdx?--align opt mklabel msdos?0?4G
按?parted?命令的要求,首先指定了驅(qū)動(dòng)器的路徑。
--align?選項(xiàng)讓?parted?命令自動(dòng)選擇一個(gè)最佳的開始點(diǎn)和結(jié)束點(diǎn)。
mklabel?命令在驅(qū)動(dòng)器上創(chuàng)建了一個(gè)分區(qū)表(稱為磁盤卷標(biāo))。這個(gè)例子使用了 msdos 磁盤卷標(biāo),因?yàn)樗且粋€(gè)非常兼容和流行的卷標(biāo),雖然 gpt 正變得越來(lái)越普遍。
最后定義了分區(qū)所需的起點(diǎn)和終點(diǎn)。因?yàn)槭褂昧?--align opt?標(biāo)志,所以?parted?將根據(jù)需要調(diào)整大小以優(yōu)化驅(qū)動(dòng)器的性能,但這些數(shù)字仍然可以做為參考。
接下來(lái),創(chuàng)建實(shí)際的分區(qū)。如果你開始點(diǎn)和結(jié)束點(diǎn)的選擇并不是最優(yōu)的,?parted?會(huì)向您發(fā)出警告并讓您做出調(diào)整。
#?parted?/dev/sdx?-a opt mkpart primary?0?4G
Warning:?The?resulting partition?is?not?properly aligned?for?best performance:?1s?%?2048s?!=?0s
Ignore/Cancel??C ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
#?parted?/dev/sdx?-a opt mkpart primary?2048s?4G
如果你再次運(yùn)行?lsblk?命令,(你可能必須要拔掉驅(qū)動(dòng)器,并把它再插回去),你就可以看到你的驅(qū)動(dòng)器上現(xiàn)在已經(jīng)有一個(gè)分區(qū)了。
手動(dòng)創(chuàng)建一個(gè)文件系統(tǒng)
我們有很多文件系統(tǒng)可以使用。有些是開源和免費(fèi)的,另外的一些并不是。一些公司拒絕支持開源文件系統(tǒng),所以他們的用戶無(wú)法使用開源的文件系統(tǒng)讀取,而開源的用戶也無(wú)法在不對(duì)其進(jìn)行逆向工程的情況下從封閉的文件系統(tǒng)中讀取。
盡管有這種特殊的情況存在,還是仍然有很多文件系統(tǒng)可以使用,選擇哪個(gè)取決于驅(qū)動(dòng)器的用途。如果你希望你的驅(qū)動(dòng)器兼容多個(gè)系統(tǒng),那么你唯一的選擇是 exFAT 文件系統(tǒng)。然而微軟尚未向任何開源內(nèi)核提交 exFAT 的代碼,因此你可能必須在軟件包管理器中安裝 exFAT 支持,但是 Windows 和 MacOS 都支持 exFAT 文件系統(tǒng)。
一旦你安裝了 exFAT 支持,你可以在驅(qū)動(dòng)器上你創(chuàng)建好的分區(qū)中創(chuàng)建一個(gè) exFAT 文件系統(tǒng)。
#?mkfs.exfat?-n myExFatDrive?/dev/sdx1
現(xiàn)在你的驅(qū)動(dòng)器可由封閉系統(tǒng)和其它開源的系統(tǒng)(尚未經(jīng)過微軟批準(zhǔn))內(nèi)核模塊進(jìn)行讀寫了。
Linux 中常見的文件系統(tǒng)是?ext4。但對(duì)于便攜式的設(shè)備來(lái)說(shuō),這可能是一個(gè)麻煩的文件系統(tǒng),因?yàn)樗A袅擞脩舻臋?quán)限,這些權(quán)限通常因?yàn)橛?jì)算機(jī)而異,但是它通常是一個(gè)可靠而靈活的文件系統(tǒng)。只要你熟悉管理權(quán)限,那 ext4 對(duì)于便攜式的設(shè)備來(lái)說(shuō)就是一個(gè)很棒的文件系統(tǒng)。
#?mkfs.ext4?-L myExt4Drive?/dev/sdx1
拔掉你的驅(qū)動(dòng)器,再把它插回去。對(duì)于 ext4 文件系統(tǒng)的便攜設(shè)備來(lái)說(shuō),使用?sudo?創(chuàng)建一個(gè)目錄,并將該目錄的權(quán)限授予用戶和系統(tǒng)中通用的組。如果你不確定使用哪個(gè)用戶和組,也可以使用?sudo?或?root?來(lái)修改出現(xiàn)問題的設(shè)備的讀寫權(quán)限。
使用桌面工具
很高興知道了在只有一個(gè) Linux shell 的時(shí)候如何操作和處理你的塊設(shè)備,但是,有時(shí)候你僅僅是想讓一個(gè)驅(qū)動(dòng)器可用,而不需要進(jìn)行那么多的檢測(cè)。 GNOME 的 KDE 的開發(fā)者們提供了這樣的一些優(yōu)秀的工具讓這個(gè)過程變得簡(jiǎn)單。
GNOME 磁盤?和?KDE 分區(qū)管理器?是一個(gè)圖形化的工具,為本文到目前為止提到的一切提供了一個(gè)一體化的解決方案。啟動(dòng)其中的任何一個(gè),來(lái)查看所有連接的設(shè)備(在左側(cè)列表中),創(chuàng)建和調(diào)整分區(qū)大小,和創(chuàng)建文件系統(tǒng)。
KDE 分區(qū)管理器
可以預(yù)見的是,GNOME 版本會(huì)比 KDE 版本更加簡(jiǎn)單,因此,我將使用復(fù)雜的版本進(jìn)行演示——如果你愿意動(dòng)手的話,很容易弄清楚 GNOME 磁盤工具的使用。
啟動(dòng) KDE 分區(qū)管理工具,然后輸入你的 root 密碼。
在最左邊的一列,選擇你想要格式化的驅(qū)動(dòng)器。如果你的驅(qū)動(dòng)器并沒有列出來(lái),確認(rèn)下是否已經(jīng)插好,然后選擇 “Tools > Refresh devices”(或使用鍵盤上的 F5 鍵)。
除非你想銷毀驅(qū)動(dòng)器已經(jīng)存在的分區(qū)表,否則請(qǐng)勿繼續(xù)。選擇好驅(qū)動(dòng)器后,單擊頂部工具欄中的 “New Partition Table” 。系統(tǒng)會(huì)提示你為該分區(qū)選擇一種卷標(biāo):gpt 或 msdos 。前者更加靈活可以處理更大的驅(qū)動(dòng)器,而后者像很多微軟的技術(shù)一樣,是占據(jù)大量市場(chǎng)份額的事實(shí)上的標(biāo)準(zhǔn)。
現(xiàn)在您有了一個(gè)新的分區(qū)表,在右側(cè)的面板中右鍵單擊你的設(shè)備,然后選擇 “New” 來(lái)創(chuàng)建新的分區(qū),按照提示設(shè)置分區(qū)的類型和大小。此操作包括了分區(qū)步驟和創(chuàng)建文件系統(tǒng)。
創(chuàng)建一個(gè)新分區(qū)
要將更改應(yīng)用于你的驅(qū)動(dòng)器,單擊窗口左上角的 “Apply” 按鈕。
硬盤驅(qū)動(dòng)器,輕松驅(qū)動(dòng)
在 Linux 上處理硬盤驅(qū)動(dòng)器很容易,甚至如果你理解硬盤驅(qū)動(dòng)器的語(yǔ)言就更容易了。自從切換到 Linux 系統(tǒng)以來(lái),我已經(jīng)能夠以任何我想要的方式來(lái)處理我的硬盤驅(qū)動(dòng)器了。由于 Linux 在處理存儲(chǔ)提供的透明性,因此恢復(fù)數(shù)據(jù)也變得更加容易了。
如果你想實(shí)驗(yàn)并了解有關(guān)硬盤驅(qū)動(dòng)器的更多的信息,請(qǐng)參考下面的幾個(gè)提示:
備份您的數(shù)據(jù),而不僅僅是你在實(shí)驗(yàn)的驅(qū)動(dòng)器上。僅僅需要一個(gè)小小的錯(cuò)誤操作來(lái)破壞一個(gè)重要驅(qū)動(dòng)器的分區(qū)。(這是一個(gè)用來(lái)學(xué)習(xí)重建丟失分區(qū)的很好的方法,但并不是很有趣)。
反復(fù)確認(rèn)你所定位的驅(qū)動(dòng)器是正確的驅(qū)動(dòng)器。我經(jīng)常使用?lsblk?來(lái)確定我并沒有移動(dòng)驅(qū)動(dòng)器。(因?yàn)閺膬蓚€(gè)獨(dú)立的 USB 端口移除兩個(gè)驅(qū)動(dòng)器很容易,然后以不同的順序重新連接它們,就會(huì)很容易導(dǎo)致它們獲得了新的驅(qū)動(dòng)器標(biāo)簽。)
花點(diǎn)時(shí)間“銷毀”你測(cè)試的驅(qū)動(dòng)器,看看你是否可以把數(shù)據(jù)恢復(fù)。在刪除文件系統(tǒng)后,重新創(chuàng)建分區(qū)表或嘗試恢復(fù)數(shù)據(jù)是一個(gè)很好的學(xué)習(xí)體驗(yàn)。
還有一些更好玩的東西,如果你身邊有一個(gè)封閉的操作系統(tǒng),在上面嘗試使用一個(gè)開源的文件系統(tǒng)。有一些項(xiàng)目致力于解決這種兼容性,并且嘗試讓它們以一種可靠穩(wěn)定的方式工作是一個(gè)很好的業(yè)余項(xiàng)目。
?
評(píng)論