1. 程式人生 > >lvm 管理 與lvm 指令碼化建立

lvm 管理 與lvm 指令碼化建立

磁碟管理

1.IDE硬碟被稱為hd,scsi介面的磁碟被稱為sd,一般系統只能連線4個IDE介面的硬碟,比如IDE0口的master被稱為hda,而該口的

slave 被稱為hdb,IDE1的master 端的被稱為hdc,而該埠的slave 被稱為hdd,二scsi介面的硬碟會按照他們連線到系統的順序、

依次為sda,sdb,sdc,sdd,sde...,一個計算機系統的scsi裝置可以達到十幾甚至幾十個。

主分割槽的數目不能超過4個,擴充套件分割槽被當做一個主分割槽來看待,而擴充套件分割槽中則可以分出很多的邏輯分割槽。

主分割槽按照順序可1、2、3、4,系統只能為主分割槽在此4個數字中選取一個未被使用的數字作為自己的分割槽號,而邏輯分割槽從

5開始。

  1. 檢視某個硬碟的分割槽的情況:fdisk -l /dev/sda

給某個硬碟進行分割槽:fdisk /dev/sda

m 檢視命令的提示

n 新建分割槽

e 擴充套件分割槽

p 主分割槽

d 刪除分割槽

l 檢視linux支援的檔案系統型別

t 改變分割槽的檔案系統型別標識

q 不儲存退出,分割槽設定引數失效、

w 儲存分割槽引數設定

  1. 格式化

mkfs -t ext3(檔案型別) /dev/sdb5

mkfs -t ext3 -b 4096 -m 2 -L sample /dev/hda7 : 以新的引數從新格式化為ext3,新的分割槽的塊大小為

4KB,保留給root使用者的空間為分割槽空間的2%,並且分割槽卷標為sample。

4.tune2fs

可以使用tune2fs 命令來調整已經格式化的分割槽的引數,其可以調整的引數和mkfs類似,但是塊的大小不能調整,

如塊大小就不能被調整。如果要改變區塊的大小,就只能對分割槽重新格式化。

例子: tune2fs -r 5000 -L tzsample /dev/hda7

將/dev/hda7 的卷標改為tzsample,對於保留給root使用者的空間則不用百分比來表示,而是直接分配5000個塊,即

5000*4KB約20MB左右,

  1. 卷標

用blkid命令可以檢視分割槽的卷標

blkid可以檢視所有的分割槽卷標,分割槽型別和uuid

如果要檢視ext2/ext3分割槽卷標,可以使用e2lable /dev/sda1方式來檢視

當然df -h也可以檢視到掛載的磁碟卷標。

用mkswap -L 命令可以給一個swap設卷標

dumpe2fs -h /dev/sda5 檢視卷標名稱

6.mount 命令的選項

如果希望在掛載檔案系統的時候設定被掛載檔案系統的一些屬性,則可以使用-o選項來指定。

例子:
mount -o ro /dev/hda7 /mymnt : 以ro只讀屬性掛載 /dev/hda7

可以使用mount 命令將IOS光碟映象檔案掛載高系統中以直接使用,而不需要解壓縮或者將其刻錄成光碟

mount -o loop rhas4-u2-cd1.iso /mymnt

7.開機自動掛載檔案系統

vim /etc/fstab

.......
/dev/hda7 /mymnt ext3 defaults 0 0

第1列是要掛載的裝置名,,第二列是要使用的對用的掛載點,第三列是掛載檔案系統型別,第4列是掛載屬性一般取預設

值default ,第5列指明瞭是否要備份(0為不備份,1要備份,一般根分割槽要備份,其他分割槽則不需要備份,取0即可)。第6列

指明自檢順序(0 為不自檢,1或2為需要自檢,如果是根分割槽則要設為1,其他分割槽只能為2)

mount -a 可以不啟動是改動的內容生效

8.raid

raid0 至少要有兩個以上的磁碟,在raid中,資料分散的儲存在不同的磁碟上,存取速度最快。沒有容錯

raid 1 完全複製,使用映象技術 硬碟的總容量是N/2;

raid 3 磁碟的利用率是(N-1)/N

RAID 5 是將資料的校驗位互動放於各個硬碟,raid 5的寫效率一般但是讀效率很高 硬碟的利用率為(N-1)/N

8.1建立每個不同硬碟的不同分割槽,t 指定為fd(linux raid auto)

8.2 mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd[b-e]1

使用mdadm 建立raid5,其中-C 表示建立RAID,選項 -l5表示建立的RAID為級別5,-n3 表示參與構建RAID5的工作

分割槽有3個,選項-x1 則表示另有一個磁碟分割槽做為備用分割槽,當三個工作分割槽
8.3 mdadm -D 檢視RAID的基本資訊

cat /proc/mdstat
8.4 mkfs.ext3 /dev/md0

8.5 mount /dev/md0 /raidmnt

mdadm /dev/md0 -a /dev/sdb1 //增加硬碟。

9./etc/crontab 每項共六個欄位

minute hour day mouth dayofweek command

minute :0-59 之間的任何數字

hour :--23 之間的任何數字 */2每隔兩個小時,23-8/2 :晚上11點到早上8點之間每兩個小時

day :1-31 之間的任何數字

month :1-12 之間的任何數字

dayofweek :0-7之間的任何數字 0或7代表週日。

0 11 4 * 1-3 :每個月的4號和週一到週四的早上11點

0 4 0 root emerge --sync && emerge -uD world

crontab -l:顯示計劃任務

crontab -r:刪除計劃任務

crontab -e :編輯crontab任務。並儲存退出

10.LVM

10.1fdisk 幾個區,在t指定8e

10.2 PV: pvcreate /dev/sdb1
pvcreate /dev/sdc1

pvdisplay :檢視

10.3 VG: vgcreate myvg1 /dev/sdb1 /dev/sdc1

vgdisplay:檢視

10.4 建立邏輯卷lv

lvcreate -l 40 -n mylv1 myvg1
lvcreate -n lvName -l 100%VG vgName -y #可以根據VG 的百分比進行大小設定
(1)建立一個指定大小的lv,並指定名字為lv_2

lvcreate -L 2G -n lv_2 vg_1

(2)建立一個佔全部卷組大小的lv,並指定名字為lv_3(注意前提是vg並沒有建立有lv)

lvcreate -l 100%VG -n lv_3 vg_1 #vg_1 為vgname

(3)建立一個空閒空間80%大小的lv,並指定名字為lv_4(常用)

lvcreate -l 80%Free -n lv_4 vg_1

lvcreate -L 90M -n mylv2 myvg1

lvdisplay :檢視

10.4 將兩個lv 格式化

mkfs.ext3 /dev/vg1/mylv1

mkfs.ext3 /dev/vg1/mylv4

10.5 掛載
mount -t type (檔案型別)

mkdir /mylv4mnt /mylv2mnt :建立兩個目錄

mount /dev/vg1/mylv1 /mylv1mnt

mount /dev/vg1/mylv2 /mylv2mnt

mount /dev/vg1/mylv4 /mylv4mnt

df -h

10.6 對邏輯卷的擴容

線上擴容 lvresize -L +數字M lv的名字(/dev/myvg1/mylv1)

未掛載擴容 lvextend -L +數字M lv的名字

10.7 vg的擴容

partprobe

pv create /dev//sdb3

vgcreate myvg1 /dev/sdb3

10.8 建立在raid5上的lvm

先格式化分割槽
raid 基礎上建立lv

mdadm -C /dev/md0 -l5 -n3 /dev/sd[b-e]1

pvcreate /dev/md0

vgcreate vg1 /dev/md0

lvcreate -L 300M -n mylv4 vg1

lvcreate -l 40 -n mylv1 vg1

lv 的解除安裝
numount 掛載點
lvremove /dev/卷組名/lv的名字 解除安裝

                                             建立lvm快照

1.已存在lv為/dev/myvg1/mylv1
lvcreate -L 300M -s -n mylv1_snap /dev/myvg1/mylv1 :-s選項表示建立快照,後面的引數是快照的名稱(mylv1_snap)。\

2.lvm快照應用
mount /dev/myvg1/mylv1/ /mylv1mnt/
cp sample.tar /mylv1mnt

ls /mylv1mnt
將快照掛載後,快照將立即同步主儲存裝置
mount /dev/myvg1/mylv1_snap /mylv1snap

對快照中的資料進行備份
rsync -a /mylv1snap/ /backup


檢視raid資訊
cat /proc/mdstat 或者mdadm -D /dev/md0


移除raid成員
mdadm /dev/md0 -r raid的成員
新增
mdadm /dev/md0 -a raid的成員
停用
mdadm -S /dev/mdo


LVM 是一個應用於 Linux 核心的邏輯卷管理器 (Logical Volume Manager)。 使用 LVM 你可以抽象你的儲存空間,並且可以有很容易更改的“虛擬分割槽”。LVM的基本模組如下:
Physical volume (PV): 物理卷,例如一個硬碟,或一個Software RAID裝置; 硬碟的一個分割槽 (或者甚至硬碟本身或者回環檔案),在它上面可以建立卷組。It has a special header and is divided into physical extents. Think of physical volumes as big building blocks which can be used to build your hard drive.
Volume group (VG): 卷組,將一組物理卷收集為一個管理單元;Group of physical volumes that are used as storage volume (as one disk). They contain logical volumes. Think of volume groups as hard drives.
Logical volume(LV): 邏輯卷,等同於傳統分割槽,可看作便準的塊裝置,以容納檔案系統;A "virtual/logical partition" that resides in a volume group and is composed of physical extents. Think of logical volumes as normal partitions.
Physical extent (PE): 物理塊,劃分物理卷的資料塊;A small part of a disk (usually 4MB) that can be assigned to a logical Volume. Think of physical extents as parts of disks that can be allocated to any partition.
使用 LVM 你可以比正常的硬碟分割槽更容易的管理硬碟分割槽(邏輯卷)。例如,你可以:
使用卷組(VG),使眾多硬碟空間看起來像一個大硬碟。
使用邏輯卷(LV),可以建立跨越眾多硬碟空間的分割槽。
可以根據需要,對分割槽(LV)和硬碟空間(VG)進行建立、刪除、調整大小等操作。(it doesn't depend on position of the logical volumes within volume groups as with normal partitions)
Resize/create/delete partitions(LV) and disks(VG) online (filesystems on them still need to be resized, but some support online resizing)
Name your disks(VG) and partitions(LV) as you like
Create small partitions(LV) and resize them "dynamically" as they get more filled (growing must be still done by hand, but you can do it online with some filesystems)
...

1、將物理磁碟初始化為物理卷
[[email protected] /]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
[[email protected] /]# pvdisplay
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 10.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 7Ypqqf-eL1W-RtIC-2kKR-WLEr-2GqA-KevYO9

--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 10.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 2l7NBZ-7EUi-qqgo-tJD1-37RW-za×××-eQ7akQ

2、建立卷組,並把PV(物理卷)加入到卷組中
[[email protected] /]# vgcreate vg1 /dev/sdb /dev/sdc
Volume group "vg1" successfully created
[[email protected] /]# vgdisplay
--- Volume group ---
VG Name vg1
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 19.99 GB
PE Size 4.00 MB
Total PE 5118
Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19.99 GB
VG UUID ekFSpn-vSM3-aPGB-EPis-g1zk-knGO-8AwJcU
2.2 vg 新增和刪除pv
把pv加到VG中:vgextend VolGroup00 /dev/sdb

3、基於卷組建立邏輯卷
[[email protected] /]# lvcreate -n lv1 -L 1G vg1
Logical volume "lv1" created

4、為建立好的邏輯卷建立檔案系統
[[email protected] /]# mkfs.ext3 /dev/vg1/lv1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

5、把格式化好的邏輯卷掛載使用
[[email protected] /]# ll /mnt
total 0
[[email protected] /]# mount /dev/vg1/lv1 /mnt/
[[email protected] /]# ll /mnt/
total 16
drwx------ 2 root root 16384 Jan 11 23:03 lost+found
[[email protected] /]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1
ext3 1008M 34M 924M 4% /mnt
[[email protected] /]# lvdisplay
--- Logical volume ---
LV Name /dev/vg1/lv1
VG Name vg1
LV UUID GAauro-CPiL-8BKP-19rE-TKNY-0tIY-r7t0xE
LV Write Access read/write
LV Status available

open 1

LV Size 1.00 GB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

刪除邏輯卷時,注意刪除順序,先刪除LV,再刪除VG:
[[email protected] /]# lvremove /dev/vg1/lv1
Do you really want to remove active logical volume "lv1"? [y/n]: y
Logical volume "lv1" successfully removed
[[email protected] /]# vgremove /dev/vg1
Volume group "vg1" successfully removed
[[email protected] /]# vgdisplay
[[email protected] /]# lvdisplay

增加vg 中pv

邏輯卷
注意: 雖然lvextend和lvreduce可以實現lvresize特定選項實現的功能,且他們都有一個-r, --resizefs選項允許檔案系統利用fsadm(8)(支援ext2, ext3, ext4, ReiserFS和XFS)同步調節其大小。但除非你要對整個過程有更加精確的控制,直接使用lvresize輔以--resizefs選項來完成所有工作比較簡便。
使用lvresize增加或縮小容量
警告: 雖然即便是對根分割槽,增加檔案系統大小一般都可以線上完成(即檔案系統已經被掛載),縮小其大小往往要求首先解除安裝檔案系統以避免資料丟失。請首先確定你的檔案系統支援相關操作。
為了向邏輯組vg1中的邏輯卷lv1增加2GB空間但並不修改其檔案系統,執行:

lvresize -L +2G vg1/lv1

而從邏輯組vg1/lv1中減少500MB空間但並不修改其檔案系統大小(需要確保檔案系統已經縮小過),執行:

lvresize -L -500M vg1/lv1

設定vg1/lv1為15GB並同時更改其檔案系統大小:

lvresize -L 15G -r vg1/lv1

注意: 僅支援ext2, ext3, ext4, ReiserFS and XFS file systems。如果使用不同檔案系統請使用合適的元件。
如果想將所有可用空間都加入一個卷組,可以執行:

lvresize -l +100%FREE vg/lv

查閱man lvresize可見詳細說明。
單獨設定檔案系統大小
如果在執行lv{resize,extend,reduce}時沒有使用-r, --resizefs選項, 或檔案系統不支援fsadm(8)(如Btrfs, ZFS等),則需要在縮小邏輯卷之前或擴增邏輯卷後手動調整檔案系統大小。
警告: 並非所有檔案系統都支援無損或/且線上地調整大小。
例如對於ext2/ext3/ext4檔案系統:

resize2fs vg/lv

會將檔案系統大小擴充套件到邏輯卷支援的最大容量,而

resize2fs -M vg/lv

會將檔案系統減小到其所需的最小容量。也可以指定具體的尺寸:

resize2fs vg/lv NewSize

移除邏輯卷
警告: 在移除邏輯卷之前,請先備份好資料以免丟失!
首先,找到你所要移除的邏輯卷的名稱。你可以使用以下命令來檢視系統的所有邏輯卷:

lvs

接下來,找到你所要移除的邏輯卷的掛載點
$ lsblk
並解除安裝它:

umount /<mountpoint>

最後,使用以下命令來移除邏輯卷:

lvremove <volume_group>/<logical_volume>

例如:

lvremove VolGroup00/lvolhome

請輸入y來確定你要執行移除邏輯卷操作。
此外,請不要忘了更新/etc/fstab。
你可以再次使用lvs命令來確認你的邏輯卷已被移除。
新增物理卷(PV)到卷組(VG)中
首先建立一個新的物理卷(PV),再把卷組(VG)擴充到該物理捲上:

pvcreate /dev/sdb1

vgextend VolGroup00 /dev/sdb1

這將增加你卷組中的物理區域總數,你可以按需要將它們分配到邏輯卷中。
注意: 將分割槽表儲存在LVM所在媒體裝置是個值得借鑑的方式。對於MBR可以使用型別8e,或GPT型別8e00。
從卷組(VG)中移除分割槽
首先,分割槽中的所有資料需要被轉移到別的分割槽,幸而LVM提供了以下的簡便方式:

pvmove /dev/sdb1

如果你想指定所要轉移的目標分割槽,那麼可以把該分割槽作為pvmove的第二個引數:

pvmove /dev/sdb1 /dev/sdf1

接著,從卷組(VG)中移除物理卷(PV):

vgreduce myVg /dev/sdb1

或者把所有的空物理卷(PV)都移除掉:

vgreduce --all vg0

最後,如果你仍然想要使用該分割槽,而且不想讓LVM以為它是一個物理卷,那麼你可以執行以下命令:

pvremove /dev/sdb1

快照功能
介紹
LVM可以給系統建立一個快照,由於使用了寫入時複製(copy-on-write) 策略,相比傳統的備份更有效率。 初始的快照只有關聯到實際資料的inode的實體連結(hark-link)而已。只要實際的資料沒有改變,快照就只會包含指向資料的inode的指標,而非資料本身。一旦你更改了快照對應的檔案或目錄,LVM就會自動拷貝相應的資料,包括快照所對應的舊資料的拷貝和你當前系統所對應的新資料的拷貝。這樣的話,只要你修改的資料(包括原始的和快照的)不超過2G,你就可以只使用2G的空間對一個有35G資料的系統建立快照。
配置
你可以像建立普通邏輯卷一樣建立快照邏輯卷。

lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv

你可以修改少於100M的資料直到該快照邏輯卷空間不足為止。

mkinitcpio -g /boot/initramfs-linux.img

快照可以提供檔案系統的凍結副本,主要被用來做備份;一份需要兩小時才能完成的(快照)備份比直接備份分割槽更能保證檔案系統映像的一致性。

vg 擴容 和刪除
1、刪除
前提是lv 已經umount
移除VG成員sde
[[email protected] ~]# vgreduce sdcsdd /dev/sde #sdcsdd vg名字 ,/dev/sde 物理卷的名字
Removed "/dev/sde" from volume group "sdcsdd"
移除PV成員sde
[[email protected] ~]# pvremove /dev/sde #pv 刪除某個物理卷
Labels on physical volume "/dev/sde" successfully wiped
2、擴容
2.1 建立新的物理卷
#pvvreate /dev/sdc
2.2 擴充套件vg

vgextend myvg1 /dev/sdc

2.3 擴充套件lv
lv擴容

lvresize -l +100%FREE vg/lv #vg/lv lv 的名字

指令碼化建立並掛載lvm
#!/bin/bash
#auth:sean
#2015-10-10

lvmCrInit()
{

#建立lvm

diskName=$1 #選擇硬碟
diskSe=$2 #選擇硬碟
pvcreate $diskName
pvName=$(pvdisplay |grep "PV Name"|grep "$diskSe"|awk '{ print$3 }')
vgName="vgData"
vgcreate $vgName $pvName
lvName="lvData"
lvcreate -n $lvName -l 100%VG $vgName -y
lvPath=$(lvdisplay |grep $lvName|grep Path|awk '{ print$3 }')
#格式化
mkfs.xfs -f $lvPath
mouPath="/data"
mkdir -p $mouPath
mount $lvPath $mouPath
mouLable=$(mount |grep $lvName |awk '{ print$1 }')
#cp /etc/fstab /etc/fstabbak
cat >> /etc/fstab <<EOF
$mouLable $mouPath xfs defaults 0 0
EOF

}

lvmCrInit "/dev/sdb" "sdb"