如何在 Linux 上對驅動器進行分區和格式化
在大多數的計算機系統上,Linux 或者是其它,當你插入一個 USB 設備時,你會注意到一個提示驅動器存在的警告。如果該驅動器已經按你想要的進行分區和格式化,你只需要你的計算機在文件管理器或桌面上的某個地方列出驅動器。這是一個簡單的要求,而且通常計算機都能滿足。
然而,有時候,驅動器並沒有按你想要的方式進行格式化。對於這些,你必須知道如何查找準備連接到您計算機上的存儲設備。
什麼是塊設備?
硬碟驅動器通常被稱為「塊設備」,因為硬碟驅動器以固定大小的塊進行讀寫。這就可以區分硬碟驅動器和其它可能插入到您計算機的一些設備,如印表機、遊戲手柄、麥克風,或相機。一個簡單的方法用來列出連接到你 Linux 系統上的塊設備就是使用 lsblk
(list block devices)命令:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─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 分區管理器](/data/attachment/album/201812/02/101248fhfrcro1z3nxjpko.jpg "KDE Partition Manager")
KDE 分區管理器
可以預見的是,GNOME 版本會比 KDE 版本更加簡單,因此,我將使用複雜的版本進行演示——如果你願意動手的話,很容易弄清楚 GNOME 磁碟工具的使用。
啟動 KDE 分區管理工具,然後輸入你的 root 密碼。
在最左邊的一列,選擇你想要格式化的驅動器。如果你的驅動器並沒有列出來,確認下是否已經插好,然後選擇 「Tools > Refresh devices」 (或使用鍵盤上的 F5 鍵)。
除非你想銷毀驅動器已經存在的分區表,否則請勿繼續。選擇好驅動器後,單擊頂部工具欄中的 「New Partition Table」 。系統會提示你為該分區選擇一種卷標:gpt 或 msdos 。前者更加靈活可以處理更大的驅動器,而後者像很多微軟的技術一樣,是佔據大量市場份額的事實上的標準。
現在您有了一個新的分區表,在右側的面板中右鍵單擊你的設備,然後選擇 「New」 來創建新的分區,按照提示設置分區的類型和大小。此操作包括了分區步驟和創建文件系統。
![創建一個新分區](/data/attachment/album/201812/02/101249h9h4ks2kc7hjsj9p.jpg "Create a new partition")
創建一個新分區
要將更改應用於你的驅動器,單擊窗口左上角的 「Apply」 按鈕。
硬碟驅動器,輕鬆驅動
在 Linux 上處理硬碟驅動器很容易,甚至如果你理解硬碟驅動器的語言就更容易了。自從切換到 Linux 系統以來,我已經能夠以任何我想要的方式來處理我的硬碟驅動器了。由於 Linux 在處理存儲提供的透明性,因此恢複數據也變得更加容易了。
如果你想實驗並了解有關硬碟驅動器的更多的信息,請參考下面的幾個提示:
- 備份您的數據,而不僅僅是你在實驗的驅動器上。僅僅需要一個小小的錯誤操作來破壞一個重要驅動器的分區。(這是一個用來學習重建丟失分區的很好的方法,但並不是很有趣)。
- 反覆確認你所定位的驅動器是正確的驅動器。我經常使用
lsblk
來確定我並沒有移動驅動器。(因為從兩個獨立的 USB 埠移除兩個驅動器很容易,然後以不同的順序重新連接它們,就會很容易導致它們獲得了新的驅動器標籤。) - 花點時間「銷毀」你測試的驅動器,看看你是否可以把數據恢復。在刪除文件系統後,重新創建分區表或嘗試恢複數據是一個很好的學習體驗。
還有一些更好玩的東西,如果你身邊有一個封閉的操作系統,在上面嘗試使用一個開源的文件系統。有一些項目致力於解決這種兼容性,並且嘗試讓它們以一種可靠穩定的方式工作是一個很好的業餘項目。
via: https://opensource.com/article/18/11/partition-format-drive-linux
作者:Seth Kenlon 選題:lujun9972 譯者:Jamskr 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive