admin管理员组

文章数量:1573682

目录

一、认识磁盘

1、什么是磁盘:

2、磁盘运行机理:

3、磁盘的扇区、磁道、柱面:

4、磁盘的分类:

​​

二:磁盘分区

1、为什么要分区

2、分区格式:

 3、磁盘分区工具:

4、MBR分区

fdisk工具:常用命令含义

fdisk创建分区:

5、GPT分区

gdisk创建分区

四 :格式化制作文件系统与挂载 

挂载与卸载: 以/dev/sdb2 为例子演示

开启开机自动挂载

补充:磁盘挂载mount

五:制作swap分区

六:Dell R740服务器配置RAID5+1

七:修复服务器文件系统:

八:xfs文件系统备份与回复

九:LVM

为什么要用lvm

什么是lvm 

 lvm优缺点总结:

LVM使用:

动态在线扩容:


一、认识磁盘

1、什么是磁盘:

磁盘(disk)是指利用磁记录技术存储数据的存储器。
磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。
磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写。绝大多数磁盘被永久封存在一个密封的盒子里。

2、磁盘运行机理:

简单来说就是多个盘片之间靠主轴连接,电机带动主轴做旋转运动,通过多个磁头臂的摇摆和磁盘的旋转,磁头就可以在磁盘旋转的过程中就读取到磁盘中存储的各种数据
 

3、磁盘的扇区、磁道、柱面:

1、磁道:磁盘的每个盘面被划分为许多同心圆,这些同心圆的轨道叫做磁道。每个盘面可以划分多个磁道 Track。但是肉眼不可见。 
2、扇区:一个盘面划分为若干个内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区。每个扇区中的数据作为一个单元同时被读入或写入。每一个扇区是512字节,其中有64个字节存储的是分区表,一条分区信息占16个字节。硬盘出厂时候会对磁盘进行一次低级格式化,会将每个磁道划分为多个圆弧,每个圆弧段称为扇区Sector, 扇区是数据存储的基本物理单位,每个扇区大小512bytes。 
3、柱面:每一个盘片同一大小的同心圆可以看成连在一起的柱面,磁盘在分区的时候最小单位是柱面,每一个盘片的上下面都可以读取数据,每一个磁头,不可以跨盘面读取数据。简单来说就是处于同一个垂直区域的磁道称为柱面 ,即各盘面上面相同位置磁道的集合。这样数据如果存储到相同半径磁道上的同一扇区,这样可以实现并行读取,主要是减少磁头寻道时间。两个柱面之间的扇区称为一个分区。 
4、盘片 硬盘一般有一个或多个盘片,每个盘片可以有两面,即第一个盘片的正面为0面,反面为1面然后依次类推。 
5、平均寻道时间 7200转/60s的硬盘 120转/s 机械手臂找到磁道大概需要5ms 
7、平均延迟时间 转半圈4ms 大概需要 所以机械磁盘慢就是慢在找数据 = 平均寻道时间+平均延迟时间
8、磁头读取磁道上面的金属块,主要负责读或写入数据。

4、磁盘的分类:

(1)IDE磁盘:特点价格低廉,兼容性强,性价比高,数据传输慢,不支持热插拔等等。
(2)SCSI磁盘:传输速率高,读写性能好,运行稳定,可连接多个设备。可支持热插拔,占用CPU低,但是价格相对来说比较贵,一般用于工作站或服务器上。
(3)SATA磁盘:结构简单、支持热插拔
(4)USB
(5)MSATA
(6)M.2
其中IDE的磁盘的文件名为          /dev/hd[a-d]
而SCSI、SATA、USB的磁盘文件名为    /dev/sd[a-p]
 

 

二:磁盘分区

主分区-->扩展分区-->逻辑分区。

1、逻辑分区属于扩展分区,扩展分区属于主分区

2、主分区又叫做引导分区,是可以安装系统的分区

 

1、为什么要分区

1、为什么要分区
(1)易于管理和使用:
比如说我们把磁盘分了sda1、sda2、sda3、sda4盘,我们假设sda1盘为系统盘,其他的比如说游戏、办公、软件盘,这样我们要重新分哪个区就直接在对应的盘分就可以了,不需要整块磁盘进行分区。根据用途我们也能较快的去使用相应的磁盘。

(2)有利于数据的安全:
通过分区可以降低数据损失的风险。出现硬盘坏道、错误操作、重装系统都有可能造成数据损失,如果分区了,那么我们就可以将损失最小化。

(3)节约寻找文件的时间:
这个我觉得跟第一条比较像,但是这里所说的寻找文件的时间,是指电脑搜索文件的时间。分区以后,电脑搜索文件时只需要在相对应的分区搜索就可以了,没必要进行全盘搜索。大大节省了寻找文件的时间。

2、分区格式:

磁盘的常见分区格式:MBR分区和GPT分区:
	
MBR 分区,MBR 的意思是 "主引导记录"。MBR 最大支持 2TB 容量,在容量方面存在着极大的瓶颈。
            MBR分区最多可以分4个分区

GPT 分区,GPT 意为 GUID 分区表,它支持的磁盘容量比 MBR 大得多。
这是一个正逐渐取代 MBR 的新标准,它是由 UEFI 辅住而形成的,将来 UEFI 用于取代老旧的 BIOS,而 GPT 则取代老旧的 MBR。
        GPT分区最多可以分128个分区

 3、磁盘分区工具:

磁盘分区工具:
fdisk工具用于 MBR格式
gdis工具用于 GPT格式

4、MBR分区

操作步骤如下:
命令:fdisk
		
		fdisk分区:
			1、最多只有4个分区
				
			2、  第一步:创建分区
					fdisk /dev/sdb
					
					n : 创建一个分区
					d : 删除一个分区
					p : 打印分区列表
					w : 写入磁盘
				第二步:保存分区
					w : 写入磁盘

			3、制作文件系统
				mkfs.xfs  /dev/sdb1
				
			4、挂载使用
				mount /dev/sdb1 /opt

			5、查看
				lsblk

具体操作极其解释:查看分区详情,和分区情况

查看分区详情,和分区情况
[root@test ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0  512M  0 part /boot
└─sda2            8:2    0 99.5G  0 part 
  ├─centos-root 253:0    0   99G  0 lvm  /
  └─centos-swap 253:1    0  512M  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk 
sr0              11:0    1 1024M  0 rom  
[root@test ~]# lsblk /dev/sda
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0  512M  0 part /boot
└─sda2            8:2    0 99.5G  0 part 
  ├─centos-root 253:0    0   99G  0 lvm  /
  └─centos-swap 253:1    0  512M  0 lvm  [SWAP]
[root@test ~]# 
[root@test ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb    8:16   0  10G  0 disk 

fdisk工具:常用命令含义


适用于磁盘小于2T的磁盘,分区类型MBR,主分区4或者主分区3+扩展分区,分区后需要保存才能生效。

# fdisk /dev/sdb
Command (m for help): m #输入m列出常用的命令
 
Command action
a toggle a bootable flag     #切换分区启动标记 
b edit bsd disklabel     #编辑sdb磁盘标签
c toggle the dos compatibility flag     #切换dos兼容模式
d delete a partition     #删除分区
l list known partition types     #显示分区类型
m print this menu     #显示帮助菜单
n add a new partition     #新建分区
o create a new empty DOS partition table #创建新的空白分区表
p print the partition table     #显示分区表的信息
q quit without saving changes     #不保存退出
s create a new empty Sun disklabel     #创建新的Sun磁盘标签
t change a partitions system id         #修改分区ID,可以通过l查看id
u change display/entry units     #修改容量单位,磁柱或扇区
v verify the partition table     #检验分区表
w write table to disk and exit     #保存退出
x extra functionality (experts only)     #拓展功能


n  #新建分区
p  #显示分区表的信息
d  # 删除一个已有的分区,保存退出后需要执行partprobe命令刷新一下分区表
w    #保存退出

fdisk创建分区:

# fdisk /dev/sdb 
欢迎使用 fdisk (util-linux 2.23.2)。
 
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
 
Device does not contain a recognized partition table
使用磁盘标识符 0x12c57921 创建新的 DOS 磁盘标签。
 
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
 
命令(输入 m 获取帮助):p
 
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x12c57921
 
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
 
命令(输入 m 获取帮助):



#####
重复上述步骤,创建4个1G的主分区
命令(输入 m 获取帮助):p
 
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x12c57921
 
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux
/dev/sdb3         4196352     6293503     1048576   83  Linux
/dev/sdb4         6293504     8390655     1048576   83  Linux



####
之后再创建新的分区就会失败。即使有足够的空间。


命令(输入 m 获取帮助):
命令(输入 m 获取帮助):n
If you want to create more than four partitions, you must replace a
primary partition with an extended partition first.
 
命令(输入 m 获取帮助):


#####
删除主分区4,把剩余的空间都给他
命令(输入 m 获取帮助):d  # 删除主分区4
分区号 (1-4,默认 4):4
分区 4 已删除
 
命令(输入 m 获取帮助):p  # 查看
 
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x12c57921
 
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux
/dev/sdb3         4196352     6293503     1048576   83  Linux
 
命令(输入 m 获取帮助):n  # 新建扩展分区
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e  # 选择创建扩展分区
已选择分区 4
起始 扇区 (6293504-41943039,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039): # 直接回车,剩余空间都给它
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 17 GiB
 
命令(输入 m 获取帮助):p # 查看
 
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x12c57921
 
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux
/dev/sdb3         4196352     6293503     1048576   83  Linux
/dev/sdb4         6293504    41943039    17824768    5  Extended
 
命令(输入 m 获取帮助): w  # 保存


#######
查看sdb分区。
[root@test ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  10G  0 disk 
├─sdb1   8:17   0   1G  0 part 
├─sdb2   8:18   0   1G  0 part 
├─sdb3   8:19   0   1G  0 part 
└─sdb4   8:20   0   1K  0 part 


5、GPT分区

# 需要安装命令
[root@egon ~]# yum install gdisk -y
 
[root@egon ~]# gdisk /dev/sdc
......
Command (? for help): m
b    back up GPT data to a file                            #将GPT数据备份到文件中
c    change a partition's name                            #更改分区的名称
d    delete a partition                                    #删除分区
i    show detailed information on a partition            #显示分区的详细信息
l    list known partition types                            #列出已知的分区类型
n    add a new partition                                    #添加一个新的分区
o    create a new empty GUID partition table (GPT)        #创建一个新的空GUID分区表(GPT)
p    print the partition table                            #打印分区表
q    quit without saving changes                            #没有保存更改就退出
r    recovery and transformation options (experts only)    #恢复和转换选项(仅限专家使用)
s    sort partitions                                        #年代分类分区
t    change a partition's type code                        #不要更改分区的类型代码
v    verify disk                                            #验证磁盘
w    write table to disk and exit                        #将表写入磁盘并退出
x    extra functionality (experts only)                    #额外功能(仅限专家使用)
?    print this menu                                        #打印菜单

gdisk创建分区

Command (? for help): n  # 新建
Partition number (1-128, default 1):  # 直接回车,默认分区号为1
First sector (34-5242879966, default = 2048) or {+-}size{KMGTP}: #直接回车,使用默认的起始位置
Last sector (2048-5242879966, default = 5242879966) or {+-}size{KMGTP}: +1G # 设定1G的空间
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L  # 列出所有文件系统
......会看到一系列文件系统信息,默认的8300编号代表Linux filesystem,用它就好
Hex code or GUID (L to show codes, Enter = 8300):  # 直接回车用默认8300就好
Changed type of partition to 'Linux filesystem'
 
Command (? for help): p  # 打印查看
......
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
 
Command (? for help): w  # 保存
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
 
Do you want to proceed? (Y/N): y  # 输入y保存
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.

四 :格式化制作文件系统与挂载 

磁盘必须格式化文件系统才能挂载使用

针对一个硬盘 /dev/sdb
可以不分区,直接格式化制作文件系统。

mkfs.xfs /dev/sdb



也可以基于MBR或者GPT分区方式完毕后,针对某一分区,比如/dev/sdb2制作文件系统。
[root@test ~]#  mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

centos7选择xfs格式作为默认文件系统,而且不再使用以前的ext,仍然支持ext4,xfs专为大数据产生,每个单个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump,xfsrestore来备份和恢复。

挂载与卸载: 以/dev/sdb2 为例子演示

[root@test ~]# mkdir /opt2
[root@test ~]# ls
2.sh  anaconda-ks.cfg  date  file2  init.sh  nginx-1.8.0  nginx-1.8.0.tar.gz  passwd
[root@test ~]# mount /dev/sdb2 /opt2
[root@test ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 979M     0  979M   0% /dev
tmpfs                    991M     0  991M   0% /dev/shm
tmpfs                    991M   18M  973M   2% /run
tmpfs                    991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root   99G  2.8G   97G   3% /
/dev/sda1                509M  157M  353M  31% /boot
tmpfs                    199M     0  199M   0% /run/user/0
/dev/sdb2               1014M   33M  982M   4% /opt2


卸载
umount /dev/sdb1 # 或者umount /opt
[root@test ~]# umount /dev/sdb2
[root@test ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 979M     0  979M   0% /dev
tmpfs                    991M     0  991M   0% /dev/shm
tmpfs                    991M   18M  973M   2% /run
tmpfs                    991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root   99G  2.8G   97G   3% /
/dev/sda1                509M  157M  353M  31% /boot
tmpfs                    199M     0  199M   0% /run/user/0
、


卸载
umount /dev/sdb1 # 或者umount /opt

强制卸载
umount -l /dev/sdb1 # 或者umount -l /opt

思考

1、往目录/opt 下新建的文件存到了哪里 ?
2、卸载/opt 后,数据是否存在    [root@localhost ~]# mkfs.xfs -f /dev/sdb1  # 强制重新格式化,需要加-f
2、重新格式化/dev/sdb2后,数据是否依然存在?
4、同一个分区/文件系统挂载到不同的文件夹下,数据来源是否一致?

开启开机自动挂载

开启开机自动挂载;
方式一:将挂载命令写到文件/etc/rc.localhost
注意:centos7下/etc/rc.local 文件里配置的开机启动项不执行的解决办法。

[root@test~]# ll /etc/rc.local 
lrwxrwxrwx. 1 root root 13 7月  13 21:08 /etc/rc.local -> rc.d/rc.local
[root@test~]# ll /etc/rc.d/rc.local  # 没有执行权限,需要加上
-rw-r--r--. 1 root root 523 11月  6 15:03 /etc/rc.d/rc.local
[root@test~]# chmod +x /etc/rc.d/rc.local 


方式二:编辑文件/etc/fstab
[root@test~]# sed -i '$a /dev/sdb1 /opt xfs defaults 0 0' /etc/fstab 
[root@test~]# tail -1 /etc/fstab 
/dev/sdb1 /opt xfs defaults 0 0

补充:磁盘挂载mount

-t 指定文件系统
-a 挂载/etc/fstab中配置的所有
 
[root@egon ~]# mount -t xfs /dev/sdb1 /db1
 
可以查看到文件系统的uuid并挂载
[root@egon ~]# blkid | grep sdb1
/dev/sdb1: UUID="10a939a8-d17c-4a0f-9a89-8066ac013855" TYPE="xfs" 
[root@egon ~]# mount UUID="10a939a8-d17c-4a0f-9a89-8066ac013855" /opt
 
建议配置文件/etc/fstab用uuid
[root@egon ~]# tail -1 /etc/fstab  # 编辑文件,新增一行
UUID="10a939a8-d17c-4a0f-9a89-8066ac013855" /opt xfs defaults 0 0
[root@egon ~]# mount -a  
[root@egon ~]# df  # 查看挂载情况

五:制作swap分区

swap
####  1
查看
[root@test ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         134        1739          17         106        1710
Swap:           511           0         511

####  2
制作swap分区

[root@test ~]# fdisk /dev/sdb   #分出一个1G的硬盘空间
[root@test ~]# mkswap /dev/sdb3    # 格式化为swap  
mkswap: /dev/sdb3: warning: wiping old swap signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=c7787b57-ee2a-43d9-8e53-2640e3c23410



####  3
激活swap分区

[root@test ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         134        1738          17         106        1710
Swap:           511           0         511
[root@test ~]# swapon /dev/sdb3
[root@test ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         134        1738          17         106        1709
Swap:          1535           0        1535


#####  4
关闭swap分区

[root@test ~]# swapon -s  # 查看当前所有的swap分区
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	524284	0	-2
/dev/sdb3                              	partition	1048572	0	-3
[root@test ~]#  swapoff -a #关闭当前所有的分区
[root@test ~]# swapoff /dev/sdb3  #关闭当前某一分区
[root@test ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	524284	0	-2
[root@test ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         134        1738          17         106        1709
Swap:           511           0         511
[root@test ~]# 


#####  5
如果磁盘没有过多的分区可用,也可以通过文件增加swap空间,本质还是磁盘

[root@localhost ~]# dd if=/dev/zero of=/swap_file bs=1M count=200
[root@localhost ~]# chmod 0600 /swap_file 
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         185        1364           9         430        1598
Swap:             0           0           0
[root@localhost ~]# mkswap -f /swap_file 
[root@localhost ~]# swapon /swap_file
[root@localhost ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         222        1300           9         458        1550
Swap:           199           0         199



####  6
开机自动挂载新增的swap分区。

[root@localhost ~]# blkid | grep /dev/sdb1
/dev/sdb1: UUID="91d30c2d-2b43-40b1-b2b5-6f828c585f97" TYPE="swap" PARTUUID="d3b7649d-54aa-45eb-8bef-dccfe6915413" 
[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# tail -1 /etc/fstab 
UUID="91d30c2d-2b43-40b1-b2b5-6f828c585f97" swap                  swap    defaults        0 0

六:Dell R740服务器配置RAID5+1

https://wwwblogs/linhaifeng/articles/13921161.html

七:修复服务器文件系统:

https://blog.sholdboyedu/?p=216

八:xfs文件系统备份与回复

九:LVM

为什么要用lvm


# 如果分区设置的过大,就白白浪费了磁盘空间;
# 如果分区设置的过小,就会导致空间不够用的情况出现。
对于分区过小的问题,我们可以重新划分磁盘的分区,或者通过软连接的方式将此分区的目录链接到另外一个分区。这样做虽然能够临时解决问题,但是给管理带来了麻烦

什么是lvm 

逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。
传统分区使用固定大小分区,重新调整大小十分麻烦。
但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。
可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。
可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。
LVM并不需要重启就可以让内核知道分区的存在。
LVM使用分层结构,如下图所示。


图中顶部,首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV)。

一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷(LV)。
只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。
文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。

 通过LVM技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提过一个卷的概念,然后在这些卷上简历文件系统,:

物理卷(PV):(physical volume),把常规的磁盘设备通过pvcreate命令对其进行初始化,形成了物理卷。其实就是硬盘或分区。(面粉)

卷组(VG):(volume group),把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和。或者理解就是由一个或多个PV组成的整体。(面团)

逻辑卷(LV):(logical volume),从卷组中划分需要的空间大小出来。用户仅需对其格式化然后即可挂载使用。从VG中切割出的空间用于创建文件系统。(切成馒头)

基本单元(PE):(physical extend),分配的逻辑大小的最小单元,默认为4MB的基本块。(假设分配100MB逻辑空间,则需要创建25个PE)

 

 lvm优缺点总结:

# 优点:
# 1、可以在系统运行的状态下动态的扩展文件系统的大小。
 
# 2、文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
# 3、可以增加新的磁盘到LVM的存储池中。
# 4、可以以镜像的方式冗余重要的数据到多个物理磁盘。
# 5、可以方便的导出整个卷组到另外一台机器。
 
# 缺点:
# 1、因为加入了额外的操作,存取性能受到影响。
# 2、当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
解释:LVM如果有一个磁盘损坏,整个lvm都坏了,lvm只有动态扩展作用,
方案:底层用RAID + 上层LVM = 既有冗余又有动态扩展
 
# 2、在从卷组中移除一个磁盘的时候必须使用reducevg命令(该命令要求root权限,并且不允许在快照卷组中使用)

LVM使用:

​

下载软件包

1、yum install -y lvm2

# 制作
[root@egon ~]# pvcreate /dev/sdb1  # 对分区做
[root@egon ~]# pvcreate /dev/sdb2  # 对分区做
[root@egon ~]# pvcreate /dev/sdb3  # 对分区做
[root@egon ~]# pvcreate /dev/sdc   # 对整块盘做
 
# 查看
[root@egon ~]# pvs
  PV         VG Fmt  Attr PSize  PFree 
  /dev/sdb1     lvm2 ---   1.00g  1.00g
  /dev/sdb2     lvm2 ---   1.00g  1.00g
  /dev/sdb3     lvm2 ---   1.00g  1.00g
  /dev/sdc      lvm2 ---  20.00g 20.00g
[root@egon ~]# pvscan 
  PV /dev/sdb1                      lvm2 [1.00 GiB]
  PV /dev/sdc                       lvm2 [20.00 GiB]
  PV /dev/sdb2                      lvm2 [1.00 GiB]
  PV /dev/sdb3                      lvm2 [1.00 GiB]
  Total: 4 [23.00 GiB] / in use: 0 [0   ] / in no VG: 4 [23.00 GiB]
  
  
  ####
  制作vg:将pv划入vg中
  
  # 制作一个vg1:
[root@egon ~]# vgcreate vg1 /dev/sdb1 /dev/sdc  # 包含/dev/sdb1与/dev/sdc两个pv
  Volume group "vg1" successfully created
[root@egon ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg1   2   0   0 wz--n- 20.99g 20.99g
 
# 也可以再制作一个vg2:
[root@egon ~]# vgcreate vg2 /dev/sdb2 /dev/sdb3  # 包含/dev/sdb2与/dev/sdb3两个pv
  Volume group "vg2" successfully created
[root@egon ~]# vgs
  VG  #PV #LV #SN Attr   VSize  VFree 
  vg1   2   0   0 wz--n- 20.99g 20.99g
  vg2   2   0   0 wz--n-  1.99g  1.99g
[root@egon ~]# 


3创建逻辑卷lvm

选项
    -L    #逻辑卷大小
    -n    #逻辑卷名字
 
# 从vg1中分出来逻辑卷lv1_from_vg1、lv2_from_vg1
[root@egon ~]# lvcreate -L 100M -n lv1_from_vg1 vg1
[root@egon ~]# lvcreate -L 200M -n lv2_from_vg1 vg1
 
# 从vg2中分出来一个建逻辑卷lv1_from_vg2、lv1_from_vg2
[root@egon ~]# lvcreate -L 300M -n lv1_from_vg2 vg2
[root@egon ~]# lvcreate -L 400M -n lv2_from_vg2 vg2
 
# 查看
[root@egon ~]# lvs
  LV           VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1_from_vg1 vg1 -wi-a----- 100.00m                                                    
  lv2_from_vg1 vg1 -wi-a----- 200.00m                                                    
  lv1_from_vg2 vg2 -wi-a----- 300.00m                                                    
  lv2_from_vg2 vg2 -wi-a----- 400.00m   
 
# 把vg的100%空间都给lv
lvcreate -l 100%VG -n lv的名字 vg的名字


格式与挂载:

[root@egon ~]# mkfs.xfs /dev/vg1/lv1_from_vg1 
[root@egon ~]# mkfs.xfs /dev/vg1/lv2_from_vg1 
 
[root@egon ~]# mkfs.xfs /dev/vg2/lv1_from_vg2 
[root@egon ~]# mkfs.xfs /dev/vg2/lv2_from_vg2 
 
[root@egon ~]# mount /dev/vg1/lv1_from_vg1 /test1/
[root@egon ~]# mount /dev/vg1/lv2_from_vg1 /test2/
[root@egon ~]# 
[root@egon ~]# mount /dev/vg2/lv1_from_vg2 /test3/
[root@egon ~]# mount /dev/vg2/lv2_from_vg2 /test4/
 
# 查看
[root@egon ~]# df
文件系统                       1K-块    已用    可用 已用% 挂载点
...
/dev/mapper/vg1-lv1_from_vg1   98980    5344   93636    6% /test1
/dev/mapper/vg1-lv2_from_vg1  201380   10464  190916    6% /test2
/dev/mapper/vg2-lv1_from_vg2  303780   15584  288196    6% /test3
/dev/mapper/vg2-lv2_from_vg2  406180   20704  385476    6% /test4
[root@egon ~]# 

​

示例:

[root@test ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@test ~]# 
[root@test ~]# pvcreate /dev/sdb2
WARNING: xfs signature detected on /dev/sdb2 at offset 0. Wipe it? [y/n]: ^C  Interrupted...
  Aborted wiping of xfs.
  1 existing signature left on the device.
  Interrupted...
[root@test ~]# 
[root@test ~]# 
[root@test ~]# pvcreate /dev/sdb3
WARNING: swap signature detected on /dev/sdb3 at offset 4086. Wipe it? [y/n]: y
  Wiping swap signature on /dev/sdb3.
  Physical volume "/dev/sdb3" successfully created.
[root@test ~]# 
[root@test ~]# 
[root@test ~]# 
[root@test ~]# 
[root@test ~]# 
[root@test ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0  512M  0 part /boot
└─sda2            8:2    0 99.5G  0 part 
  ├─centos-root 253:0    0   99G  0 lvm  /
  └─centos-swap 253:1    0  512M  0 lvm  [SWAP]
sdb               8:16   0   10G  0 disk 
├─sdb1            8:17   0    1G  0 part 
├─sdb2            8:18   0    1G  0 part 
├─sdb3            8:19   0    1G  0 part 
└─sdb4            8:20   0    1K  0 part 
sr0              11:0    1 1024M  0 rom  
[root@test ~]# 
[root@test ~]# 
[root@test ~]# 
[root@test ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <99.50g    0 
  /dev/sdb1         lvm2 ---    1.00g 1.00g
  /dev/sdb3         lvm2 ---    1.00g 1.00g
[root@test ~]# 
[root@test ~]# pvscan
  PV /dev/sda2   VG centos          lvm2 [<99.50 GiB / 0    free]
  PV /dev/sdb3                      lvm2 [1.00 GiB]
  PV /dev/sdb1                      lvm2 [1.00 GiB]
  Total: 3 [<101.50 GiB] / in use: 1 [<99.50 GiB] / in no VG: 2 [2.00 GiB]
[root@test ~]# 
[root@test ~]# 
[root@test ~]# vgcteate vg1 /dev/sdb1 /dev/sdb3
-bash: vgcteate: command not found
[root@test ~]# vgcreate vg1 /dev/sdb1 /dev/sdb3
  Volume group "vg1" successfully created
[root@test ~]# 
[root@test ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <99.50g    0 
  vg1      2   0   0 wz--n-   1.99g 1.99g
[root@test ~]# 
[root@test ~]# 
[root@test ~]# lvcreate -L 100M -n 1v1_from_vg1 vg1
  Logical volume "1v1_from_vg1" created.
[root@test ~]# lvcreate -L 100M -n 1v1_from_vg1 vg1
  Logical Volume "1v1_from_vg1" already exists in volume group "vg1"
[root@test ~]# lvcreate -L 100M -n 2v1_from_vg1 vg1
  Logical volume "2v1_from_vg1" created.
[root@test ~]# 
[root@test ~]# lvs
  LV           VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root         centos -wi-ao---- <99.00g                                                    
  swap         centos -wi-ao---- 512.00m                                                    
  1v1_from_vg1 vg1    -wi-a----- 100.00m                                                    
  2v1_from_vg1 vg1    -wi-a----- 100.00m                                                    
[root@test ~]# mkfs.xfs /dev/vg1/1v1_from_vg1
meta-data=/dev/vg1/1v1_from_vg1  isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@test ~]# mkfs.xfs /dev/vg1/2v1_from_vg1
meta-data=/dev/vg1/2v1_from_vg1  isize=512    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@test ~]# 
[root@test ~]# 
[root@test ~]# ls
2.sh  anaconda-ks.cfg  date  file2  init.sh  nginx-1.8.0  nginx-1.8.0.tar.gz  passwd
[root@test ~]# mkdir /test123
[root@test ~]# 
[root@test ~]# 
[root@test ~]# mount /dev/vg1/1v1_from_vg1 /test1/
mount: mount point /test1/ does not exist
[root@test ~]# mount /dev/vg1/1v1_from_vg1 /test123/
[root@test ~]# 
[root@test ~]# 
[root@test ~]# 
[root@test ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
devtmpfs                      979M     0  979M   0% /dev
tmpfs                         991M     0  991M   0% /dev/shm
tmpfs                         991M   18M  973M   2% /run
tmpfs                         991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root        99G  2.8G   97G   3% /
/dev/sda1                     509M  157M  353M  31% /boot
tmpfs                         199M     0  199M   0% /run/user/0
/dev/mapper/vg1-1v1_from_vg1   97M  5.3M   92M   6% /test123

动态在线扩容:


再不用卸载的情况下完成扩容 

lvextend -L  [+]MGT  /dev/VG_NAME/VL_NAME
# 注意:-L 100M 与 -L +100M不是一个意思,或者代表在原有的基础上扩容


# 1、新增一块盘或者一个分区
fdisk /dev/sdb ......
partprobe
ls /dev/sdb4
 
# 2、新增一个pv
[root@egon ~]# pvcreate /dev/sdb4
 
# 3、把新增的pv扩到vg2里
[root@egon ~]# vgextend vg2 /dev/sdb4
[root@egon ~]# vgs  # 可以看到vg2扩容了
 
# 4、接下来对lv1_from_vg2扩容
[root@egon ~]# lvextend -L +1000M /dev/vg2/lv1_from_vg2 
[root@egon ~]# xfs_growfs /dev/vg2/lv1_from_vg2  # 扩展逻辑卷后需要更新fs文件系统

动态缩容:(不要缩容,容易出问题。数据无法找回)

删除:

# 删除lv之前需要先卸载挂载点
[root@egon ~]# umount /test3
[root@egon ~]# lvremove /dev/vg2/lv1_from_vg2 
 
# 删vg
[root@egon ~]# vgremove vg2
 
# 删pv:只能删掉那些不属于任何vg的pv
[root@egon ~]# pvremove /dev/sdb2
[root@egon ~]# pvremove /dev/sdb3

本文标签: 磁盘分区Linux挂载lvm