一、什麼是LVM?
LVM(Logical Volume Manager)邏輯卷管理,是一種將一個或多個硬盤的分區在邏輯上集合,相當於一個大硬盤來使用,當硬盤的空間不夠使用的時候,可以繼續將其它的硬盤的 分區加入其中,這樣可以實現一種磁盤空間的動態管理,相對於普通的磁盤分區有很大的靈活性,使用普通的磁盤分區,當一個磁盤的分區空間不夠使用的時候,可 能就會帶來很大的麻煩。使用LVM在一定程度上就可以解決普通磁盤分區帶來的問題。
dm模塊:device mapper 設備映射組件,能夠將一個或者多個底層設備組織成一個邏輯設備的模塊。
二、 LVM基本術語
前面談到,LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來爲文件系統屏蔽下層磁盤分區佈局,提供一個抽象的盤卷,在盤捲上建立文件系統。首先我們討論以下幾個LVM術語:
物理存儲介質(The physical media):這裏指系統的存儲設備:硬盤,如:/dev/hda1、/dev/sda等等,是存儲系統最低層的存儲單元。
物理卷(physical volume):物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組(Volume Group):LVM卷組類似於非LVM系統中的物理硬盤,其由物理卷組成。可以在卷組上創建一個或多個“LVM分區”(邏輯卷),LVM卷組由一個或多個物理卷組成。
邏輯卷(logical volume):LVM的邏輯卷類似於非LVM系統中的硬盤分區,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
PE(physical extent):每一個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。
LE(logical extent):邏輯卷也被劃分爲被稱爲LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,並且一一對應。
由N個磁盤可以組成一個很大的空間VG1,然後從VG1上面劃分需要使用的分區。
1. PV(Physical Volume):物理卷,處於LVM最底層,可以是物理硬盤或者分區,如上圖所示: 幾個LV建立在VG上,VG建立在PV之上,PV是物理卷,可以是整塊硬盤或者硬盤分區。
2.VG(Volume Group):卷組,建立在PV之上,可以含有一個到多個PV。
3.LV(Logical Volume):邏輯卷,建立在VG之上,相當於原來分區的概念。
1、查看系統中新增加的硬盤
[root@ads3 ~]# fdisk -l
2、在/dev/sdb上劃分4個10G分區備用這裏分區格式需要調整爲8e 【8e Linux LVM 】
分別是sdb1,sdb5,6,7
[root@ads3 ~]# fdisk -l /dev/sdb Disk /dev/sdb: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x2838e1c6 Device Boot Start End Blocks Id System /dev/sdb1 1 1306 10490413+ 8e Linux LVM /dev/sdb2 1307 13054 94365810 5 Extended /dev/sdb5 1307 2612 10490413+ 8e Linux LVM /dev/sdb6 2613 3918 10490413+ 8e Linux LVM /dev/sdb7 3919 5224 10490413+ 8e Linux LVM
3.介紹pv管理工具
pvs 簡要pv信息顯示
pvdisplay 顯示PV的詳細信息
pvcreate /dev/device
創建PV,查看PV,查看PV的詳細信息
[root@ads3 ~]# pvcreate /dev/sdb7
[root@ads3 ~]# pvdisplay
如果想查看某個具體的pv,可以 pvdisplay /dev/sdb7
4 VG的管理工具
vgs 可以簡要顯示所有卷組
vgdisplay 可以顯示詳細信息
vgcreate 創建vg
創建vg,查看vg
[root@ads3 ~]# vgcreate myvg /dev/sdb7 [root@ads3 ~]# vgdisplay myvg --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 1 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 1 Act PV 1 VG Size 10.00 GiB PE Size 4.00 MiB Total PE 2560 Alloc PE / Size 0 / 0 Free PE / Size 2560 / 10.00 GiB VG UUID IqtLDN-aRmA-Wmzc-6EYw-GooA-fcz6-6JUFzg 這裏可以看到 PE的大小爲4M,此時再查看pv狀態,發現PE的大小就已經確定
[root@ads3 ~]# pvdisplay /dev/sdb7 --- Physical volume --- PV Name /dev/sdb7 VG Name myvg PV Size 10.00 GiB / not usable 4.54 MiB Allocatable yes PE Size 4.00 MiB Total PE 2560 Free PE 2560 Allocated PE 0 PV UUID SXyy1i-qb1j-ixlk-Q1js-RPT8-CaWN-WWhmBt
通過使用命令pvs發現我們已經創建了三個pv
[root@ads3 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sdb7 myvg lvm2 a--u 10.00g 10.00g /dev/sdb8 lvm2 ---- 3.01g 3.01g /dev/sdb9 lvm2 ---- 20.01g 20.01g
現在我們擴展下VG的大小,並查看發現myvg已經變大
[root@ads3 ~]# vgextend myvg /dev/sdb8 [root@ads3 ~]# vgdisplay myvg
移除pv,使用命令pvmove 命令如: pvmove /dev/sdb8,然後再vgreduce myvg 、dev/sdb8,從VG當中移除,此命令在生產環境中操作極具風險性,所以不再演示操作,也不建議大家以後操作
LV管理工具
lvs
lvdisplay
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
在myvg當中創建一個mylv,指定大小爲11.3G 指定名字爲mylv
[root@ads3 ~]# lvcreate -L 11.3G -n mylv myvg
創建完成lv之後就可以像軟raid分區一樣,格式化掛載使用了
[root@ads3 ~]# mkfs -t ext4 -b 2048 -L mylv /dev/myvg/mylv
創建目錄並將mylv掛載
[root@ads3 mapper]# mkdir /backup003 [root@ads3 mapper]# mount /dev/mapper/myvg-mylv /backup003
進入目錄,然後下載兩個文件並查看
[root@ads3 mapper]# cd /backup003 [root@ads3 backup003]# wget http://down1.chinaunix.net/distfiles/httpd-2.2.0.tar.bz2 [root@ads3 backup003]# wget http://down1.chinaunix.net/distfiles/nginx-1.2.5.tar.gz [root@ads3 backup003]# ls httpd-2.2.0.tar.bz2 lost+found nginx-1.2.5.tar.gz
擴展邏輯卷 lvextend -L [+][mMgGtT] /dev/VG_NAME/LV_NAME
[root@ads3 backup003]# vgextend myvg /dev/sdb9 Volume group "myvg" successfully extended [root@ads3 backup003]# vgdisplay --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size 33.02 GiB PE Size 4.00 MiB Total PE 8452 Alloc PE / Size 2893 / 11.30 GiB Free PE / Size 5559 / 21.71 GiB VG UUID IqtLDN-aRmA-Wmzc-6EYw-GooA-fcz6-6JUFzg
將lv擴展到20G的大小
[root@ads3 backup003]# lvextend -L 20G /dev/mapper/myvg-mylv Size of logical volume myvg/mylv changed from 11.30 GiB (2893 extents) to 20.00 GiB (5120 extents). Logical volume mylv successfully resized.
擴展lv首先是lv的大小擴展,然後是文件系統的擴展,即先修改物理便捷,在修改邏輯邊界
[root@ads3 backup003]# resize2fs /dev/mapper/myvg-mylv
然後進行解除掛載,重新掛載
[root@ads3 ~]# umount /dev/mapper/myvg-mylv [root@ads3 ~]# mount /dev/mapper/myvg-mylv /backup003
然後可以看到目錄大小已經改變
[root@ads3 ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/sda2 48G 1.7G 44G 4% / tmpfs 931M 0 931M 0% /dev/shm /dev/sda1 1.9G 76M 1.8G 5% /boot /dev/sda3 20G 44M 19G 1% /data /dev/mapper/myvg-mylv 20G 20M 19G 1% /backup003
縮減邏輯卷,危險性較大,不建議操作,不允許聯機進行的
1 umount /dev/VG_NAME/LV_NAME
2 做文件系統檢測 e2fsck -f /dev/VG_NAME/LV_NAME
3 修改其邏輯邊界,resize2fs /dev/mapper/myvg-mylv #[mMgGtT] 並指明縮減至多大
4 lvreduce -L [-] ##[mMgGtT] /dev/mapper/myvg-mylv
5 mount /dev/mapper/myvg-mylv /backup003
示例:
[root@ads3 ~]# umount /dev/mapper/myvg-mylv [root@ads3 ~]# e2fsck -f /dev/mapper/myvg-mylv e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information mylv: 13/1310720 files (0.0% non-contiguous), 207882/10485760 blocks [root@ads3 ~]# resize2fs /dev/mapper/myvg-mylv 12G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/mapper/myvg-mylv to 6291456 (2k) blocks. The filesystem on /dev/mapper/myvg-mylv is now 6291456 blocks long. [root@ads3 ~]# lvreduce -L 12G /dev/mapper/myvg-mylv WARNING: Reducing active logical volume to 12.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce myvg/mylv? [y/n]: y Size of logical volume myvg/mylv changed from 20.00 GiB (5120 extents) to 12.00 GiB (3072 extents). Logical volume mylv successfully resized. [root@ads3 ~]# mount /dev/mapper/myvg-mylv /backup003 [root@ads3 ~]# cd /backup003 [root@ads3 backup003]# ls httpd-2.2.0.tar.bz2 lost+found nginx-1.2.5.tar.gz
文件系統掛載使用: 掛載光盤設備,光盤設備文件是/dev/sr0,而符號鏈接文件一般爲 /dev/cdrom
[root@ads3 ~]# mount -o ro /dev/sr0 /mnt 以只讀的方式掛載光驅,卸載光驅文件系統 umount /dev/sr0
dd命令的使用,用法是 dd if = 源文件 of = 目標文件 ;bs 複製單元大小,count= n 複製多少個bs
實例如下:
[root@ads3 ~]# dd if=/etc/fstab of=/tmp/fstab2 bs=1 count=10
備份mbr [root@ads3 ~]# dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破壞MBR [root@ads3 ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
兩個特殊設備:
/dev/null 數據黑洞 /dev/zero 字符製造
一種掛載光盤鏡像文件的合理方式:
步驟說明:
1 下載光盤鏡像至backup003目錄;
2 查看目錄下的鏡像文件
3 掛載鏡像文件至/mnt下
4 查看
[root@ads3 backup003]# wget --2018-02-26 15:31:30-- http://mirrors.163.com/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso Resolving mirrors.163.com... 59.111.0.251 Connecting to mirrors.163.com|59.111.0.251|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 4521459712 (4.2G) [application/octet-stream] Saving to: “CentOS-7-x86_64-DVD-1708.iso” 100%[=================================================================================================================>] 4,521,459,712 10.7M/s in 6m 45s 2018-02-26 15:38:15 (10.7 MB/s) - “CentOS-7-x86_64-DVD-1708.iso” saved [4521459712/4521459712] [root@ads3 backup003]# ls CentOS-7-x86_64-DVD-1708.iso httpd-2.2.0.tar.bz2 lost+found nginx-1.2.5.tar.gz [root@ads3 backup003]# mount CentOS-7-x86_64-DVD-1708.iso /mnt -o loop [root@ads3 backup003]# cd /mnt [root@ads3 mnt]# ls CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL [root@ads3 mnt]# ll total 664 -rw-rw-r--. 3 root root 14 Sep 5 13:25 CentOS_BuildTag drwxr-xr-x. 3 root root 2048 Sep 5 13:36 EFI -rw-rw-r--. 3 root root 227 Aug 30 14:33 EULA -rw-rw-r--. 3 root root 18009 Dec 9 2015 GPL drwxr-xr-x. 3 root root 2048 Sep 5 13:46 images drwxr-xr-x. 2 root root 2048 Sep 5 13:36 isolinux drwxr-xr-x. 2 root root 2048 Sep 5 13:36 LiveOS drwxrwxr-x. 2 root root 641024 Sep 4 22:05 Packages drwxr-xr-x. 2 root root 4096 Sep 5 13:43 repodata -rw-rw-r--. 3 root root 1690 Dec 9 2015 RPM-GPG-KEY-CentOS-7 -rw-rw-r--. 3 root root 1690 Dec 9 2015 RPM-GPG-KEY-CentOS-Testing-7 -r--r--r--. 1 root root 2883 Sep 6 10:51 TRANS.TBL