歡迎您光臨本站 註冊首頁

在Linux中使用動態磁碟

←手機掃碼閱讀     火星人 @ 2014-03-23 , reply:0

原作者:charlee
是否遇到過這樣的問題,劃分了 10G 的一個分區,掛接到 /home 下,可是隨著時間的流逝,10G 的空間開始不夠用了,需要把它擴充。假設要擴充到 12G,那麼唯一的方法就是建立一個 12G 的新分區,然後將原來的 10G 分區中的數據全部移動到新分區中,再修改掛接配置。這樣不僅麻煩而且浪費時間。

Linux 2.4 開始支持 LVM(Logical Volume Manager,邏輯卷管理器),通過 LVM,可以動態地改變「分區」(準確地說應當稱之為卷)的大小,而不必擔心數據移動的問題。LVM 的原理是,首先在硬碟上創建 PV(Physical Volume: 物理卷)。PV 可以創建在一個分區上,也可以創建在整個硬碟上,它由許多的 PE(Physical Extent)組成,每個 PE 的默認值為 4MB。之後將數個 PV 合在一起組成一個 VG(Volume Group: 卷組)。最後在 VG 中創建 LV(Logical Volume: 邏輯卷),它也由許多的 LE(Logical Extent)組成,LE 的大小與 PE 相同,並與 PE 一一對應。LV 就可以像普通的分區一樣掛接在任何地方了。

下面我們總結一下這裡出現的辭彙:

LVM (Logical Volume Manager,邏輯卷管理器):Linux 中用於管理邏輯卷的功能。
PV(Physical Volume,物理卷):數據實際保存的位置,由許多 PE 組成。
VG(Volume Group,卷組):多個 PV 組合在一起。
LV(Logical Volume,邏輯卷):LVM 創建的虛擬卷,由許多 LE 組成,可以像普通分區一樣進行掛接,可以動態修改大小。
PE(Physical Extent):LVM 管理的最小單位,默認為 4MB。
LE(Logical Extent):大小與 PE 相同,並與 PE 一一對應。
製作 LVM
下面我們嘗試在 Linux 下使用 LVM 來管理分區。以下操作使用的系統為 Fedora Core 3。

1. 首先用 fdisk 創建兩個分區 /dev/hda7 和 /dev/hda8,選擇分區大小為 1G。結果如下:
QUOTE:
Device Boot Start End Blocks Id System
/dev/hdb1 1 2117 1000251 83 Linux
/dev/hdb2 2118 4234 1000282+ 83 Linux

2. 使用 pvcreate 命令將分區建立為 PV。
QUOTE:
# pvcreate /dev/hdb1
Physical volume "/dev/hdb1" successfully created
# pvcreate /dev/hdb2
Physical volume "/dev/hdb2" successfully created

3. 使用 vgcreate 命令將新建的兩個 PV 組合成 VG。
QUOTE:
# vgcreate newvg /dev/hdb1 /dev/hdb2
Volume group "newvg" successfully created

之後我們可以發現在 /dev 目錄下多了一個名為 newvg 的目錄,這就是我們建立的 VG。

4. 使用 lvcreate 命令在 newvg 中建立一個 LV,名為 lv01,大小為 256M。
QUOTE:
# lvcreate -L 256M -n lv01 newvg
Logical volume "lv01" created

可以發現在 /dev/newvg 下多了一個名為 lv01 的符號鏈接,這就是 LV。

5. 在 lv01 上建立文件系統。

# mke2fs /dev/newvg/lv01

6. 掛接該文件系統。

# mount -t ext2 /dev/newvg/lv01 /root/lv

至此一個 LV 已經建立完畢。我們可以試著增大該 LV 的容量。使用 lvextend 命令將剛剛建立的 LV 增大 128M。擴大容量之後需要使用 resize2fs 命令來擴大原有的文件系統到新的容量。
QUOTE:
# lvextend -L+128M /dev/newvg/lv01
Extending logical volume lv01 to 384.00 MB
Logical volume lv01 successfully resized

# umount /dev/newvg/lv01

# e2fsck -f /dev/newvg/lv01
e2fsck 1.36 (05-Feb-2005)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/newvg/lv01: 12/65536 files (8.3% non-contiguous), 10336/262144 blocks

# resize2fs /dev/newvg/lv01
resize2fs 1.36 (05-Feb-2005)
Resizing the filesystem on /dev/newvg/lv01 to 393216 (1k) blocks.
The filesystem on /dev/newvg/lv01 is now 393216 blocks long.

# mount -t ext2 /dev/newvg/lv01 /root/lv

之後馬上就可以利用 df -h 命令看到文件系統的容量改變了。

我們也可以利用 vgdisplay 命令來查看 VG 的信息。
QUOTE:
# vgdisplay newvg
--- Volume group ---
VG Name newvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.91 GB
PE Size 4.00 MB
Total PE 488
Alloc PE / Size 96 / 384.00 MB
Free PE / Size 392 / 1.53 GB
VG UUID YAlPwY-Vlfa-ZBa7-4jPQ-60Gk-Fzwi-jUW8BM


[火星人 ] 在Linux中使用動態磁碟已經有540次圍觀

http://coctec.com/docs/linux/show-post-116123.html