這幾天讀到TLCL-Storage Media一節,不由的想要折騰一下U盤,一直以來U盤只是被拿來暫存數據,其內部有沒有文件系統,數據怎么管理,那是從來也不清楚,本文就依葫蘆畫瓢,折騰下手中的Kingston U盤
注:本文非教程,僅學以致樂。
初探
先看看U盤接受windows格式化以后的樣子,這應該是我們對付U盤最常用的一招:一言不合,格之。
不同於Ubuntu/Win等桌面發行版本,服務器型(非圖形化的系統?)的linux系統通常不主動掛載U盤,因此當U盤插入樹莓派后,命令行是不會有任何提示的,那我們如何知道U盤是否被系統所識別呢?
那就只能查看系統日志信息了,當有硬件設備被系統識別時,是會在日志中留下痕跡的,兩種查看方式:
直接翻看最末尾的日志緩存
使用日志命令查看最后輸出的信息
可以看到,系統識別出來了Kingston U盤,並識別為文件sda,該文件內只有一個磁盤分區為sda1.
除了查看日志以外,由於插入的是USB設備,還可以使用lsusb/lsblk來查看設備信息,U盤拔插前后,會發現是新增的blk,對應的就是Kingston U盤。
圖中的sda只是系統識別到的一個設備文件,但並沒有掛載在系統的目錄樹中,默認不可訪問,我們可以使用fdisk來詳細的查看sda的文件信息。
采用dos分區表,即MBR,文件系統為fat32,單個分區,最小扇區為512字節。
創建分區
初始化分區表
進行分區的前提是磁盤已經有了分區表,考慮到MBR已經是非常古老的分區表,此處嘗試在U盤上使用新的GPT分區表:
在gdisk命令模式下,輸入o指令,刪除磁盤上的所有分區,並將U盤默認的msdos分區表改為gpt分區表,此時再輸入p指令,磁盤中已沒有分區信息。
注:圖中有行提示信息:
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y
有的舊MBR工具無法識別新的GPT分區表,為防止被當作未分區盤,在磁盤前面創建受保護的MBR以跳過MBR工具的誤識別。
創建子分區
此處依葫蘆畫瓢,參照《鳥哥的linux私房菜》第七章,創建三個子分區,類型分別為 8300 Linux filesystem/0700 Microsoft basic data/8200 Linux swap.
創建第一個分區:
因為磁盤無任何分區,第一次創建,默認為分區1,起始扇區號選擇默認,終止扇區選擇5G空間的地址扇區,類型默認為linux文件系統。
繼續創建第二個分區:
此時默認為分區2,起始扇區號選擇默認(即分區1后的第一個扇區),終止扇區選擇9G空間的地址扇區,類型通過L指令查詢后,選擇為Windows文件系統。
最后創建第三個分區:
創建完成后,U盤此時的分區表現如下:
除了形態上為一個U盤,磁盤分區划分是不是很像電腦內置磁盤。
最后,別忘了輸入w保存設置。
再使用lsblk查看下我們的磁盤的新划分情況
此時磁盤的三個分區已經被系統檢測到,但是默認依然未掛載,所以第四列的MOUNTPOINT為空。
創建文件系統
寫在前面:創建文件系統時,我曾試過在分區1創建vfat文件系統,且依然能夠被系統正常識別,因此納悶:創建分區時需要輸入分區類型,而在分區上創建文件系統時,也需要指定文件系統類型,這兩者有啥關聯影響?
截取一段網友的回復,個人認為解釋的比較合理。
為分區1創建xfs文件系統
當前使用的raspberry 系統默認不支持創建xfs類型,需先安裝xfs工具 sudo apt install xfsprogs
為分區2創建vfat文件系統
為分區3創建swap分區
創建swap分區就得用mkswap命令來創建了。
掛載U盤分區
分區創建好,文件系統創建好,接下來就需要將分區掛載在系統目錄上了,這樣才能對磁盤進行數據訪問。
文件系統掛載
先創建兩個空文件夾,然后使用mount命令掛載,最后使用df(device free)命令查看掛載的設備信息詳情。
此時我們就可以對分區進行數據讀取操作了,在應用層看來,flash/u1 flash/u2只是兩個普通文件夾,並不需要關心其背后關聯的是U盤的兩個分區。
swap分區掛載
swap分區還是特立獨行,使用獨有的命令進行操作。
小測試-比較分區數據的傳輸速率
本測試使用強大的dd命令,大致測試手段為:拷貝一個256MB的文件到分區中,比較兩個不同文件系統分區的傳輸速率。
初略來看,使用mkfs的默認配置創建的兩個分區中,xfs在此kingston U盤上的表現要優於vfat。