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