A. 關於linux中的磁碟擴容和LVM的疑問
LVM 甚至可以在伺服器不斷電的情況下動態對磁碟進行擴容,再虛擬一塊硬碟後來加入到LVM中
1.添加虛擬硬碟
先關掉虛擬機的電源,然後選擇虛擬機,點右鍵,setting裡面點擊Add後選擇硬碟設備,設置硬碟為1G
2.開啟電源,RHEL5啟動完成後
格式化硬碟,劃出硬碟分區並將格式改為 LVM格式
fdisk -l 查看硬碟分區情況
Disk /dev/hda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 522 4088542+ 8e Linux LVM
Disk /dev/hdb: 4294 MB, 4294967296 bytes
16 heads, 63 sectors/track, 8322 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 1 1985 1000408+ 8e Linux LVM
fdisk /dev/hdb
n
p
2
Command (m for help): n 新建分區
Command action
e extended
p primary partition (1-4) 分區類型為主分區(如果硬碟分區超過4個了,則選擇擴展分區,再新建邏輯分區)
p
Partition number (1-4): 2 第幾個分區
First cylinder (1986-8322, default 1986): 起始磁柱
Using default value 1986 這時選默認
Last cylinder or +size or +sizeM or +sizeK (1986-8322, default 8322): +1024M 這里我們將這個分區設成一G
Command (m for help): p 查看分區情況
Disk /dev/hdb: 4294 MB, 4294967296 bytes
16 heads, 63 sectors/track, 8322 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 1 1985 1000408+ 8e Linux LVM
/dev/hdb2 1986 3970 1000440 83 Linux
Command (m for help): t 更改分區的類型
Partition number (1-4): 2 選擇第二個
Hex code (type L to list codes): 8e 這里磁碟格式為 LINUX LVM ,可以使用L來進行查看
Command (m for help): p 再次查看
Disk /dev/hdb: 4294 MB, 4294967296 bytes
16 heads, 63 sectors/track, 8322 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 1 1985 1000408+ 8e Linux LVM
/dev/hdb2 1986 3970 1000440 8e Linux LVM 可以看到 hdb2已經變成LVM格式了
Command (m for help): w 保存,切記要保存,不然上面分區,格式化的操作都不會執行,等於白做了
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks. 這里提示我們重啟系統後分區表才會改變,其實用下面一個命令即可
partprobe
[root@el5test ~]# fdisk -l
Disk /dev/hda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 522 4088542+ 8e Linux LVM
Disk /dev/hdb: 4294 MB, 4294967296 bytes
16 heads, 63 sectors/track, 8322 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 1 1985 1000408+ 8e Linux LVM
/dev/hdb2 1986 3970 1000440 8e Linux LVM 可以看到hdb2格式化完成了
3.加入到LVM中
[root@el5test ~]# pvdisplay 先看下系統中PV
--- Physical volume ---
PV Name /dev/hda2
VG Name VolGroup00
PV Size 3.90 GB / not usable 24.72 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 124
Free PE 0
Allocated PE 124
PV UUID 0fxOi9-ZeOY-OlQf-QmIO-Gpb4-kaci-24ovGP
--- Physical volume ---
PV Name /dev/hdb1
VG Name VolGroup00
PV Size 976.96 MB / not usable 16.96 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 30
Free PE 5
Allocated PE 25
PV UUID dtNfYJ-31fK-5CxL-9Pxa-pYWb-GcQ5-Vt5011
[root@el5test ~]# pvcreate /dev/hdb2 建立物理卷(PV)
Physical volume "/dev/hdb2" successfully created
[root@el5test ~]# vgextend VolGroup00 /dev/hdb2 把新物理卷加入到卷組中去
/dev/cdrom: open failed: Read-only file system
Attempt to close device '/dev/cdrom' which is not open.
Volume group "VolGroup00" successfully extended 加入成功
[root@el5test ~]# lvextend -L+1G /dev/VolGroup00/LogVol00 把新的空間加到邏輯卷中去
Extending logical volume LogVol00 to 5.03 GB
Logical volume LogVol00 successfully resized
[root@el5test ~]# resize2fs -p /dev/VolGroup00/LogVol00 加上去之後,目前用df -h還看不到新的空間,需要激活
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 1318912 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 1318912 blocks long.
[root@el5test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
4.9G 3.0G 1.7G 65% / 可以看到這個卷動態放大了
/dev/hda1 99M 14M 81M 15% /boot
tmpfs 132M 0 132M 0% /dev/shm
none 132M 104K 132M 1% /var/lib/xenstored
B. linux 關於 lvm 磁碟使用的問題
看你的圖顯示sda2已經在使用,劃分了2個邏輯卷,107.4G的lv_root和12.4G的lv_swap,剩餘空間看不到顯示應該未劃分吧?
終端輸入pvdisplay可查看物理卷/dev/sda2的劃分情況,如果Free PE顯示不為0,則表示有剩餘空間,可以用lvcreate 命令劃分新的邏輯卷(lv)。
其他:vgdisplay可查看lvm 卷組(vg)情況,lvdisplay可以查看邏輯卷(lv)情況
具體命令用法可搜索「lvm管理命令」。
C. CentOS中如何查看分區是否是LVM
1.邏輯分區管理(LVM)是每一個主流Linux發行版都含有的磁碟管理選項。無論是需要設置存儲池,還是只想動態創建分區,那麼LVM就是正在尋找的。2.在Ubuntu中使用:
在使用LVM之前首先得考慮的一件事是要用的磁碟和分區。
如果使用的是一台只有一塊磁碟的Ubuntu筆記本電腦,並且不需要像實時快照這樣的擴展功能,那麼或許不需要LVM。如果想要輕松地擴展或者想要將多塊磁碟組成一個存儲池,那麼LVM或許正是所尋找的。
在Ubuntu中設置LVM:
使用LVM首先要了解沒有簡單方法可以將已有的傳統分區轉換成邏輯卷。可以將數據移到一個使用LVM的新分區下,要使用LVM安裝Ubuntu需要使用另外的安裝CD。
從安裝盤啟動你的電腦,並在磁碟選擇界面選擇整個磁碟並設置LVM。
選擇想用的主磁碟,最典型的是使用最大的磁碟,接著進入下一步。
將改變寫入磁碟所以確保此時選擇的是正確的磁碟接著才寫入設置。
選擇第一個邏輯卷的大小並繼續。
確認的磁碟分區並繼續安裝。
最後一步將GRUB的bootloader寫到磁碟中。重點注意的是GRUB不能作為一個LVM分區因為計算機BIOS不能直接從邏輯卷中讀取數據。Ubuntu將自動創建一個255MB的ext2分區用於bootloder。
安裝完成之後。重啟電腦並如往常一樣進入Ubuntu。使用這種方式安裝之後應該就感受不到LVM和傳統磁碟管理之間的區別了。
D. 什麼是邏輯分區管理 LVM 如何在Ubuntu中使用
1.邏輯分區管理(LVM)是每一個主流Linux發行版都含有的磁碟管理選項。無論是需要設置存儲池,還是只想動態創建分區,那麼LVM就是正在尋找的。
2.在Ubuntu中使用:
在使用LVM之前首先得考慮的一件事是要用的磁碟和分區。
如果使用的是一台只有一塊磁碟的Ubuntu筆記本電腦,並且不需要像實時快照這樣的擴展功能,那麼或許不需要LVM。如果想要輕松地擴展或者想要將多塊磁碟組成一個存儲池,那麼LVM或許正是所尋找的。
在Ubuntu中設置LVM:
使用LVM首先要了解沒有簡單方法可以將已有的傳統分區轉換成邏輯卷。可以將數據移到一個使用LVM的新分區下,要使用LVM安裝Ubuntu需要使用另外的安裝CD。
從安裝盤啟動你的電腦,並在磁碟選擇界面選擇整個磁碟並設置LVM。
選擇想用的主磁碟,最典型的是使用最大的磁碟,接著進入下一步。
將改變寫入磁碟所以確保此時選擇的是正確的磁碟接著才寫入設置。
選擇第一個邏輯卷的大小並繼續。
確認的磁碟分區並繼續安裝。
最後一步將GRUB的bootloader寫到磁碟中。重點注意的是GRUB不能作為一個LVM分區因為計算機BIOS不能直接從邏輯卷中讀取數據。Ubuntu將自動創建一個255MB的ext2分區用於bootloder。
安裝完成之後。重啟電腦並如往常一樣進入Ubuntu。使用這種方式安裝之後應該就感受不到LVM和傳統磁碟管理之間的區別了。
E. 如何使用LVM卷管理Linux系統中的磁碟
LVM邏輯卷管理器是對Linux系統中對存儲資源進行管理的一種機制,部署LVM邏輯卷管理器需要依次對對物理卷、卷組和邏輯卷的逐個配置,常見的命令分別包括有:
功能/命令 物理卷管理 卷組管理 邏輯卷管理
掃描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
顯示 pvdisplay vgdisplay lvdisplay
刪除 pvremove vgremove lvremove
擴展 vgextend lvextend
為避免實驗之間互相沖突,請您自行還原虛擬機到最初始狀態,並在虛擬機中添加兩塊新硬碟設備後開機,如圖7-7所示:
圖7-7 在虛擬機中添加一塊新的硬碟設備
在虛擬機中添加兩塊新硬碟設備的目的是為了更好的向同學們演示LVM邏輯卷管理器對於讓用戶無需關心底層物理硬碟設備的特性,咱們將會對這兩塊新的硬碟先進行創建物理卷操作,可以簡單理解成讓硬碟設備支持了LVM技術,然後將兩塊硬碟進行卷組合並,卷組的名稱可以由您來自定義,接下來是將合並後的卷組根據需求再切割出一個約為150M的邏輯卷設備,最後將這個邏輯卷設備格式化成XFS文件系統後掛載使用。現在知道大致的流程後就可以,劉遄老師還會對下面每一個步驟再做一些簡單的描述。
第1步:讓新添加的兩塊硬碟設備支持LVM邏輯卷管理器技術:
[root@linuxprobe ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
第2步:將兩塊硬碟設備都加入到storage卷組中,然後查看下卷組的狀態:
[root@linuxprobe ~]# vgcreate storage /dev/sdb /dev/sdc
Volume group "storage" successfully created
[root@linuxprobe ~]# vgdisplay
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0 Free PE / Size 10238 / 39.99 GiB
VG UUID KUeAMF-qMLh-XjQy-ArUo-LCQI-YF0o-pScxm1
………………省略部分輸出信息………………
第3步:切割出一個約為150M的邏輯卷設備:
同學們需要注意下切割單位的問題,在LVM邏輯卷管理器對LV邏輯卷的切割上面有兩種計量單位,第一種是常見以-L參數來以容量單位為對象,例如使用-L 150M來生成一個大小為150M的邏輯卷,還可以使用-l參數來指定要使用PE基本單元的個數,默認每個PE的大小為4M,因此允許使用-l 37來生成一個大小為37*4M=148M的邏輯卷:
[root@linuxprobe ~]# lvcreate -n vo -l 37 storage
Logical volume "vo" created
[root@linuxprobe ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID D09HYI-BHBl-iXGr-X2n4-HEzo-FAQH-HRcM2I
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-02-01 01:22:54 -0500
LV Status available
# open 0
LV Size 148.00 MiB
Current LE 37
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
………………省略部分輸出信息………………
第4步:將生成好的邏輯卷格式化後掛載使用:
Linux系統會把LVM邏輯卷管理器中的邏輯卷設備存放在/dev設備目錄中(實際上是做了一個符號鏈接,但讀者們無需關心),同時會以卷組的名稱來建立一個目錄,其中保存有邏輯卷的設備映射文件。
[root@linuxprobe ~]# mkfs.ext4 /dev/storage/vo
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
38000 inodes, 151552 blocks
7577 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33816576
19 block groups
8192 blocks per group, 8192 fragments per group
2000 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
[root@linuxprobe ~]# mkdir /linuxprobe
[root@linuxprobe ~]# mount /dev/storage/vo /linuxprobe
第5步:查看掛載狀態,並寫入到配置文件永久生效:
[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.0G 15G 17% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 8.8M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/mapper/storage-vo 145M 7.6M 138M 6% /linuxprobe
[root@linuxprobe ~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab
7.2.2 擴容邏輯卷
雖然咱們的卷組是由兩塊硬碟設備共同組成的,但用戶使用存儲資源時感知不到底層硬碟的結構,也不用關心底層是由多少塊硬碟組成的,只要卷組中的資源足夠就可以一直為邏輯卷擴容,擴展前請一定要記得卸載設備和掛載點的關聯。
[root@linuxprobe ~]# umount /linuxprobe
第1步:將上個實驗中的邏輯卷vo擴展至290M:
[root@linuxprobe ~]# lvextend -L 290M /dev/storage/vo
Rounding size to boundary between physical extents: 292.00 MiB
Extending logical volume vo to 292.00 MiB
Logical volume vo successfully resized
第2步:檢查磁碟完整性,重置硬碟容量:
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
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/storage/vo: 11/38000 files (0.0% non-contiguous), 10453/151552 blocks
[root@linuxprobe ~]# resize2fs /dev/storage/vo
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 299008 (1k) blocks.
The filesystem on /dev/storage/vo is now 299008 blocks long.
第3步:重新掛載硬碟設備並查看掛載狀態:
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.0G 15G 17% /
devtmpfs 985M 0 985M 0% /dev
tmpfs 994M 80K 994M 1% /dev/shm
tmpfs 994M 8.8M 986M 1% /run
tmpfs 994M 0 994M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/mapper/storage-vo 279M 2.1M 259M 1% /linuxprobe
7.2.3 縮小邏輯卷
相比於擴容邏輯卷來講,對邏輯卷的縮小操作存在著更高丟失數據的風險,所以在生產環境中同學們一定要留心記得提前備份好數據,另外Linux系統規定對LVM邏輯卷的縮小操作需要先檢查文件系統的完整性,當然這也是在保證咱們的數據安全,操作前記得先把文件系統卸載掉:
[root@linuxprobe ~]# umount /linuxprobe
第1步:檢查文件系統的完整性:
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
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/storage/vo: 11/74000 files (0.0% non-contiguous), 15507/299008 blocks
第2步:將LV邏輯卷的容量減小到120M:
[root@linuxprobe ~]# resize2fs /dev/storage/vo 120M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 122880 (1k) blocks.
The filesystem on /dev/storage/vo is now 122880 blocks long.
[root@linuxprobe ~]# lvrece -L 120M /dev/storage/vo
WARNING: Recing active logical volume to 120.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to rece vo? [y/n]: y
Recing logical volume vo to 120.00 MiB
Logical volume vo successfully resized
第3步:將文件系統重新掛載並查看系統狀態:
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.0G 15G 17% /
devtmpfs 985M 0 985M 0% /dev
tmpfs 994M 80K 994M 1% /dev/shm
tmpfs 994M 8.8M 986M 1% /run
tmpfs 994M 0 994M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/mapper/storage-vo 113M 1.6M 103M 2% /linuxprobe
7.2.4 邏輯卷快照
除此之外LVM邏輯卷管理器還具備有「快照卷」的功能,這項功能很類似於我們其他軟體的還原時間點功能。例如我們可以對某一個LV邏輯卷設備做一次快照,如果今後發現數據被改錯了,咱們可以將之前做好的快照卷進行覆蓋還原,LVM邏輯卷管理器的快照功能有兩項特點,第一是快照卷的大小應該盡量等同於LV邏輯卷的容量,第二是快照功能僅一次有效,一旦被還原後則會被自動立即刪除。我們首先應當查看下卷組的信息:
[root@linuxprobe ~]# vgdisplay
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
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 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 30 / 120.00 MiB Free PE / Size 10208 / 39.88 GiB
VG UUID CTaHAK-0TQv-Abdb-R83O-RU6V-YYkx-8o2R0e
………………省略部分輸出信息………………
通過卷組的輸出信息可以很清晰的看到卷組中已用120M,空閑資源有39.88G,接下來咱們在邏輯卷設備所掛載的目錄中用重定向寫入一個文件吧:
[root@linuxprobe ~]# echo "Welcome to Linuxprobe.com" > /linuxprobe/readme.txt
[root@linuxprobe ~]# ls /linuxprobe
total 14
drwx------. 2 root root 12288 Feb 1 07:18 lost+found
-rw-r--r--. 1 root root 26 Feb 1 07:38 readme.txt
第1步:使用-s參數來生成一個快照卷,使用-L參數來指定切割的大小,另外要記得在後面寫上這個快照是針對那個邏輯卷做的。
[root@linuxprobe ~]# lvcreate -L 120M -s -n SNAP /dev/storage/vo
Logical volume "SNAP" created
[root@linuxprobe ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/SNAP
LV Name SNAP
VG Name storage
LV UUID BC7WKg-fHoK-Pc7J-yhSd-vD7d-lUnl-TihKlt
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-02-01 07:42:31 -0500
LV snapshot status active destination for vo
LV Status available
# open 0
LV Size 120.00 MiB
Current LE 30
COW-table size 120.00 MiB
COW-table LE 30
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
………………省略部分輸出信息………………
第2步:咱們在LV設備卷所掛載的目錄中創建一個100M的垃圾文件,這樣再來看快照卷的狀態就會發現使用率上升了:
[root@linuxprobe ~]# dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M
1+0 records in
1+0 records out
104857600 bytes (105 MB) copied, 3.35432 s, 31.3 MB/s
[root@linuxprobe ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/SNAP
LV Name SNAP
VG Name storage
LV UUID BC7WKg-fHoK-Pc7J-yhSd-vD7d-lUnl-TihKlt
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-02-01 07:42:31 -0500
LV snapshot status active destination for vo
LV Status available
# open 0
LV Size 120.00 MiB
Current LE 30
COW-table size 120.00 MiB
COW-table LE 30
Allocated to snapshot 83.71%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
第3步:為了校驗SNAP快照卷的效果,咱們需要對邏輯卷進行快照合並還原操作,在這之前記得先卸載掉邏輯卷設備與目錄的掛載~
[root@linuxprobe ~]# umount /linuxprobe
[root@linuxprobe ~]# lvconvert --merge /dev/storage/SNAP
Merging of volume SNAP started.
vo: Merged: 21.4%
vo: Merged: 100.0%
Merge of snapshot into logical volume vo has finished.
Logical volume "SNAP" successfully removed
第4步:快照卷會被自動刪除掉,並且剛剛在邏輯卷設備被快照後再創建出來的100M垃圾文件也被清除了:
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# ls /linuxprobe/
lost+found readme.txt
看下《Linux就該這么學》第7章節吧,第7章 使用RAID與LVM磁碟陣列技術
F. linux里lvm 用來干什麼
對於Linux用戶而言,在安裝一台Linux機器的時候,遇到的問題之一就是給各分區估計和分派足夠的硬碟空間。無論對一個正在為伺服器尋找空間的系統管理員,還是一個磁碟即將用盡的普通用戶來說,這都是一個非常常見的問題。解決的方法通常是使用符號鏈接,或者一些調整分區大小的工具(比如parted)。但是,這只是一個暫時性的解決辦法,不久,我們又會面臨同樣的問題。
如果你是一個站點的系統管理員,管理著數量眾多的、連接在Internet之上的伺服器,那麼你每關機一分鍾,都會給公司帶來很大損失。此外,使用這種方法,在修改了分區表之後,每一次都得重新啟動系統。LVM(邏輯卷管理程序)可以幫助我們解決這些問題。
LVM簡介
Linux LVM可以使管理工作更加輕松。相對於硬碟和分區,LVM是從更高的層次來看待存儲空間的。在使用LVM之前,先來看一些將要使用到的相關概念。
物理卷
物理卷是指硬碟分區或者從邏輯上看起來和硬碟分區類似的設備(比如RAID設備)。
邏輯卷
一個或者多個物理卷組成一個邏輯卷。對於LVM而言,邏輯卷類似於非LVM系統中的硬碟分區。邏輯卷可以包含一個文件系統(比如/home或者/usr)。
卷組
一個或者多個邏輯卷組成一個卷組。對於LVM而言,卷組類似於非LVM系統中的物理硬碟。卷組把多個邏輯卷組合在一起,形成一個可管理的單元。
document.body.clientWidth-450) {this.height=(document.body.clientWidth-450)*this.height/this.width;this.width=document.body.clientWidth-450}" border="0">
LVM工作方式
下面來看一看LVM到底是怎樣工作的。每一個物理卷都被分成幾個基本單元,即所謂的PE(Physical Extents)。PE的大小是可變的,但是必須和其所屬卷組的物理卷相同。在每一個物理卷里,每一個PE都有一個惟一的編號。PE是一個物理存儲里可以被LVM定址的最小單元。
每一個邏輯卷也被分成一些可被定址的基本單位,即所謂的LE(Logical Extents)。在同一個卷組中,LE的大小和PE是相同的,很顯然,LE的大小對於一個卷組中的所有邏輯卷來說都是相同的。
在一個物理卷中,每一個PE都有一個惟一的編號,但是對於邏輯卷這並不一定是必需的。這是因為當這些PE ID號不能使用時,邏輯卷可以由一些物理卷組成。因此,LE ID號是用於識別LE以及與之相關的特定PE的。正如前面所提到的,LE和PE之間是一一對應的。每一次存儲區域被定址訪問或者LE的ID被使用,都會把數據寫在物理存儲設備之上。
你可能會覺得奇怪,有關邏輯卷和邏輯卷組的所有元數據都存到哪兒去了。類似的在非LVM系統中,有關分區的數據是存儲在分區表中,而分區表被存儲在了每一個物理卷的起始位置。VGDA(卷組描述符區域)功能就好象是LVM的分區表,它存儲在每一個物理卷的起始處。
VGDA由以下信息組成:
·一個PV描述符
·一個VG描述符
·LV描述符
·一些PE描述符
當系統啟動LV時,VG被激活,並且VGDA被載入至內存。VGDA幫助識別LV的實際存儲位置。當系統想要訪問存儲設備時,由VGDA建立起來的映射機制就用於訪問實際的物理位置來執行I/O操作。
開始工作
下面具體看一看如何使用LVM。
第一步:配置內核。在安裝LVM之前,內核之中應該有LVM模塊,可以使用以下的步驟來完成:
#cd /usr/src/linux
#make menuconfig
選擇Multi-device Support (RAID and LVM)子菜單,選中以下兩個選項:
[*] Multiple devices driver support (RAID and LVM)
< *> Logical volume manager (LVM) Support.
復制代碼
注:如果在安裝Linux系統時已經安裝了LVM相關軟體包,上面幾步操作可以省略掉,直接到第二步.
第二步:檢查驅動器上空閑硬碟空間的總量。這可以通過以下命令來未完成:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 3.1G 2.7G 398M 87% /
/dev/hda2 4.0G 3.2G 806M 80% /home
/dev/hda5 2.1G 1.0G 1.1G 48% /var
第三步:在硬碟上創建一個LVM分區。使用fdisk或者其它的分區工具來創建一個LVM分區。Linux LVM的分區類型為8e。
# fdisk /dev/hda
press p (to print the partition table) and n (to create a new partition)
第四步:創建一個物理卷。下述命令將在分區的起始處創建一個卷組描述符:
# pvcreate /dev/hda6
pvcreate -- -physical volume "/dev/hda6" successfully created
# pvcreate /dev/hda7
pvcreate- -- physical volume "/dev/hda7" successfully created
第五步:創建一個卷組。通過下面的方法創建一個新的卷組,並且添加兩個物理卷:
# vgcreate test_lvm /dev/hda6 /dev/hda7
vgcreate- -- INFO: using default physical extent size 4 MB
vgcreate- -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate- -- doing automatic backup of volume group "test_lvm"
vgcreate- -- volume group "test_lvm" successfully created and activated
上述命令將創建一個名為test_lvm,包含有/dev/hda6和/dev/hda7兩個物理卷的卷組。使用下面命令來激活卷組:
# vgchange -ay test_lvm
使用「vgdisplay」命令來查看所建立卷組的細節信息。
# vgdisplay
--- Volume group ---
VG Name test_lvm
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 1
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 3.91 GB
PE Size 4 MB
Total PE 1000
Alloc PE / Size 256 / 1 GB
Free PE / Size 744 / 2.91 GB
VG UUID T34zIt-HDPs-uo6r-cBDT-UjEq-EEPB-GF435E
第六步:創建一個邏輯卷。使用lvcreate命令在卷組中創建一個邏輯卷:
# lvcreate -L2G -nlogvol1 test_lvm
第七步:創建文件系統。在該邏輯卷上選擇使用reiserfs日誌文件系統:
# mkreiserfs /dev/test_lvm/logvol1
使用mount命令來載入新創建的文件系統。
# mount -t reiserfs /dev/test_lvm/logvol1 /mnt/lv1
第八步:在/etc/fstab和/etc/lilo.conf中添加一個入口。在/etc/fstab中加入以下入口,在啟動時載入文件系統:
/dev/test_lvm/logvol1 /mnt/lv1 reiserfs defaults 1 1
如果沒有覆蓋原來的內核,那麼拷貝一份重新編譯後的內核,並且在啟動時選擇是否使用LVM。下面是LILO文件的內容:
image = /boot/lvm_kernel_image
label = linux-lvm
root = /dev/hda1
initrd = /boot/init_image
ramdisk = 8192
添加以上內容後,使用以下命令重新載入LILO:
#/sbin/lilo
第九步:修改邏輯卷的大小。可以使用lvextend命令方便地修改邏輯卷的大小,增加邏輯卷大小的方法如下:
# lvextend -L 1G /dev/test_lvm/logvol1
lvextend -- extending logical volume "/dev/test_lvm/logvol1" to 3GB
lvextend -- doing automatic backup of volume group "test_lvm"
lvextend -- logical volume "/dev/test_lvm/logvol1" successfully extended
類似的,減小邏輯卷大小的方法如下:
# lvrece -L-1G /dev/test_lvm/lv1
lvrece -- -Warning: recing active logical volume to 2GB
lvrece- -- This may destroy your data (filesystem etc.)
lvrece -- -do you really want to rece "/dev/test_lvm/lv1"? [y/n]: y
lvrece- -- doing automatic backup of volume group "test_lvm"
lvrece- -- logical volume "/dev/test_lvm/lv1" successfully reced
復制代碼
總結
從上面的討論可以看到,LVM具有很好的可擴展性,並且使用起來很直觀。一旦卷組建立起來以後,根據需求調整每一個邏輯卷的大小也非常容易。
LVM操作的相關命令:
fdisk -l :查看系統中都認到了那些物理硬碟
pvdisplay:查看系統中已經創建好的物理卷
pvcreate:創建一個新的物理卷
pvremove:刪除一個物理卷(也就是從物理卷中刪除一個LVM標簽)
vgdisplay:查看系統中的卷組
vgcreate:創建一個新的卷組
vgrece:從卷組中刪除一個物理卷(也就是縮小卷組)
vgremove:刪除一個卷組
lvdisplay:查看系統中已經創建好的邏輯卷
lvcreate:創建一個新的邏輯卷
lvrece:縮小邏輯卷(也就是從一個邏輯卷中減少一些LE)
lvremove:從系統中刪除一個邏輯卷
mkfs:基於邏輯卷創建一個相應類型的文件系統
mkdir -p $mount_piont:創建一個掛載目錄
創建好的文件系統位於:
/dev/$create_vg_name/$lv_name
mount /dev/$create_vg_name/$lv_name $mount_piont:掛載文件系統
vgscan:讀取系統中創建的所有卷組
vgchange -a y :激活所有卷組 (開機執行,redhat可在/etc/rc.d/rc.sysinit系統啟動初始化腳本里可以找到)
vgchange -a n :關閉所有卷組(提示:必須在umount所有的文件系統後,才能成功執行
裸設備使用:
1.先lvreate
2. raw /dev/raw/raw0 /dev/mapper/vgname-lvname
3.修改 /etc/sysconfig/rawdevices,添加:
/dev/raw/raw0 /dev/mapper/vgname-lvname
4.執行命令; service rawdevices restart,使得/etc/sysconfig/rawdevices文件中的裸設備配置生效
5.執行/sbin/schkconfig rawdevices on 使得系統重啟後,裸設備能自動載入
6.修改裸設備的屬主,使得相應許可權的用戶對裸設備有讀寫許可權
chown -R owner:group /dev/raw/raw0
7.將修改裸設備屬主修改命令加入到系統啟動執行腳本/etc/rc.local中,使得系統啟動後裸設備的屬主保持不變.
G. 如何使用LVM將新磁碟添加到現有的Linux系統中
在虛擬機下添加新的磁碟空間
重啟linux伺服器
查看磁碟 #fdisk -l
創建物理卷 #pvcreate /dev/sdb
查看物理卷 #pvdisplay
將新的物理卷加入到已有邏輯卷中
#vgexteng /dev/VolGroup /dev/sdb
查看卷空間 #vgdisplay
查看分區 #lvdisplay
開始擴容 #lvextend -L +200G /dev/VolGroup/lv_root
使擴容生效
#resize2fs /dev/VolGroup/lv_root
查看是否生效 #df
H. 簡述使用lvm方式管理磁碟時添加一塊新磁碟/dev/vdb使用命令的順序
一般是先做fdisk,將磁碟按需要進行分區。
然後pvcreate /dev/sdxn 對各個分區設備創建磁碟。
然後將pv加入vg
vgextend vgname 加參數指定pv
lvcreate,創建lv。
若使用文件系統,mkfs 然後mount即可
若使用裸設備,則需要使用raw命令創建lv對應的字元設備,然後將字元設備用於資料庫等可以直接使用裸設備的軟體。
I. 如何在LINUX下使用LVM
LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,它為主機提供了更高層次的磁碟存儲管理能力。LVM可以幫助系統管理員為應用與用戶方便地分配存儲空間。在LVM管理下的邏輯卷可以按需改變大小或添加移除。另外,LVM可以為所管理的邏輯卷提供定製的命名標識。因此,使用LVM主要是方便了對存儲系統的管理,增加了系統的擴展性。
一、准備lvm環境
1.硬碟的准備
添加了一塊硬碟/dev/hdb。
准備了三個分區,方案如下:容量為100M,僅為了實驗准備。
/dev/hdb1
/dev/hdb2
/dev/hdb3
2.轉換分區類型為lvm卷
fdisk /dev/hdb
t轉換為lvm卷類型
Device Boot Start End Blocks Id System
/dev/hdb1 1 208 98248+ 8e Linux LVM
/dev/hdb2 209 416 98280 8e Linux LVM
/dev/hdb3 417 624 98280 8e Linux LVM
然後w保存並且
#partprobe /*使用磁碟分區生效*/
二、lvm創建過程
1.從硬碟驅動器分區中創建物理卷(physical volumes-PV)。
2.從物理卷中創建卷組(volume groups-VG)
3.從卷組中創建邏輯卷(logical volumes-LV),並分派邏輯卷掛載點,其中只有邏輯卷才可以寫數據。
lvm的最大的特點就是可以動態的調整分區的大小,並且可以隨著分區容量的增長而增加磁碟空間的容量。
LVM配置與創建
三、LVM的物理卷PV
1.相關命令
pvcreate 創建PV
pvscan 掃描PV
pvdisplay 顯示PV
pvremove 刪除PV
partprobe
2.創建物理卷
如果以上容量不夠,可以再添加其它分區到物理卷中。
[root@redhat ~]# pvcreate /dev/hdb1 /dev/hdb2
Physical volume 「/dev/hdb1″ successfully created
Physical volume 「/dev/hdb2″ successfully created
[root@redhat ~]# pvscan
PV /dev/hdb1 lvm2 [95.95 MB]
PV /dev/hdb2 lvm2 [95.98 MB]
Total: 2 [191.92 MB] / in use: 0 [0 ] / in no VG: 2 [191.92 MB]
[root@redhat ~]# pvdisplay
— NEW Physical volume —
PV Name /dev/hdb1
VG Name
PV Size 95.95 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 2Ni0Tx-oeSy-zGUP-t7KG-Fh22-0BUi-iyPhhQ
— NEW Physical volume —
PV Name /dev/hdb2
VG Name
PV Size 95.98 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 2XLXfY-V3L2-Mtsl-79U4-ovuJ-YaQf-YV9qHs
四、創建LVM的卷組VG
1.相關命令
vgcreate 創建VG
vgscan 掃描VG
vgdispaly
vgextend
vgrece
vgchange
vgremove
2.創建邏輯卷VG
[root@redhat ~]# vgcreate vg0 /dev/hdb1 /dev/hdb2
Volume group 「vg0″ successfully created
[root@redhat ~]# vgscan
Reading all physical volumes. This may take a while…
Found volume group 「vg0″ using metadata type lvm2
[root@redhat ~]# vgdisplay
— Volume group —
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 184.00 MB
PE Size 4.00 MB /*分配的塊的大小默認為4M*/
Total PE 46
Alloc PE / Size 0 / 0
Free PE / Size 46 / 184.00 MB
VG UUID kL5CGk-5Odk-r3PK-9q0A-s94h-OHv4-BojBnH增加VG容量到1TB的方法:
vgcreate -s 16M vg0 /dev/hdb1 /dev/hdb2
3.刪除與添加邏輯卷
[root@redhat ~]# vgrece vg0 /dev/hdb2
Removed 「/dev/hdb2″ from volume group 「vg0″
[root@redhat ~]# vgextend vg0 /dev/hdb2
Volume group 「vg0″ successfully extended
五、創建LVM的邏輯卷LV
1.相關命令
lvcreate
lvscan
lvdisplay
lvextend
lvrece
lvremove
lvresize
2.創建邏輯卷LV
[root@redhat ~]# lvcreate -L 184M -n data vg0
Logical volume 「data」 created
[root@redhat ~]# lvscan
ACTIVE 『/dev/vg0/data』 [184.00 MB] inherit
[root@redhat ~]# lvdisplay
— Logical volume —
LV Name /dev/vg0/data
VG Name vg0
LV UUID HNKO5d-yRre-qVnP-ZT8D-fXir-XTeM-r6WjDX
LV Write Access read/write
LV Status available
# open 0
LV Size 184.00 MB
Current LE 46
Segments 2
Allocation inherit
Read ahead sectors 0
Block device 253:0
六、掛載LVM的邏輯卷LV
lv的格式化:
mkfs.ext3 /dev/vg0/data
mdkir /mnt/lvm
mount /dev/vg0/data /mnt/lvm
[root@redhat ~]# ls /mnt/lvm
lost+found
[root@redhat ~]# df -T
文件系統 類型 1K-塊 已用 可用 已用% 掛載點
/dev/hda3 ext3 7625092 2219460 5012040 31% /
/dev/hda1 ext3 101086 10006 85861 11% /boot
tmpfs tmpfs 150108 0 150108 0% /dev/shm
/dev/mapper/vg0-data
ext3 182469 5664 167385 4% /mnt/lvm
七、LVM的容量調整
LVM的容量調整可以在多個環節進行調整,比如:可以在物理卷上,VG上,以及LV上,都可以進行容量的擴展,這也是LVM它的一個優勢所在。
1.添加物理卷
首先應卸載在使用過程中的LV,然後必須保證該磁碟的類型是lvm類型,才能添加進來。
[root@redhat ~]# umount /dev/vg0/data
[root@redhat ~]# pvcreate /dev/hdb3
Physical volume 「/dev/hdb3″ successfully created
[root@redhat ~]# pvscan
PV /dev/hdb1 VG vg0 lvm2 [92.00 MB / 0 free]
PV /dev/hdb2 VG vg0 lvm2 [92.00 MB / 0 free]
PV /dev/hdb3 lvm2 [95.98 MB]
Total: 3 [279.98 MB] / in use: 2 [184.00 MB] / in no VG: 1 [95.98 MB]
2.添加VG的容量
把上面新添加的LVM磁碟加入到vg0卷組中。
[root@redhat ~]# vgextend vg0 /dev/hdb3
Volume group 「vg0″ successfully extended
[root@redhat ~]# vgdisplay
— Volume group —
VG Name vg0
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 276.00 MB
PE Size 4.00 MB
Total PE 69
Alloc PE / Size 46 / 184.00 MB
Free PE / Size 23 / 92.00 MB
VG UUID kL5CGk-5Odk-r3PK-9q0A-s94h-OHv4-BojBnH
3.添加入LV中VG增珈的容量
把新加入LVM磁碟的容量加入LV中。
[root@redhat ~]# lvextend -L +92M /dev/vg0/data
Extending logical volume data to 276.00 MB
Logical volume data successfully resized
[root@redhat ~]# lvscan
ACTIVE 『/dev/vg0/data』 [276.00 MB] inherit
[root@redhat ~]# resize2fs -f /dev/vg0/data
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/vg0/data to 282624 (1k) blocks.
The filesystem on /dev/vg0/data is now 282624 blocks long.
如果不做這一步的話,在實現掛載的時候,發現LV的容量沒有真正的加入進LV卷中,因為相關信息寫入到了磁碟超級塊中。
4.掛載使用
[root@redhat ~]# mount /dev/vg0/data /mnt/lvm
[root@redhat ~]# df
文件系統 1K-塊 已用 可用 已用% 掛載點
/dev/hda3 7625092 2219468 5012032 31% /
/dev/hda1 101086 10006 85861 11% /boot
tmpfs 150108 0 150108 0% /dev/shm
/dev/mapper/vg0-data 273569 6168 256097 3% /mnt/lvm
LVM的卸載
八、LVM的卸載方法
如果不想使用LVM的話,可以卸載它, 卸載的方法與分區的刪除方法類似,就是最後創建的最先刪除。順序如下:
先刪除LV
再刪除VG
最後PV
以前的LVM的分區應用fdisk轉換成其它類型的文件系統,當普通分區使用。
九、LVM的卸載過程
1.umount取消掛載
[root@redhat ~]# df
文件系統 1K-塊 已用 可用 已用% 掛載點
/dev/hda3 7625092 2219468 5012032 31% /
/dev/hda1 101086 10006 85861 11% /boot
tmpfs 150108 0 150108 0% /dev/shm
/dev/mapper/vg0-data 273569 6168 256097 3% /mnt/lvm
[root@redhat ~]# umount /mnt/lvm
2.刪除LV邏輯卷
[root@redhat ~]# lvremove /dev/vg0/data
Do you really want to remove active logical volume 「data」? [y/n]: y
Logical volume 「data」 successfully removed
3.刪除VG卷組
[root@redhat ~]# vgchange -a n vg0
0 logical volume(s) in volume group 「vg0″ now active
說明:把vg0轉換成休眠狀態,實驗中這一步可以不用。
[root@redhat ~]# vgremove vg0
Volume group 「vg0″ successfully removed
4.刪除PV
[root@redhat ~]# pvscan 查看pv的情況
PV /dev/hdb1 lvm2 [95.95 MB]
PV /dev/hdb2 lvm2 [95.98 MB]
PV /dev/hdb3 lvm2 [95.98 MB]
Total: 3 [287.90 MB] / in use: 0 [0 ] / in no VG: 3 [287.90 MB]
[root@redhat ~]# pvremove /dev/hdb1 /dev/hdb2 /dev/hdb3
Attempt to close device 『/dev/cdrom』 which is not open.
Labels on physical volume 「/dev/hdb1″ successfully wiped
Labels on physical volume 「/dev/hdb2″ successfully wiped
Labels on physical volume 「/dev/hdb3″ successfully wiped
5.最後就是用fdisk修改磁碟的類型了。