1. 程式人生 > >lvm 管理 與lvm 腳本化創建

lvm 管理 與lvm 腳本化創建

print 鏈接 一個 reat loop really sla mic 分區表

磁盤管理

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、將物理磁盤初始化為物理卷
[root@kashu /]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
[root@kashu /]# 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(物理卷)加入到卷組中
[root@kashu /]# vgcreate vg1 /dev/sdb /dev/sdc
Volume group "vg1" successfully created
[root@kashu /]# 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、基於卷組創建邏輯卷
[root@kashu /]# lvcreate -n lv1 -L 1G vg1
Logical volume "lv1" created

4、為創建好的邏輯卷創建文件系統
[root@kashu /]# 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、把格式化好的邏輯卷掛載使用
[root@kashu /]# ll /mnt
total 0
[root@kashu /]# mount /dev/vg1/lv1 /mnt/
[root@kashu /]# ll /mnt/
total 16
drwx------ 2 root root 16384 Jan 11 23:03 lost+found
[root@kashu /]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1
ext3 1008M 34M 924M 4% /mnt
[root@kashu /]# 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:
[root@kashu /]# lvremove /dev/vg1/lv1
Do you really want to remove active logical volume "lv1"? [y/n]: y
Logical volume "lv1" successfully removed
[root@kashu /]# vgremove /dev/vg1
Volume group "vg1" successfully removed
[root@kashu /]# vgdisplay
[root@kashu /]# 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
[root@new-host-2 ~]# vgreduce sdcsdd /dev/sde #sdcsdd vg名字 ,/dev/sde 物理卷的名字
Removed "/dev/sde" from volume group "sdcsdd"
移除PV成員sde
[root@new-host-2 ~]# 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"

lvm 管理 與lvm 腳本化創建