Linux LVM磁碟管理與FS掛載
背景
公司使用的伺服器一般為Linux虛擬機器(雲主機),其系統盤構成完整的Linux檔案系統,資料盤大小在申請時自己指定,但沒有被掛載到系統中。如下所示,sda、sdb構成Linux檔案系統,100G的sdc沒有掛載點。因而,有了此篇文章---Linux LVM分割槽與FS掛載。
[[email protected] mnt]<20180926 09:22:35># lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk sda 8:0 0 70G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 69G 0 part ├─VolGroup-lv_root 253:0 0 10G 0 lvm / ├─VolGroup-lv_swap 253:1 0 8G 0 lvm [SWAP] ├─VolGroup-lv_home 253:3 0 5G 0 lvm /home ├─VolGroup-lv_var 253:4 0 10G 0 lvm /var ├─VolGroup-lv_tmp 253:5 0 5G 0 lvm /tmp ├─VolGroup-lv_opt 253:6 0 10G 0 lvm /opt └─VolGroup-lv_var_crash 253:7 0 10G 0 lvm /var/crash sdb 8:16 0 30G 0 disk └─sdb1 8:17 0 30G 0 part └─VolApp-lv_app 253:2 0 30G 0 lvm /opt/app sdc 8:32 0 100G 0 disk sr0 11:0 1 1024M 0 rom
基本概念與術語
概念
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁碟分割槽進行管理的一種機制,LVM是建立在硬碟和分割槽之上的一個邏輯層,來提高磁碟分割槽管理的靈活性。通過LVM系統管理員可以輕鬆管理磁碟分割槽,如:將若干個磁碟分割槽連線為一個整塊的卷組(volumegroup),形成一個儲存池。管理員可以在卷組上隨意建立邏輯卷組(logicalvolumes),並進一步在邏輯卷組上建立檔案系統。管理員通過LVM可以方便的調整儲存卷組的大小,並且可以對磁碟儲存按照組的方式進行命名、管理和分配,例如按照使用用途進行定義:“development”和“sales”,而不是使用物理磁碟名“sda”和“sdb”。而且當系統添加了新的磁碟,通過LVM管理員就不必將磁碟的 檔案移動到新的磁碟上以充分利用新的儲存空間,而是直接擴充套件檔案系統跨越磁碟即可。
術語
1. PhysicalStorageMedia物理儲存介質
指系統的物理儲存裝置:磁碟,如:/dev/hda、/dev/sda等,是儲存系統最底層的儲存單元。
2. 物理卷(Physical Volume,PV)
指磁碟分割槽或從邏輯上與磁碟分割槽具有同樣功能的裝置(如RAID),是LVM的基本儲存邏輯塊,但和基本的物理儲存介質(如分割槽、磁碟等)比較,卻包含有與LVM相關的管理引數。
3. 卷組(Volume Group,VG)
類似於非LVM系統中的物理磁碟,其由一個或多個物理卷PV組成。可以在卷組上建立一個或多個LV(邏輯卷)。
4. 邏輯卷(Logical Volume,LV)
類似於非LVM系統中的磁碟分割槽,邏輯卷建立在卷組VG之上。在邏輯卷LV之上可以建立檔案系統(比如/home或者/usr等);
5. 物理塊(Physical Extent,PE)
每一個物理卷PV被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM定址的最小單元。PE的大小是可配置的,預設為4MB。所以物理卷(PV)由大小等同的基本單元PE組成。
6. 邏輯塊(Logical Extent,LE)
邏輯卷LV也被劃分為可被定址的基本單位,稱為LE。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
相關命令
pvcreate
- DESCRIPTION
pvcreate initializes PhysicalVolume for later use by the Logical Volume Manager (LVM). Each PhysicalVolume can be a disk partition, whole disk, meta device, or loopback file. For DOS disk partitions, the partition id should be set to 0x8e using fdisk(8), cfdisk(8), or a equivalent. For whole disk devices only the partition table must be erased, which will effectively destroy all data on that disk. This can be done by zeroing the first sector with:
dd if=/dev/zero of=PhysicalVolume bs=512 count=1
Continue with vgcreate(8) to create a new volume group on PhysicalVolume, or vgextend(8) to add PhysicalVolume to an existing volume group.
pvcreate用於初始化物理卷(包括磁碟分割槽、整個磁碟、元裝置等)以便後續的LVM(邏輯卷管理器使用)。後續使用vgcreate在物理捲上建立一個邏輯卷組,或者使用vgextend將物理卷新增到一個已存在的邏輯卷組。命令樣式:
pvcreate /dev/sdc
vgcreate
- DESCRIPTION
vgcreate creates a new volume group called VolumeGroupName using the block special device PhysicalDevicePath. If PhysicalDevicePath was not previously configured for LVM with pvcreate(8), the device will be initialized with the same default values used with pvcreate(8). If non-default pvcre-ate values are desired, they may be given on the commandline with the same options as pvcreate(8). See PHYSICAL DEVICE OPTIONS for available options. Note that the restore-related options such as --restorefile, --uuid and --physicalvolumesize are not available. If a restore operation is needed, use pvcreate(8) and vgcfgrestore(8).
vgcreate建立一個名為VolumeGroupName的新邏輯卷組,如果物理裝置路徑之前沒有被pvcreate過,本命令將以與pvcreate相同的預設引數初始化物理卷。命令樣式:
vgcreate oravg /dev/sdc;
lvcreate
- DESCRIPTION
lvcreate creates a new logical volume in a volume group (see vgcreate(8), vgchange(8)) by allocating logical extents from the free physical extent pool of that volume group. If there are not enough free physical extents then the volume group can be extended (see vgextend(8)) with other physical volumes or by reducing existing logical volumes of this volume group in size (see lvreduce(8)). If you specify one or more PhysicalVolumes, allocation of physical extents will be restricted to these volumes. The second form supports the creation of snapshot logical volumes which keep the contents of the original logical volume for backup purposes.
lvcreate通過分配邏輯擴充套件塊在邏輯卷組中建立一個新的邏輯卷。命令樣式:
lvcreate -L 20G -n lv_u01 oravg;
其中:-L(--size)指定邏輯卷組的大小;-n(--name)指定邏輯卷名;oravg為邏輯卷組名。
其他
pvdisplay
lvm
lvextend
一套完成的磁碟LVM分割槽與磁碟掛載
以下以oracle安裝教程為基礎,簡要介紹一套完整的LVM分割槽與檔案系統掛載流程,更加深入的知識需要仔細研究LVM命令集的哪些命令列選項(option)。
邏輯卷組準備
pvcreate /dev/sdc;
vgcreate oravg /dev/sdc;
建立邏輯卷
lvcreate -L 20G -n lv_u01 oravg;
lvcreate -L 80G -n lv_data oravg;
構建檔案系統
mkfs -t ext4 /dev/oravg/lv_u01;
mkfs -t ext4 /dev/oravg/lv_data;
掛載檔案系統
mkdir -p /u01;
mkdir -p /data;
mount /dev/oravg/lv_u01 /u01;
mount /dev/oravg/lv_data /data;
最總形成這樣的系統掛載圖:
[[email protected] ~]<20180926 10:08:01># lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 70G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 69G 0 part
├─VolGroup-lv_root 253:0 0 10G 0 lvm /
├─VolGroup-lv_swap 253:1 0 8G 0 lvm [SWAP]
├─VolGroup-lv_home 253:4 0 5G 0 lvm /home
├─VolGroup-lv_var 253:6 0 10G 0 lvm /var
├─VolGroup-lv_tmp 253:7 0 5G 0 lvm /tmp
├─VolGroup-lv_opt 253:8 0 10G 0 lvm /opt
└─VolGroup-lv_var_crash 253:9 0 10G 0 lvm /var/crash
sdb 8:16 0 30G 0 disk
└─sdb1 8:17 0 30G 0 part
└─VolApp-lv_app 253:5 0 30G 0 lvm /opt/app
sdc 8:32 0 180G 0 disk
├─oravg-lv_u01 253:2 0 20G 0 lvm /u01
└─oravg-lv_data 253:3 0 80G 0 lvm /data
sr0 11:0 1 1024M 0 rom
擴充套件思考:
1. 永久掛載
上面解釋的mount命令敲下去會掛載檔案系統,但是系統重啟後需要重新掛載。如何讓系統啟動後自動掛載磁碟呢?答案是:/etc/fstab檔案;
2. 剩餘空間分割
上面的邏輯卷建立時,都指定了卷大小。在實際應用中,往往前幾個卷用於特定目地,並將卷組的最後剩餘空間分配給最後一個邏輯卷,那該如何?答案是:
lvcreate --name newvol -l 100%FREE oravg
如圖:
完,感謝關注。