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