LJason

LJason

野生程序猴子
twitter
github
nintendo switch
steam
bilibili
email

Linux 的黑科技 —— LVM

前幾天我用樹莓派下載 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 都沒裝):

00

對於用戶來說,是裝了多個物理硬體,如 U 盤、內存卡等;但對 Linux 來說,卻只有一個分區。

還是以我下載 Android 原始碼作為場景,方便大家理解。

我想下載 Android 6.0 的原始碼,由於一個 32G 的 U 盤不夠大,所以用 LVM 來把一個 32G 的 U 盤和一個 16G 的內存卡合併成一個分區(需要格式化,請先備份好)。

前期準備#

使用 fdisk -l 命令查看磁碟:

01

可以看到實際容量為 30G U 盤和 14.6G 的內存卡。然後就開始合併了,首先安裝 LVM :

apt-get install lvm2

由於兩個都是 NTFS 格式的,所以需要格式化成 LVM 格式。先選擇內存卡(不帶 “1”):

fdisk /dev/sda

p 查看分區:

02

可以看到只有一個分區,接著 d 選擇刪除的分區(因為只有一個分區所以會直接刪除沒有選項):

03

接著 n 新建分區,全部直接回車默認即可:

04

再次 p 查看分區:

05

可以看到類型已經變成 Linux 了,但是使用 LVM 還需要把 Id 變成 8e ,t 更改分區類型:

06

因為只有一個分區,所以會直接選擇分區 1,輸入分區類型 8e 即可,再次 p 查看:

07

可以看見 Id 變成了 8e,類型也變成了 Linux LVM。最後 w 寫入更改即可:

08

剩下還有一個分區就自己做了,操作都是一樣的。做好後 fdisk -l 查看分區:

09

當兩個分區類型都變成 Linux LVM 後就能正式開始做 LVM 了。

創建物理磁碟#

首先創建物理磁碟,命令是 pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1 ......。可以創建一個或者多個,在這裡是:

pvcreate /dev/sda1 /dev/sdb1

10

創建成功了,可以用 pvs 查看物理磁碟:

11

創建卷組#

創建卷組的命令是:

vgcreate VolGroup /dev/sda1 /dev/sdb1

創建完之後使用 vgs 查看:

12

可以看到,卷組的大小是 44.56g,也就是 U 盤和內存卡的總和。使用 vgdisplay VolGroup 可查看新創建的卷組 VolGroup 的詳情:

13

創建邏輯卷#

在 VolGroup 的詳情中我們可以看見 Total PE 為 11408,也就是可分配的大小為:4M * 11408 = 45632M = 44.5625G

我們使用全部 11408 個 PE 來創建一個名為 storage 的邏輯卷:

lvcreate -l 11408 -n storage VolGroup

然後用 lvs 查看:

14

使用 ext4 文件系統來創建卷,然後掛載到 /mnt/storage(記得要先執行 mkdir /mnt/storage 創建 /mnt/storage 文件夾,我之前先創建過了),最後使用 df -h查看分區:

mkfs.ext4 /dev/VolGroup/storage
mount /dev/VolGroup/storage /mnt/storage

15

開機掛載#

在 /etc/fstab 中添加一行:

/dev/mapper/VolGroup-storage /mnt/storage ext4 defaults 0 0

然後重啟看看有沒有自動掛載。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。