Linux系統LVM邏輯卷建立過程以及自動化指令碼
阿新 • • 發佈:2018-12-21
最近在上海新建機房的時候,給了我 2 臺 M2 機型伺服器,在做初始化的時候發現有一堆磁碟:
12345678910111213 | [root@Centos64:~]# fdisk -l | grep '300.1 GB' | sortDisk/dev/sda:300.1GB,300069052416bytesDisk/dev/sdb:300.1GB,300069052416bytesDisk/dev/sdc:300.1GB,300069052416bytesDisk/dev/sdd:300.1GB,300069052416bytesDisk/dev/sde:300.1GB,300069052416bytesDisk/dev/sdf:300.1GB,300069052416bytesDisk/dev/sdg |
其中掛載的只有 /dev/sda,其他都在那閒著。運管那邊告訴我這個機型不能做 raid。而根據我這邊的業務需求,我並不能一次用到這麼多分割槽,所以必須使用 LVM 合併使用。
關於 LVM 的建立,目前網路上一堆詳細教程,用起來也非常簡單,這裡就只貼一下我的過程。
①、用 fdisk 給每一個磁碟建立一個 8e 分割槽:
1234567891011121314151617181920212223242526 | [root@Centos64:~]# fdisk /dev/sdbThe device presentsalogical sector size that issmaller thanthe physical sector size.Aligning toaphysical sector(oroptimalI/O)size boundary isrecommended,orperformance may be impacted.WARNING:DOS-compatible mode isdeprecated.It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').Command(mforhelp):n#建立Command actioneextendedpprimary partition(1-4)p#選擇主分割槽Partition number(1-4):1First cylinder(1-36481,default1):1Last cylinder,+cylindersor+size{K,M,G}(1-36481,default36481):#直接回車選擇最大Using defaultvalue36481Command(mforhelp):t#輸入t進入型別選擇Selected partition1Hex code(typeLtolist codes):8e#輸入8e格式Changed system type of partition1to8e(Linux LVM)Command(mforhelp):w#w儲存 |
這樣就完成了一塊磁碟,接著我們依次將其他 sdc 到 sdl 的磁碟也操作一把。
②、全部完成後,使用 pvcreate 將所有分割槽轉化成物理卷,即新增 LVM 屬性資訊並劃分 PE 儲存單元:
12345678910111213 | [root@Centos64:~]# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1Physical volume"/dev/sdb1"successfully createdPhysical volume"/dev/sdc1"successfully createdPhysical volume"/dev/sdd1"successfully createdPhysical volume"/dev/sde1"successfully createdPhysical volume"/dev/sdf1"successfully createdPhysical volume"/dev/sdg1"successfully createdPhysical volume"/dev/sdh1"successfully createdPhysical volume"/dev/sdi1"successfully createdPhysical volume"/dev/sdj1"successfully createdPhysical volume"/dev/sdk1"successfully createdPhysical volume"/dev/sdl1"successfully created |
建立完 PV 之後,就可以使用 pvdisplay 或 pvs 檢視詳細資訊了,篇幅有限,這裡我就不貼了。
③、下面我們需要建立一個 VG,然後 PV 都加入到這個卷組當中,卷名可自定義,比如 vg:
123 | [root@Centos64:~]# vgcreate vg /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1Volume group"vg"successfully created |
同樣,在建立好 VG 以後,我們也可以使用 vgdisplay 或者 vgs 命來來檢視 VG 的資訊(略)
④、接著,使用 lvcreate 命令基於 VG 建立邏輯卷,vg 和 lvm 我們自定義的名稱:
123 | [root@Centos64:~]# lvcreate -l 100%VG -n lvm vgLogical volume"lvm"created |
同樣我們可以使用 lvdisplay 或者 lvs 命令來檢視建立好的邏輯卷的資訊(略)
⑤、格式化建立的邏輯卷:
1 | [root@Centos64:~]# mkfs.ext4 /dev/vg/lvm |
⑥、掛載分割槽:
12345678910 | [root@Centos64:~]# mkdir /data[root@Centos64:~]# echo '/dev/vg/lvm /data ext4 noatime,acl,user_xattr 1 2' >> /dev/fstab[root@Centos64:~]# mount -a[root@Centos64:~]# df -hFilesystem Size Used Avail Use%Mounted on/dev/sda19.9G2.1G7.4G22%//dev/sda320G370M19G2%/usr/localtmpfs16G016G0%/dev/shm/dev/sda4244G205M232G1%/data1/dev/mapper/vg-lvm3.1T932M3.0T1%/data |
這樣,我們就完成了 LVM 的手工建立過程了,我還有一臺 M2 要弄,而且聽運管說以後會繼續交付這類機型,我可不想這麼苦逼的操作了,光那個建立 8e 格式分割槽就已經很坑了。
所以,就將上面的操作串成指令碼,一鍵完成:
Shell12345678910111213141516171819202122232425262728293031 | #!/bin/bashpartition=/data# 定義最終掛載的名稱vgname=vg# 定義邏輯卷組的名稱lvname=lvm# 定義邏輯卷的名稱code='b c d e f g h i k j l'# 根據分割槽的實際情況修改disk=foriin$codedofdisk/dev/sd$i<<EOF# 這裡自動化完成了所有分割槽fdisk苦逼的互動步驟np11t8ewEOFdisk="$disk /dev/sd${i}1"# 將所有分割槽拼起來donepvcreate$diskvgcreate$vgname$disklvcreate-l100%VG-n$lvmname$vgnamemkfs.ext4/dev/$vgname/$lvmnamemkdir-p$partitionecho"/dev/$vgname/$lvmname$partitionext4 noatime,acl,user_xattr12'>>/dev/fstabmount-adf-h |
哦了,就寫這麼多,以備後用。