16-Linux磁盘管理
第x章 磁盘知识体系
第x章 硬盘介绍--了解即可
1.什么是硬盘
硬盘在计算机中的主要作用是用来存储持久化的数据。
目前主要分为机械硬盘和固态硬盘两种。
不同于内存,存储在硬盘的里的数据断电或系统重启后依然存在。
为什么有人叫硬盘为磁盘呢?
那是因为硬盘存储数据的实现方式与电磁有关,机械硬盘里有多张磁盘
2.硬盘接口分类及速率
SATA接口

SAS接口

m.2接口

PCI-E接口

速率排行
PCI-E > m.2 > SAS > SATA
接口类型        速率       价格
PCI-E NVMe     1-3G/s    最贵
m.2 NVMe       1-3G/s    最贵
SAS            300M/s    比较贵
SATA           120M/s    最便宜
3.机械硬盘相关名词
磁头(head)数:
每个盘片一般有上下两面,分别对应1个磁头,共2个磁头,实现数据的存取
磁道(track):
磁道看起来是呼啦圈:每个盘片表面以盘片中心为圆心,用于记录数据的不同半径的圆形磁化轨迹就称为磁道,磁化轨迹是磁化区域,是看不见的。磁道看起来是一个平面圆环(呼啦圈)
扇区(sector):
每个磁道都别切分成很多扇形区域,每个磁道的扇区数量相同,每个扇区大小为512字节
圆盘(platter):
就是硬盘的盘片,为实现大容量,一般都是多个。
柱面(cylinder):
不同盘片的相同编号的磁道构成的圆柱面就被称之为柱面,磁盘的柱面数与一个盘面上的磁道数是相等的,柱面看起来是一个圆柱形
4.机械硬盘基本结构--了解即可




5.固态硬盘相关名词
闪存颗粒		用于存储数据的芯片
主控芯片		用于控制信息的存储次序,维护各个闪存单元的正常运转。
NVMe           基于非易失性存储器的传输规范,此规范目的在于充分利用PCI-E通道的低延时以及并行性
SLC/MLC/TLC    存储颗粒的规格

6.固态硬盘基本结构

7.机械硬盘和固态硬盘都怕啥
机械硬盘:害怕震动
固态硬盘:害怕断电
第x章 硬盘分区-概念了解-命令掌握
1.为什么需要分区
1.不同的分区可以设置不同的文件系统
2.隔离系统和用户的程序
3.如果想安装多个系统,那么就需要不同的分区
2.硬盘和分区的关系
硬盘设备在Linux里命名格式为/dev/sdX X=a,b,c,d,e...
如果一个硬盘有多个分区,那么在设备名称后添加数字,/dev/sdaN N=1,2,3,4....
设备名称		 分区信息       分区说明
/dev/sda		/dev/sda1	  第一块硬盘的第一个分区
                /dev/sda2     第一块硬盘的第二个分区
            
/dev/sdb	    /dev/sdb1	  第二块硬盘的第一个分区
                /dev/sdb2     第二块硬盘的第二个分区
3.硬盘分区类型
MBR分区
分区特点:
1.不支持2T以上的硬盘
2.最多支持4个主分区
3.fdisk只能创建MBR分区
什么是主分区,拓展分区和逻辑分区?
主分区:
磁盘物理上的分区,一般用于安装系统和引导程序
拓展分区:
MBR分区最多只能创建4个主分区,如果想创建更多的分区只能牺牲掉一个主分区,然后创建成拓展分区,拓展分区并不是某个分区,拓展分区是逻辑分区的集合。
逻辑分区:
逻辑分区并不是物理上的分区,因为所有逻辑分区都是位于一个拓展分区,所以只是逻辑上的分区
示意图:

GPT分区
1.支持2T以上的分区
2.128个分区
3.没有主分区拓展分区逻辑分区的概念,所有分区都可以格式化
4.管理工具使用gdisk
4.工作中如何分区
工作中一般不分区,直接使用格式化整块磁盘即可。
5.硬盘分区工具
lsblk 列出块设备
命令作用:
打印出当前块设备以及分区的信息,包括大小,类型,挂载点等
命令实战:
[root@centos7 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   40G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   39G  0 part 
  ├─centos-root 253:0    0   37G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  
sdb               8:16   0   10G  0 disk 
└─sdb1            8:17   0   10G  0 part 
sr0              11:0    1  4.3G  0 rom
fdisk 管理MBR分区
命令作用:
查看以及配置MBR分区,不支持2T以上的磁盘
命令语法:
 fdisk <磁盘>    更改分区表
 fdisk -l <磁盘> 列出分区表
获取所有的交互式命令:
[root@centos7 ~]# fdisk /dev/sdb 
命令(输入 m 获取帮助):m		#输入m列出常用的命令
命令操作
   a   toggle a bootable flag						#切换分区启动标记
   b   edit bsd disklabel							#编辑磁盘标签
   c   toggle the dos compatibility flag    		#切换dos兼容模式
   d   delete a partition							#删除分区
   g   create a new empty GPT partition table		#创建新的空白GPT分区表
   l   list known partition types					#显示分区类型
   m   print this menu								#显示帮助菜单
   n   add a new partition							#新建分区
   o   create a new empty DOS partition table		#创建新的空白DOS分区表
   p   print the partition table					#显示分区表信息
   q   quit without saving changes					#不保存退出
   t   change a partition's system id				#修改分区ID
   u   change display/entry units					#修改容量单位
   v   verify the partition table					#检验分区表
   w   write table to disk and exit					#保存更改并退出
   x   extra functionality (experts only)			#额外功能,仅限专家
命令(输入 m 获取帮助):
命令实战:新添加一块10G容量的磁盘,并创建1P1E(1L)的分区
第一步: 创建主分区 1G
命令(输入 m 获取帮助):n		  #输入n表示创建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p		  #创建主分区
分区号 (1-4,默认 1):			 #指定分区号,直接回车默认为1
起始 扇区 (2048-20971519,默认为 2048):		#起始扇区,直接回车默认为2048
将使用默认值 2048
Last 扇区, +扇区 or +size\{K,M,G\} (2048-20971519,默认为 20971519):+1G		#分配容量1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
第二步: 创建拓展分区 使用所有空间
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e			#指定拓展分区
分区号 (2-4,默认 2):				#默认分区号为2
起始 扇区 (2099200-20971519,默认为 2099200):		#起始扇区
将使用默认值 2099200
Last 扇区, +扇区 or +size\{K,M,G\} (2099200-20971519,默认为 20971519):		#直接回车默认使用所有
将使用默认值 20971519
分区 2 已设置为 Extended 类型,大小设为 9 GiB
第三步:创建逻辑分区 使用所有空间
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l		#创建逻辑分区
添加逻辑分区 5						#分区号为5
起始 扇区 (2101248-20971519,默认为 2101248):		#默认使用所有
将使用默认值 2101248
Last 扇区, +扇区 or +size\{K,M,G\} (2101248-20971519,默认为 20971519):		#默认使用所有
将使用默认值 20971519
分区 5 已设置为 Linux 类型,大小设为 9 GiB
第四步:查看并保存更改
命令(输入 m 获取帮助):p			#打印分区信息
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0846706a
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200    20971519     9436160    5  Extended
/dev/sdb5         2101248    20971519     9435136   83  Linux
命令(输入 m 获取帮助):w			#保存更改并退出
The partition table has been altered!	
Calling ioctl() to re-read partition table.
正在同步磁盘
第五步:查看分区信息
[root@centos7 ~]# fdisk /dev/sdb -l
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0846706a
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200    20971519     9436160    5  Extended
/dev/sdb5         2101248    20971519     9435136   83  Linux
拓展:删除分区
[root@centos7 ~]# fdisk /dev/sdb 
命令(输入 m 获取帮助):d				#删除分区
分区号 (1,2,5,默认 5):1		     #删除1号分区
分区 1 已删除
命令(输入 m 获取帮助):d				#删除分区
分区号 (2,5,默认 5):2			 #删除2号分区
分区 2 已删除
命令(输入 m 获取帮助):p				#打印分区信息
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0846706a
   设备 Boot      Start         End      Blocks   Id  System
命令(输入 m 获取帮助):w				#将修改写入磁盘
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
gdisk 管理GPT分区
命令作用:
和fdisk一样都是分区工具,但是gdisk可以支持2T以上的磁盘。
主要用于创建GPT类型的分区。
命令语法:
gdisk device
获取所有的交互式命令:
Command (? for help): m
b       back up GPT data to a file
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)
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
命令实战:
第一步:安装工具
yum install gdisk -y
第二步:打印帮助
[root@centos7 ~]# gdisk /dev/sdb
第三步:创建分区
Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-20971486, default = 2048) or \{+-\}size\{KMGTP\}: 
Last sector (2048-20971486, default = 20971486) or \{+-\}size\{KMGTP\}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to '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
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
第五步:检查分区类型
[root@centos7 ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
#fdisk GPT支持目前是新的,因此处于试验阶段。自行决定使用
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 2F99A127-D416-4264-AB59-CB946F042E1F
#         Start          End    Size  Type            Name
 1         2048     20971486     10G  Linux filesyste Linux filesystem
parted 更强大的分区工具
⚠️警告⚠️:
parted的所有操作都是立即生效的!!! 三思而后行,小心!!!
命令作用:
比fdisk和gdisk功能更丰富的分区工具,适合大于2T以上的硬盘分区。
parted除了可以创建分区,还可以调整分区大小,以及MBR分区转换为GPT分区。
parted分为交互式和非交互式两种使用方法。
命令语法:
parted [选项]... [设备 [命令 [参数]...]...]
获取帮助说明:
[root@centos7 ~]# parted 
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) h																 #获取帮助说明
  align-check TYPE N                       #检查磁盘分区,TYPE分为min/opt,N为磁盘分区号
  mklabel,mktable LABEL-TYPE               #新建磁盘标签(分区表)
  mkpart PART-TYPE [FS-TYPE] START END     #生成分区
  name NUMBER NAME                         #为分区命令
  print [devices|free|list,all|NUMBER]     #显示分区表, 指定编号的分区, 或所有设备的分区表
  quit                                     #退出
  rescue START END                         #恢复靠近位置 START 和 END 之间的分区
  resizepart NUMBER END                    #对指定编号 NUMBER 的分区调整大小。
  rm NUMBER                                #删除指定分区
  select DEVICE                            #选择编辑的设备
  disk_set FLAG STATE                      #更改所选设备上的标志
  disk_toggle [FLAG]                       #切换所选设备上标志的状态
  set NUMBER FLAG STATE                    #更改分区号上的标志
  toggle [NUMBER [FLAG]]                   #切换分区号上的标志状态
  unit UNIT                                #设置默认单位
  version                                  #显示版本号
命令实战:交互式创建分区
第一步:删除前面实验创建的分区
[root@centos7 ~]# parted  /dev/sdb			#对/dev/sdb设备进行操作
(parted) p    #打印分区信息                                  	                        
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name              标志
 1      1049kB  10.7GB  10.7GB               Linux filesystem
(parted) rm 1  #删除1号分区
(parted) p     #打印分区信息                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start  End  Size  File system  Name  标志
第二步:创建GPT分区
(parted) mklabel            #创建新的分区表                                   
新的磁盘标签类型? gpt					#分区类型为gpt
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk
will be lost. Do you want to continue?
是/Yes/否/No? Yes 					 #警告信息确认
(parted)
第三步:创建分区 1G大小
(parted) mkpart 					 #创建新的分区
分区名称?  []? mysql       			#给分区起个名字,没有主分区或拓展分区的概念,mysql是一种数据库     
文件系统类型?  [ext2]? xfs   #文件系统格式为xfs                                 
起始点? 0                   #起始点                             
结束点? 1000                #终止点                                       
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore                                           
(parted) p                  #打印信息                                               
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt   
Disk Flags: 
Number  Start   End     Size    File system  Name     标志
 1      17.4kB  1000MB  1000MB               mysql
第四步:创建分区 使用剩下所有空间
(parted) mkpart           #创建新分区
分区名称?  []? redis       #给分区起个名字,没有主分区或拓展分区的概念,redis是一种数据库                             
文件系统类型?  [ext2]? xfs  #文件系统类型为xfs                                      
起始点? 1000               #起始点为1000M
结束点? -1					#终止点为剩下的所有空间
(parted) p                 #打印当前信息                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name     标志
 1      17.4kB  1000MB  1000MB               mysql	
 2      1000MB  10.7GB  9736MB               redis
第五步:保存退出
(parted) q                                                                
信息: You may need to update /etc/fstab.
命令实战:非交互式创建分区
第一步:删除之前实验创建的分区
[root@centos7 ~]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name     标志
 1      17.4kB  1000MB  1000MB               mysql
 2      1000MB  10.7GB  9736MB               redis
 
[root@centos7 ~]# parted /dev/sdb rm 1
信息: You may need to update /etc/fstab.
[root@centos7 ~]# parted /dev/sdb rm 2
信息: You may need to update /etc/fstab.
[root@centos7 ~]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start  End  Size  File system  Name  标志
第二步:创建1个分区
[root@centos7 ~]# parted /dev/sdb mklabel gpt
警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk
will be lost. Do you want to continue?
是/Yes/否/No? Yes                                                         
信息: You may need to update /etc/fstab.
第三步:分配磁盘空间 使用所有空间
[root@centos7 ~]# parted /dev/sdb mkpart mysql 0 10.7GB
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? Ignore                                           
信息: You may need to update /etc/fstab.
第四步:查看分区信息
[root@centos7 ~]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name     标志
 1      17.4kB  10.7GB  10.7GB               mysql
第x章 文件系统
1.什么是文件系统
文件系统就是一种存储和组织计算机数据文件的机制或方法。
以房子装修比喻,分区就是指房子是什么户型,三室两厅还是两室一厅,文件系统的类型房子的装修风格。
磁盘分区有专门的命令,同理创建文件系统也有专门的命令。
创建文件系统我们也称为叫格式化,分完区后的磁盘必须格式化后才能正常使用。
那么为什么需要格式化呢?这是因为磁盘分区在没有格式化前,操作系统是无法识别系统上磁盘分区格式的,也就无法存取文件目录属性和权限等内容,把分区格式化成操作系统支持的某个文件系统后,再存放数据,系统就会根据这个文件系统的格式进行存取文件了。
2.常见文件系统类型
Windwos文件系统类型
FAT32   最多支持16T文件系统,最大支持存储不超过4G大小的单个文件
NTFS    最多支持16EB的文件系统,最大支持存储16EB的文件
Linux文件常见系统类型
EXT4    最大支持1EB文件系统,最大支持单个文件16T,CentOS7以前使用此文件系统
XFS     比EXT4更先进的64位文件系统,最大支持8EB的文件系统,最大单个文件支持8EB,CentOS7默认文件系统
3.格式化文件系统
格式化分区 mkfs命令
命令作用:
用于在指定的设备(硬盘分区等)上创建Linux文件系统
命令语法:
mkfs  [option]  [filesys]
常用参数:
-t    #指定要创建的文件系统类型 
-c	  #创建文件系统时检查磁盘坏块
-v	  #显示详细信息
命令实战:将创建好的分区格式化为xfs文件系统
第1步: 查看系统支持创建的所有文件系统
mkfs只是一个前端命令,它通过-t参数指定文件系统类型后会调用相应命令mkfs.fstype。
因此我们可以直接使用ls mkfs.*这个命令查看所有支持创建的文件系统。
[root@centos7 ~]# ls /sbin/mkfs*
/sbin/mkfs        /sbin/mkfs.cramfs  /sbin/mkfs.ext3  /sbin/mkfs.minix
/sbin/mkfs.btrfs  /sbin/mkfs.ext2    /sbin/mkfs.ext4  /sbin/mkfs.xfs
第2步:创建xfs文件系统
[root@centos7 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655358 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621431, 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
第3步:查看分区信息
[root@centos7 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="a3fceeda-6ba4-44a6-b09e-9aa0a9692212" TYPE="xfs" PARTLABEL="primary" PARTUUID="572b2d5a-1127-4e41-bcb8-e44deff37f53" 
查看分区信息 blkid命令
命令作用:
方便的查看区信息
命令语法:
 blkid [选项] [设备]
命令实战:
1.打印当前系统分区信息
[root@centos7 ~]# blkid 
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="6c86cd7e-9ff1-4398-af1b-b69ac8a6cbfb" TYPE="xfs" 
/dev/sda2: UUID="SWblLT-mpH0-Ipiu-51Of-2U7l-ewV0-HgSscu" TYPE="LVM2_member" 
/dev/mapper/centos-root: UUID="b382b752-7f09-42ee-9752-d5f8cb06319f" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="d4816407-0105-4188-b1c1-8077394d6143" TYPE="swap" 
/dev/sdb1: UUID="a3fceeda-6ba4-44a6-b09e-9aa0a9692212" TYPE="xfs" PARTLABEL="primary" PARTUUID="572b2d5a-1127-4e41-bcb8-e44deff37f53" 
2.打印指定分区的信息
[root@centos7 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="a3fceeda-6ba4-44a6-b09e-9aa0a9692212" TYPE="xfs" PARTLABEL="primary" PARTUUID="572b2d5a-1127-4e41-bcb8-e44deff37f53"
第x章 分区挂载
1.mount 挂载命令
命令作用:
分完区的硬盘并不能直接被使用,还必须被挂载到Linux的某个目录下。
命令语法:
mount [选项]  [设备]  [目录] 
常用参数:
-t   #指定挂载的文件类型
-w   #可读写挂载
-r   #只读挂载
-a   #重新加载/etc/fstab文件里的配置
挂载注意事项:
1.一个目录同一实践只能被一个设备挂载
2.一个设备可以挂载多个目录
3.如果一个目录被多个设备挂载了,那么只能看到最后一个挂载的设备上的数据,其他的设备都会被隐藏起来。
4.工作中建议使用创建的空目录作为挂载点 
命令实战:
第一步:将xfs文件系统挂载到/mnt目录
[root@centos7 ~]# mount -t xfs /dev/sdb1 /mnt/
第二步:查看挂载情况
[root@centos7 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   37G  1.3G   36G    4% /
devtmpfs                 979M     0  979M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M  9.6M  981M    1% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/sda1               1014M  133M  882M   14% /boot
tmpfs                    199M     0  199M    0% /run/user/0
/dev/sdb1                 10G   33M   10G    1% /mnt
2.开机自动挂载 fstab
什么是开机自动挂载?
刚才我们已经学习了mount挂载分区,但是这种挂载并不是一直生效的,当我们重启系统之后,这种挂载就会失效。
简单来说,就是开机启动后不能自动挂载使用,这在实际工作中当然是不可接受的。
那么如何使新的硬盘可以实现开机自动就挂载呢?
答案就在于/etc/fstab这个文件中。
/etc/fstab文件的作用:
/etc/fstab配置文件里记录的就是开机启动后自动挂载的设备,包含/分区和boot分区的挂载都是在这个配置文件里定义的。
所以如果这个配置文件出错了或者被删除了,也就进不了系统了。
/etc/fstab文件格式:
需要挂载设备   挂载位置点   文件挂载类型   挂载选项   是否备份   是否检查
设备UUID=      /data        xfs        default     0	        0		
第4列:挂载选项 挂载选项有很多,但是一般不常用,只需要了解即可,基本都是default
async/sync		同步还是异步处理,默认async
user/nouser		是否允许普通用户使用mount命令挂载。默认nouser
exec/noexe		是否允许可执行文件执行。默认exec
suid/nosuid		是否允许存在suid属性的文件。默认suid
auto/noauto		执行mount -a 命令时,此文件系统是否被主动挂载。默认auto
rw/ro			是否以只读或者读写模式进行挂载。默认rw
default			具有rw,suid,dev,exec,auto,nouser,async等默认参数的设定
第五列:是否备份,了解即可,一般都是0
0	 不备份
1    每天备份
2    每隔一天备份
第六列:是否检查,了解即可,一般都是0
0   不检查
1   首先检查
2   1之后后检查
查看系统的/etc/fstab文件:
[root@centos7 ~]# cat /etc/fstab |grep -v '#'
/dev/mapper/centos-root /                         xfs     defaults        0 0
UUID=6c86cd7e-9ff1-4398-af1b-b69ac8a6cbfb /boot   xfs     defaults        0 0
实战:将/dev/sdb1设置为开机自动挂载到/data/目录
第一步:查看/dev/sdb1的uuid
[root@centos7 ~]# blkid /dev/sdb1
/dev/sdb1: UUID="a3fceeda-6ba4-44a6-b09e-9aa0a9692212" TYPE="xfs" PARTLABEL="primary" PARTUUID="572b2d5a-1127-4e41-bcb8-e44deff37f53" 
第二步:将挂载信息写入/etc/fstab文件
[root@centos7 ~]# cp /etc/fstab /opt/
[root@centos7 ~]# vim /etc/fstab 
[root@centos7 ~]# tail -1 /etc/fstab    
UUID=a3fceeda-6ba4-44a6-b09e-9aa0a9692212 /data   xfs    defaults       0 0
第三步:立即生效/etc/fstab的配置
[root@centos7 ~]# mkdir /data
[root@centos7 ~]# mount -a
第四步:查看挂载是否成功
[root@centos7 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   37G  1.3G   36G    4% /
devtmpfs                 979M     0  979M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M  9.6M  981M    1% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/sda1               1014M  133M  882M   14% /boot
tmpfs                    199M     0  199M    0% /run/user/0
/dev/sdb1                 10G   33M   10G    1% /data
第五步:重启系统,然后查看是否可以开机自动挂载
[root@centos7 ~]# reboot
........................
[root@centos7 ~]# df -h|grep data
/dev/sdb1                 10G   33M   10G    1% /data
3.umount 卸载命令
命令作用:
和mount命令作用相反,umount命令作用在于卸载已经挂载的目录。
命令语法:
umount [选项] [目录|设备]
常用参数:
-f  强制卸载
-l  延迟卸载
命令实战:卸载已经挂载的/data分区
[root@centos7 ~]# umount /data
[root@centos7 ~]# df -h|grep data
命令实战:不正确的卸载情况
当我们卸载挂载设备的时候,要注意当前的所在路径,如果当前正好在需要卸载的目录里,这时候时候卸载命令就会提示设备繁忙,操作步骤如下:
[root@centos7 ~]# mount -a
[root@centos7 ~]# cd /data/
[root@centos7 data]# umount /data 
umount: /data:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
出现这种情况,我们一般有以下的解决方法:
1.退出要卸载的目录,切换到其他目录然后再卸载一遍
2.如果已经不在挂载点的目录里,卸载的时候却依然提示设备繁忙,那么可能是因为此时还有进程正在使用这个目录的文件,此时可以通过lsof命令查看已经打开的进程,然后关闭相应的进程即可。
第1种情况:处于卸载目录里
#1.模拟卸载占用
[root@centos7 ~]# mount -a
[root@centos7 ~]# df -h|grep data
/dev/sdb1                 10G   33M   10G    1% /data
[root@centos7 ~]# cd /data/
[root@centos7 data]# umount /data 
umount: /data:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
         
#2.切换到家目录再次尝试卸载        
[root@centos7 data]# cd
[root@centos7 ~]# umount /data 
#3.卸载成功后再次查看
[root@centos7 ~]# df -h|grep data
[root@centos7 ~]#
第2种情况:有进程正在占用
#1.第一个终端操作
[root@centos7 ~]# mount -a
[root@centos7 ~]# df -h|grep data
/dev/sdb1                 10G   33M   10G    1% /data
[root@centos7 ~]# echo "hello" > /data/hello.txt
[root@centos7 ~]# tail -f /data/hello.txt 
hello
#2.新开一个终端执行卸载操作
[root@centos7 ~]# umount /data
umount: /data:目标忙。
        (有些情况下通过 lsof(8) 或 fuser(1) 可以
         找到有关使用该设备的进程的有用信息)
         
#3.查看是什么进程在占用
[root@centos7 ~]# lsof /data/
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
tail    7445 root    3r   REG   8,17        6   67 /data/hello.txt
#4.杀掉占用的进程并再次查看
[root@centos7 ~]# kill 7445
[root@centos7 ~]# lsof /data/
#5.重新卸载挂载点
[root@centos7 ~]# umount /data
#6.卸载成功后再次查看
[root@centos7 ~]# df -h|grep data
[root@centos7 ~]#
第x章 硬盘常用命令
1.df 显示磁盘以及分区挂载信息
命令作用:
显示磁盘以及分区挂载信息
常用参数:
-h		以人类可读单位显示磁盘空间
-T      输出文件类型
命令实战:
[root@centos7 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   37G  1.3G   36G    4% /
devtmpfs                 979M     0  979M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M  9.5M  981M    1% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/sda1               1014M  133M  882M   14% /boot
tmpfs                    199M     0  199M    0% /run/user/0
[root@centos7 ~]# df -TH
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        40G  1.4G   39G    4% /
devtmpfs                devtmpfs  1.1G     0  1.1G    0% /dev
tmpfs                   tmpfs     1.1G     0  1.1G    0% /dev/shm
tmpfs                   tmpfs     1.1G   10M  1.1G    1% /run
tmpfs                   tmpfs     1.1G     0  1.1G    0% /sys/fs/cgroup
/dev/sda1               xfs       1.1G  139M  925M   14% /boot
tmpfs                   tmpfs     208M     0  208M    0% /run/user/0
什么是/dev/mapper/?
Device mapper是Linux2.6内核中提供的一种从逻辑设备到物理设备的映射机制,在该机制下用户能够很方便的根据自己的需要实现对存储资源的管理。
简单来说,如果你使用的是LVM,因为文件系统所使用的并不是真正意义上的某块物理磁盘,随意用逻辑设备表示这是一个虚拟的卷组,而不是某块磁盘。
2.du 显示指定目录下各个子目录所有文件的大小
命令作用:
显示指定目录下各个子目录所有文件的大小
常用参数:
-h				以人类可读单位显示磁盘空间
-H              以1000而非1024计算空间的单位
-s				只显示总大小
--max-depth     显示的目录最大层级
命令实战:
[root@centos7 opt]# du -h /boot/
0       /boot/efi/EFI/centos
0       /boot/efi/EFI
0       /boot/efi
2.4M    /boot/grub2/i386-pc
3.2M    /boot/grub2/locale
2.5M    /boot/grub2/fonts
8.0M    /boot/grub2
4.0K    /boot/grub
100M    /boot/
[root@centos7 opt]# du -sh /boot/
100M    /boot/
3.dd 复制文件,并根据操作数进行转换和格式化。
命令作用:
Copy a file, converting and formatting according to the operands.
复制文件,并根据操作数进行转换和格式化。
命令语法:
dd if=输入 of=输出 bs=块大小 count=总数
常用参数:
if=file		  输入来源
of=file       输出位置
bs=size       块大小
count=N       生成总数
命令实战:
1.生成1G大小的文件到指定路径
[root@centos7 opt]# dd if=/dev/zero of=/opt/1G.txt bs=100M count=10
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB)已复制,4.54204 秒,231 MB/秒
[root@centos7 opt]# ll -h /opt/1G.txt 
-rw-r--r-- 1 root root 1000M 4月   9 20:22 /opt/1G.txt
2.将光盘数据导出成镜像
[root@centos7 ~]# dd if=/dev/sr0 of=/opt/CentOS7.iso
记录了8962048+0 的读入
记录了8962048+0 的写出
4588568576字节(4.6 GB)已复制,21.0433 秒,218 MB/秒
[root@centos7 ~]# ll -h /opt/CentOS7.iso 
-rw-r--r-- 1 root root 4.3G 4月   9 20:49 /opt/CentOS7.iso
3.使用无效数据销毁磁盘
dd if=/dev/urandom of=/dev/sda1
第x章 移动介绍挂载
1.移动介质挂载说明
在Linux系统里,光盘或U盘并不像windows里那样会自动识别,需要将移动介质挂载到某个目录下才能查看内容
2.光盘挂载
挂载命令:
[root@centos7 ~]# mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos7 ~]# cd /mnt/
[root@centos7 mnt]# ll
总用量 686
-rw-rw-r-- 1 root root     14 11月 26 2018 CentOS_BuildTag
drwxr-xr-x 3 root root   2048 11月 26 2018 EFI
-rw-rw-r-- 1 root root    227 8月  30 2017 EULA
-rw-rw-r-- 1 root root  18009 12月 10 2015 GPL
drwxr-xr-x 3 root root   2048 11月 26 2018 images
drwxr-xr-x 2 root root   2048 11月 26 2018 isolinux
drwxr-xr-x 2 root root   2048 11月 26 2018 LiveOS
drwxrwxr-x 2 root root 663552 11月 26 2018 Packages
drwxrwxr-x 2 root root   4096 11月 26 2018 repodata
-rw-rw-r-- 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r-- 1 root root   1690 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root   2883 11月 26 2018 TRANS.TBL
[root@centos7 mnt]# df -h|grep mnt
/dev/sr0                 4.3G  4.3G     0  100% /mnt
弹出光盘:
[root@centos7 ~]# eject
[root@centos7 ~]# df -h|grep mnt
3.U盘挂载
1.安装命令
[root@centos7 ~]# yum install usbuntils -y
2.查看U盘是否被识别
[root@centos7 ~]# lsusb
Bus 001 Device 011: ID 0781:5591 SanDisk Corp. Ultra Flair			#闪迪U盘
Bus 001 Device 002: ID 0e0f:000b VMware, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc. 
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
3.查看磁盘分区
[root@centos7 dev]# fdisk -l
.......................................................
磁盘 /dev/sdc:15.4 GB, 15376318464 字节,30031872 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 76406D7A-397C-4FCB-AC29-7D07B28786DD
#         Start          End    Size  Type            Name
 1           40       409639    200M  EFI System      EFI System Partition
 2       409640     30029737   14.1G  Microsoft basic Main Data Partition
 3     30029738     30030761    512K  Microsoft basic UEFI:NTFS
4.删除分区
[root@centos7 ~]# parted /dev/sdc  
(parted) p                                                                
Model: SanDisk Ultra USB 3.0 (scsi)
Disk /dev/sdc: 15.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End     Size    File system  Name                  标志
 1      20.5kB  210MB   210MB   fat32        EFI System Partition  启动
 2      210MB   15.4GB  15.2GB  ntfs         Main Data Partition
 3      15.4GB  15.4GB  524kB                UEFI:NTFS
 
(parted) rm 2                                                             
(parted) rm 3
(parted) p                                                                
Model: SanDisk Ultra USB 3.0 (scsi)
Disk /dev/sdc: 15.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start  End  Size  File system  Name  标志
(parted) q
5.格式化分区为xfs格式
[root@centos7 ~]# mkfs.xfs -f /dev/sdc 
meta-data=/dev/sdc               isize=512    agcount=4, agsize=938496 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3753984, 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
6.挂载使用
[root@centos7 ~]# mount /dev/sdc /mnt/
[root@centos7 ~]# df -h|grep mnt
/dev/sdc                  15G   33M   15G    1% /mnt
7.格式化分区为fat格式
[root@centos7 ~]# umount /mnt 
[root@centos7 ~]# mkfs.msdos /dev/sdc 
mkfs.fat 3.0.20 (12 Jun 2013)
mkfs.msdos: Device partition expected, not making filesystem on entire device '/dev/sdc' (use -I to override)
[root@centos7 ~]# mkfs.msdos -I /dev/sdc 
mkfs.fat 3.0.20 (12 Jun 2013)
第x章 硬盘阵列RAID
1.什么是RAID
磁盘阵列(Redundant Arrays of Independent Disks,RAID)
独立磁盘构成的具有冗余能力的阵列
大白话来说,就是使用廉价的x86架构+N块廉价的磁盘,构建出不同功能的存储阵列。
那么什么是存储阵列呢?简单理解就是将多块硬盘组合成一个整体,不同的RAID级别可以实现不同的功能,比如加快读写速度,完全备份等。
2.商业存储品牌
存储服务器图:

商用品牌:
EMC
NATAPP
浪潮
华为
x86服务器做存储:
戴尔730xd
3.RAID常用级别
RAID0
示意图:

级别说明:
1.最少需要1块盘
2.读写多个磁盘并行处理,速度最快,不具备冗余功能,其中一块磁盘损坏,数据全部丢失
3.可用空间为N块磁盘容量相加总和
4.读写速度均大于单块磁盘
应用场景:
追求速度,不考虑冗余备份的业务
RAID1
示意图:

级别说明:
1.最少需要2块盘
2.同组磁盘完全互为镜像,冗余性较好,只要有一块盘正常数据就是完整的。
3.可以空间为磁盘数量一半
4.因为数据之间需要同步,所以写入速度低于单块盘的速度
5.因为所有磁盘数据都一样,所以读取速度等同于单块磁盘的速度
应用场景:
对速度不敏感,对安全性要求较高的场景,例如Linux系统所在分区就是和运行在RAID1级别的磁盘阵列上。
RAID5
示意图:

级别说明:
1.最少3块磁盘
2.数据条带形式分布,以奇偶校验作冗余
3.最多损坏一块盘,损坏盘的数据可以通过算法修复
应用场景:
适合多读少写的情景,是性能与数据冗余最佳的折中方案
RAID10
示意图:

级别说明:
1.最少需要4块磁盘
2.先按RAID 1分成两组,再分别对两组按RAID 0方式镜像
4.兼顾冗余(提供镜像存储)和性能(数据条带形分布)
5.在实际应用中较为常用
应用场景:
兼顾速度和安全的应用场景
4.RAID操作
物理服务器:真机操作。
云服务器:不需要关心,也做不了,云厂商已经帮我们底层都做好了。
第x章 LVM
1.LVM介绍
什么是LVM?
LVM (Logical Volume Manager) 逻辑卷管理
LVM是一种把硬盘空间分配成逻辑卷的方法,和RAID类似,只不过LVM是软件模拟的而RAID一般是硬件控制卡控制。
为什么需要LVM?
设想一下,工作中的生产服务器,一开始没有规划好磁盘容量的选型,随着时间和用户的增长,需要对磁盘进行扩容,这时候如果没有做LVM就只能添加新磁盘和新分区,但是数据文件还是在旧的磁盘分区上,那么就只能停止业务进行数据迁移了。
LVM最大的优势就是就是将多个物理分区抽象组合成一个逻辑卷组,而且这个逻辑卷组是可以动态扩容的,新添加的磁盘只需要通过相应的命令添加到指定的逻辑卷组里,就可以不停机的情况下立即被Linux系统识别并使用。
2.LVM相关概念
1.物理存储介质(The Physical media)
物理上的存储设备,可以是整块硬盘或硬盘的某个分区,比如:/dev/sda,/dev/sda1
2.物理卷(Physical Volume,PV)
物理介质更上一层,包含了LVM的管理命令
3.卷组(Volume Group,VG)
物理卷更上一层,卷组可以由一个或多个物理卷组成
4.逻辑卷(Logical Volume,LV)
逻辑卷属于卷组划分出来的逻辑空间,文件系统就是建立在逻辑卷之上。
5.PE(Physical Extent,PE)
物理卷可用于分配的最小存储单元,默认为4M,可以更改。
LVM和RAID示意图:

3.LVM创建流程
1.将磁盘设备指定为物理卷,也就是pv
2.用一个或多个物理卷创建一个卷组,也就是vg
3.在卷组上创建逻辑卷,也就是lv
3.在逻辑卷上创建文件系统
4.LVM常用命令汇总
操作项        		 PV命令           VG命令           LV命令
列出(display)     pvs             vgs             lvs    
增加(extend)                      vgextend        lvextend
减少(reduce)                      vgreduce        lvreduce
删除(remove)      pvremove        vgremove        lvremove
改变容量(resize)                   vgresize
5.PV管理命令
命令作用:
对于PV的查看,创建,删除等管理
相关命令:
pvs					#查看pv信息
pvcreate		#创建pv
命令使用:新增加两块10G大小的磁盘并创建pv
#1.添加两块10G大小的物理磁盘
[root@centos7 ~]# fdisk -l|grep '/dev/sd*'
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
磁盘 /dev/sdc:10.7 GB, 10737418240 字节,20971520 个扇区
#2.安装lvm软件包
[root@centos7 ~]# yum install lvm2 -y
#3.查看pv信息
[root@centos7 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <39.00g 4.00m
#4.创建pv
[root@centos7 ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[root@centos7 ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
#5.查看创建后的pv信息 
[root@centos7 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <39.00g  4.00m
  /dev/sdb          lvm2 ---   10.00g 10.00g
  /dev/sdc          lvm2 ---   10.00g 10.00g
6.VG管理命令
命令作用:
对于vg的查看,创建,删除等管理
常用命令:
vgs					#查看vg信息
vgcreate    #创建vg卷组
命令格式:
vgcreate -s 块大小 vg卷名 磁盘1 磁盘2
命令使用:
#1.查看vg信息
[root@centos7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <39.00g 4.00m
  
#2.创建卷组
[root@centos7 ~]# vgcreate -s 16M vg0 /dev/sdb /dev/sdc  
  Volume group "vg0" successfully created
  
#3.看vg信息
[root@centos7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n- <39.00g   4.00m
  vg0      2   0   0 wz--n- <19.97g <19.97g
7.LV管理命令
命令作用:
对于lv逻辑卷的查看,创建,删除等管理
常用命令:
lvs					#查看lv信息
lvcreate		#创建lv逻辑卷
命令格式:
lvcreate -l 使用空间 -n 逻辑卷名称 vg卷组名称
命令使用:
#1.查看lv信息
[root@centos7 ~]# lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- 36.99g                                                    
  swap centos -wi-a-----  2.00g 
#2.创建逻辑卷
[root@centos7 ~]# lvcreate -l 40%VG -n linux6-lv1 vg0
  Logical volume "linux6-lv1" created.
[root@centos7 ~]# lvcreate -l 100%FREE -n linux6-lv2 vg0
  Logical volume "linux6-lv2" created.
#3.查看逻辑卷信息
[root@centos7 ~]# lvs
  LV         VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root       centos -wi-ao---- 36.99g                                                    
  swap       centos -wi-a-----  2.00g                                                    
  linux6-lv1 vg0    -wi-a-----  7.98g                                                    
  linux6-lv2 vg0    -wi-a----- 11.98g 
8.逻辑卷挂载使用
#1.查看磁盘信息
[root@centos7 ~]# fdisk -l
...............省略..............
磁盘 /dev/mapper/vg0-linux6--lv1:8573 MB, 8573157376 字节,16744448 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/vg0-linux6--lv2:12.9 GB, 12868124672 字节,25133056 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
#2.创建空的数据目录
[root@centos7 ~]# mkdir /data1
[root@centos7 ~]# mkdir /data2
#3.创建文件系统
[root@centos7 ~]# mkfs.xfs /dev/vg0/linux6-lv1 
meta-data=/dev/vg0/linux6-lv1    isize=512    agcount=4, agsize=523264 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2093056, 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
[root@centos7 ~]# mkfs.xfs /dev/vg0/linux6-lv2
meta-data=/dev/vg0/linux6-lv2    isize=512    agcount=4, agsize=785408 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3141632, 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
#4.磁盘挂载使用
[root@centos7 ~]# mount /dev/vg0/linux6-lv1 /data1
[root@centos7 ~]# mount /dev/vg0/linux6-lv2 /data2
#5.查看挂载情况
[root@centos7 ~]# df -h|grep data
/dev/mapper/vg0-linux6--lv2   12G   33M   12G    1% /data2
/dev/mapper/vg0-linux6--lv1  8.0G   33M  8.0G    1% /data1
9.LVM扩容
命令作用:
实现lvm的扩容
常用命令:
vgextend			#vg卷组扩容
lvextend			#lv逻辑卷扩容
命令格式:
vgextend  卷组名称  磁盘设备
lvextend  -l  使用容量  逻辑卷路径
命令使用:
#1.创建新的物理卷
[root@centos7 ~]# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created.
#2.查看pv信息  
[root@centos7 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <39.00g  4.00m
  /dev/sdb   vg0    lvm2 a--    9.98g     0 
  /dev/sdc   vg0    lvm2 a--    9.98g     0 
  /dev/sdd          lvm2 ---   10.00g 10.00g
#3.查看vg卷组信息
[root@centos7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <39.00g 4.00m
  vg0      2   2   0 wz--n- <19.97g    0 
#4.卷组扩容
[root@centos7 ~]# vgextend vg0 /dev/sdd
  Volume group "vg0" successfully extended
#5.扩容后再次查看卷组信息
[root@centos7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <39.00g 4.00m
  vg0      3   2   0 wz--n-  29.95g 9.98g
#6.扩容逻辑卷
[root@centos7 ~]# lvextend -l +100%FREE /dev/vg0/linux6-lv1  
  Size of logical volume vg0/linux6-lv1 changed from 7.98 GiB (511 extents) to <17.97 GiB (1150 extents).
  Logical volume vg0/linux6-lv1 successfully resized
#7.查看扩容后的逻辑卷
[root@centos7 ~]# lvs
  LV         VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root       centos -wi-ao----  36.99g                                                    
  swap       centos -wi-a-----   2.00g                                                    
  linux6-lv1 vg0    -wi-a----- <17.97g                                                    
  linux6-lv2 vg0    -wi-a-----  11.98g 
#8.重新挂载
[root@centos7 ~]# mount /dev/vg0/linux6-lv1 /data1/
#9.查看挂载分区变化
[root@centos7 ~]# df -h|grep data1 
/dev/mapper/vg0-linux6--lv1  8.0G   33M  8.0G    1% /data1
#10.重新同步文件系统空间
[root@centos7 ~]# xfs_growfs /dev/vg0/linux6-lv1 
meta-data=/dev/mapper/vg0-linux6--lv1 isize=512    agcount=4, agsize=523264 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=2093056, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2093056 to 4710400
#11.再次查看挂载
[root@centos7 ~]# df -h|grep data1               
/dev/mapper/vg0-linux6--lv1   18G   33M   18G    1% /data1
#12.也可以一条命令实现
lvresize -r -l +100%FREE /dev/vg0/linux6-lv1
7.LVM收缩
收缩有风险,可能会造成数据丢失并且xfs不支持空间收缩,所以不做演示,了解即可。
更新: 2024-09-21 19:57:57