前幾天我用樹莓派下載 Android 6.0 的原始碼,本來是掛載了一個 32G 的 U 盤和一張 16G 的內存卡,網上說 Android 4.4 原始碼有 20 多 G,我想 6.0 的 32G 應該夠了。
可誰知道 32G(實際只有 30G )全部都填滿了,還提示硬盤空間不足。
可惜我那 3T 的移動硬盤用在樹莓派上電壓不夠掛載不上去,手頭沒有比 32G 更大的存儲了,我就想 U 盤能不能擴容(注意!擴容有害!)。
後來找來找去就看到了 LVM(LVM 不是擴容)。
邏輯卷管理器(Logical Volume Manager,縮寫 LVM,又譯為邏輯卷宗管理器、邏輯扇區管理器、邏輯磁碟管理器),是 Linux 核心所提供的邏輯卷管理(Logical volume management)功能。它在硬碟的硬碟分區之上,又創建一個邏輯層,以方便系統管理硬碟分區系統。—— 維基百科:邏輯卷管理器
概念可能難以理解,下面我畫了張圖(才發現重裝系統之後 PS 都沒裝):
對於用戶來說,是裝了多個物理硬體,如 U 盤、內存卡等;但對 Linux 來說,卻只有一個分區。
還是以我下載 Android 原始碼作為場景,方便大家理解。
我想下載 Android 6.0 的原始碼,由於一個 32G 的 U 盤不夠大,所以用 LVM 來把一個 32G 的 U 盤和一個 16G 的內存卡合併成一個分區(需要格式化,請先備份好)。
前期準備#
使用 fdisk -l
命令查看磁碟:
可以看到實際容量為 30G U 盤和 14.6G 的內存卡。然後就開始合併了,首先安裝 LVM :
apt-get install lvm2
由於兩個都是 NTFS 格式的,所以需要格式化成 LVM 格式。先選擇內存卡(不帶 “1”):
fdisk /dev/sda
先 p
查看分區:
可以看到只有一個分區,接著 d
選擇刪除的分區(因為只有一個分區所以會直接刪除沒有選項):
接著 n
新建分區,全部直接回車默認即可:
再次 p
查看分區:
可以看到類型已經變成 Linux 了,但是使用 LVM 還需要把 Id 變成 8e ,t
更改分區類型:
因為只有一個分區,所以會直接選擇分區 1,輸入分區類型 8e
即可,再次 p
查看:
可以看見 Id 變成了 8e,類型也變成了 Linux LVM。最後 w
寫入更改即可:
剩下還有一個分區就自己做了,操作都是一樣的。做好後 fdisk -l
查看分區:
當兩個分區類型都變成 Linux LVM 後就能正式開始做 LVM 了。
創建物理磁碟#
首先創建物理磁碟,命令是 pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1 ......
。可以創建一個或者多個,在這裡是:
pvcreate /dev/sda1 /dev/sdb1
創建成功了,可以用 pvs
查看物理磁碟:
創建卷組#
創建卷組的命令是:
vgcreate VolGroup /dev/sda1 /dev/sdb1
創建完之後使用 vgs
查看:
可以看到,卷組的大小是 44.56g,也就是 U 盤和內存卡的總和。使用 vgdisplay VolGroup
可查看新創建的卷組 VolGroup 的詳情:
創建邏輯卷#
在 VolGroup 的詳情中我們可以看見 Total PE 為 11408,也就是可分配的大小為:4M * 11408 = 45632M = 44.5625G
我們使用全部 11408 個 PE 來創建一個名為 storage 的邏輯卷:
lvcreate -l 11408 -n storage VolGroup
然後用 lvs
查看:
使用 ext4 文件系統來創建卷,然後掛載到 /mnt/storage(記得要先執行 mkdir /mnt/storage
創建 /mnt/storage 文件夾,我之前先創建過了),最後使用 df -h
查看分區:
mkfs.ext4 /dev/VolGroup/storage
mount /dev/VolGroup/storage /mnt/storage
開機掛載#
在 /etc/fstab 中添加一行:
/dev/mapper/VolGroup-storage /mnt/storage ext4 defaults 0 0
然後重啟看看有沒有自動掛載。