LVM使用手冊2

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

LVM使用手冊2................


7.3 數據搬家
在移除舊硬碟前,要把其上的數據轉移到新硬碟上。在轉移數據時,不要求卸載文件系統,但建議在數據轉移前進行備份,以防轉移進程中意外導致數據丟失。
pvmove用來實現數據轉移,根據數據量的多少,它可能要使用大量的時間,並可降低邏輯卷的性能,因此要在系統不太忙時操作。
# pvmove /dev/hdb /dev/sdf
pvmove -- moving physical extents in active volume group "test_vg"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? y
pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved
7.4 移除未用硬碟
當數據被轉移到其它硬碟后,就可以從卷組中刪除這塊不再使用的硬碟:
# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "test_vg"
vgreduce -- volume group "test_vg" successfully reduced by physical volume:
vgreduce -- /dev/hdb
從此,卷組test_vg不再使用IDE硬碟/dev/hdb,這塊硬碟可以從機器中拆下或用作它途。
8 遷移卷組到其它系統
把一個卷組轉移到其它系統是很容易的(如更換伺服器),這要用命令vgexport與vgimport。
8.1 卸載文件系統
為整體搬遷卷組,應首先把它從文件系統中卸載,如:
# unmount /mnt/design/users
8.2 設置卷組為非活動狀態
把卷組從內核中卸載,以避免任何對它可能的操作:
# vgchange -an test_vg
vgchange -- volume group "test_vg" successfully deactivated
8.3 Export 卷組
這個操作不是必須的,便它可以防止系統對卷組的訪問:
# vgexport test_vg
vgexport -- volume group "test_vg" sucessfully exported
當機器關機后,構成卷組的硬碟就可被轉移到新的伺服器上。
8.4 Import 卷組
在新的伺服器上,可用pvscan查看卷組情況,如在這台計算機上,硬碟新的設備為/dev/sdb,使用pvscan可有:
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1"  is in EXPORTED VG "test_vg"
pvscan -- inactive PV "/dev/sdb2"  is in EXPORTED VG "test_vg"
pvscan -- total: 2 / in use: 2 / in no VG: 0
現可以import卷組test_vg (同時也激活它)以安裝其上的文件系統
# vgimport test_vg /dev/sdb1 /dev/sdb2
vgimport -- doing automatic backup of volume group "test_vg"
vgimport -- volume group "test_vg" successfully imported and activated
8.5 安裝文件系統
# mkdir -p /mnt/design/users
# mount /dev/test_vg/users /mnt/design/users
在完成以上操作后,原卷組在新的伺服器上就可使用了。
9 分割卷組
這種情況是:需要在系統中加入新的卷組,但沒有其它可用新硬碟,而已有的卷組中還有大量空間可用。如向系統加入一個"design"卷組。
9.1 檢查可用空間
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- ACTIVE   PV "/dev/sda"  of VG "dev"   
pvscan -- ACTIVE   PV "/dev/sdb"  of VG "sales"
pvscan -- ACTIVE   PV "/dev/sdc"  of VG "ops"   
pvscan -- ACTIVE   PV "/dev/sdd"  of VG "dev"   
pvscan -- ACTIVE   PV "/dev/sde"  of VG "ops"   
pvscan -- ACTIVE   PV "/dev/sdf"  of VG "dev"   
pvscan -- ACTIVE   PV "/dev/sdg1" of VG "ops"   
pvscan -- ACTIVE   PV "/dev/sdg2" of VG "dev"   
pvscan -- total: 8 / in use: 8 / in no VG: 0
我們決定把/dev/sdg1與/dev/sdg2分配組design,但首先要把其上的物理塊移到其它卷的空閑空間中(如把卷組dev移到/dev/sdf,卷組ops移到/dev/sde)。
9.2 從選定硬碟移出數據
由於硬碟上的邏輯卷仍在使用,故首先要轉移它們的數據。
把所有在使用的物理塊從/dev/sdg1上轉移到/dev/sde,及從/dev/sdg2轉移到/dev/sdf。
# pvmove /dev/sdg1 /dev/sde
pvmove -- moving physical extents in active volume group "ops"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? y
pvmove -- doing automatic backup of volume group "ops"
pvmove -- 141 extents of physical volume "/dev/sdg1" successfully moved

# pvmove /dev/sdg2 /dev/sdf
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? y
pvmove -- doing automatic backup of volume group "dev"
pvmove -- 91 extents of physical volume "/dev/sdg2" successfully moved
9.3 創建新卷組
現在把/dev/sdg2從卷組dev從分割出並加入到新卷組design中。我們可用vgreduce與vgcreate完成工作,但vgsplit此時更方便:
# vgsplit dev design /dev/sdg2
vgsplit -- doing automatic backup of volume group "dev"
vgsplit -- doing automatic backup of volume group "design"
vgsplit -- volume group "dev" successfully split into "dev" and "design"
9.4 移除剩餘的卷
接下來的工作 把/dev/sdg1從卷組ops中分出並加入卷組design:
# vgreduce ops /dev/sdg1
vgreduce -- doing automatic backup of volume group "ops"
vgreduce -- volume group "ops" successfully reduced by physical volume:
vgreduce -- /dev/sdg1

# vgextend design /dev/sdg1
vgextend -- INFO: maximum logical volume size is 255.99 Gigabyte
vgextend -- doing automatic backup of volume group "design"
vgextend -- volume group "design" successfully extended
9.5 建立新邏輯卷及文件系統
在卷組design上建立邏輯卷,為今後的方便,現只使用一部分空間:
# lvcreate -L750M -n users design
lvcreate -- rounding up size to physical extent boundary "752 MB"
lvcreate -- doing automatic backup of "design"
lvcreate -- logical volume "/dev/design/users" successfully created

# mke2fs /dev/design/users
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
96384 inodes, 192512 blocks
9625 blocks (5.00<!-- ) reserved for the super user
First data block=0
6 block groups
32768 blocks per group, 32768 fragments per group
16064 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840

Writing inode tables: done                           
Writing superblocks and filesystem accounting information: done

# mkdir -p /mnt/design/users
# mount /dev/design/users /mnt/design/users/
現在就可使用卷組design。為方便使用,可把下面一行加入文件/etc/fstab中:
/dev/design/user /mnt/design/users ext2 defaults 1 2
10 轉變根文件系統為LVM
注意:強烈要求在進行下面的操作前對系統進行備份,並且把/文件系統建立在LVM上會導致系統升級很複雜。
在下面的例子中,系統除了/boot外都安裝在同一個分區中,文件系統的情況為:
/dev/hda1  /boot
/dev/hda2  swap
/dev/hda3  /
進行轉換的一個必要條件是硬碟上還有足夠的空間給分區/dev/hda4創立LVM並把/分區的內容都複製到LVM上,否則:
1./分區還有至少一半空間空閑,可以縮減/分區,並把分出的空間劃分到分區/dev/hda4;
為方便可用GNU parted工具:ftp://ftp.gnu.org/pub/gnu/parted;它可縮減帶有文件系統的分區。同樣也可用resize2fs與fdisk完成這個操作;
2.硬碟上已無足夠空間,必須使用第二塊硬碟,如/dev/hdb。
在完成以上準備及備份系統后,可繼續以下步驟:
1.確認使用的Linux內核支持LVM,並且在編譯時設置了 CONFIG BLK DEV RAM 與  CONFIG BLK DEV INITRD 。
2.設置/dev/hda4分區類型為LVM(8e):
# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Unknown)
Command (m for help): w
3.設置LVM:
"初始化LVM (vgscan)
# vgscan
"轉變分區為PV:
# pvcreate /dev/hda4
"建立卷組:
# vgcreate vg /dev/hda4
"建立邏輯卷用以存放根系統:(這裡假設空間為250MB)
# lvcreate -L250M root vg
4.在邏輯卷上建立文件系統並把系統複製到其上:
# mke2fs /dev/vg/root
# mount /dev/vg/root /mnt/
# find / -xdev | cpio -pvmd /mnt
5.修改新系統的fstab文件/mnt/etc/fstab,使/安裝到/dev/vg/root:
/dev/hda3 / ext2 defaults 1 1
改變為:
/dev/vg/root / ext2 defaults 1 1
6.創建LVM初始化RAM盤:
# lvmcreate_initrd
此處要確認為lvmcreate_init給出正確的initrd image文件名,它應在/boot/ 目錄下。
7. 在/etc/lilo.conf 中為LVM加入新入口項,其形式如下:
  image   = /boot/KERNEL_IMAGE_NAME
   label   = lvm
   root    = /dev/vg/root
   initrd  = /boot/INITRD_IMAGE_NAME
   ramdisk = 8192
此處 KERNEL IMAGE NAME是支持LVM的內核,INITRD IMAGE NAME 指由lvmcreate_initrd建立的initrd image。如果LVM的配置很多,可以把ramdisk設置的大一些:此處為8192,預設為4096。在lvmcrate_initrd的輸出中有如下一行:
lvmcreate_initrd -- making loopback file (6189 kB)
其中括弧中的數值為實際所需大小。
8.運行LILO,設置BOOT扇區:
# lilo
9.重啟計算機,在LILO提示符處輸入"lvm" 啟動計算機,此時系統的根文件系統是新建立的邏輯卷。此後可在LILO配置文件/etc/lilo.conf中加入以下一行:
default=lvm
並運行lilo設置預設啟動項為lvm。
如果系統未能正常啟動,可能的原因是內核不支持LVM、initrd image不正確等等。
10.在正常啟動后,就可把硬碟其它分區:/dev/hda3加入LVM。
"首先設置分區類型為 8e(LVM)
# fdisk /dev/hda

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Unknown)
Command (m for help): w
"把它初始化為PV,並加入卷組中:
# pvcreate /dev/hda3
# vgextend vg /dev/hda3
11 共享LVM卷
LVM不支持物理共享訪問,這會導致數據的丟失。
在使用fibre-channel 或shared-SCSI 的環境中,多台計算機以物理方式直接訪問一組硬碟,於是可以使用LVM把這些硬碟分為不同的邏輯卷。如果需要共享數據,則應使用GFS。
12 參考文獻
AJ Lewis,LVM HOWTO,(http://tldp.org/HOWTO/LVM-HOWTO/),Sistina Software, Inc。




[火星人 ] LVM使用手冊2已經有545次圍觀

http://coctec.com/docs/service/show-post-1285.html