天天看点

Linux云计算【第一阶段】第七章:储存管理第七章:储存管理一.磁盘储存管理概念二.磁盘基本分区三.逻辑卷LVM四.交换分区

第七章:储存管理

主要知识点:

基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、RAID

一.磁盘储存管理概念

机械硬盘 HDD 固态硬盘 SSD

SSD的优势:读取速度快,闪存芯片、防震抗摔,数据丢失性可能小,重量轻。

物理硬盘: /dev/sd[a-z]

KVM虚拟化: /dev/vd[a-z]

从存储连接方式

本地存储 例如DellR730本地磁盘

外部存储 scsi线 sata线 sas线 FC线

网络存储 以太网络(iscsi, glusterFS,ceph) FC网络**

从分区方式区分

MBR <2TB fdisk 14个分区 (4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)

GPT >2TB gdisk(parted) 128个主分区 注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!

MBR: 磁盘引导 //分完区之后不可直接使用,需要先格式化

Linux云计算【第一阶段】第七章:储存管理第七章:储存管理一.磁盘储存管理概念二.磁盘基本分区三.逻辑卷LVM四.交换分区
Linux云计算【第一阶段】第七章:储存管理第七章:储存管理一.磁盘储存管理概念二.磁盘基本分区三.逻辑卷LVM四.交换分区

=====================================================================

二.磁盘基本分区

基本分区(MBR|GPT) ----> Filesystem ----> mount

实战条件:首先在虚拟机添加一块虚拟磁盘

[[email protected] ~]# ll /dev/sd*        //长格式查看系统上所有的磁盘
[[email protected] ~]#  lsblk             //查看磁盘信息

1.fdisk  命令   【创建分区】
MBR   14个分区(4个主分区,扩展分区,逻辑分区)
[[email protected] ~]# fdisk /dev/sdc     //对sdc盘进行分区
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xe666fc31 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m    //输入'm' 可查询帮助命令
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition       //删除一个已有的分区
   g   create a new empty GPT partition table    //创建一个空的GPT格式分区表,默认为dos  
   G   create an IRIX (SGI) partition table
   l   list known partition types         //列出分区类型
   m   print this menu                   //打印帮助信息
   n   add a new partition                //添加一个新的分区
   o   create a new empty DOS partition table      // 创建一个空的DOS格式分区表,默认为dos  
   p   print the partition table               //打印当前的分区表
   q   quit without saving changes            //  不保存退出
   s   create a new empty Sun disklabel
   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 获取帮助):n   // 按n创建分区  常用命令有以上备注中文翻译的,其他的如若后续需要可以自己去查找翻译。
ommand (m for help): p     //选择p,打印当前分区表
分区号 (1-4,默认 1):      //回车键,选择默认即可
起始 扇区 (2048-20971519,默认为 2048):    //继续回车默认
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+2G     //这里选择配置磁盘大小,可自定义。
命令(输入 m 获取帮助):n   // 按n创建分区  常用命令有以上备注中文翻译的,其他的如若后续需要可以自己去查找翻译。
ommand (m for help): p     //选择p,打印当前分区表
分区号 (1-4,默认 1):      //回车键,选择默认即可
起始 扇区 (2048-20971519,默认为 2048):    //继续回车默认
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+2G     //这里选择配置磁盘大小,可自定义。
命令(输入 m 获取帮助):n   // 按n创建分区  常用命令有以上备注中文翻译的,其他的如若后续需要可以自己去查找翻译。
ommand (m for help): p     //选择p,打印当前分区表
分区号 (1-4,默认 1):      //回车键,选择默认即可
起始 扇区 (2048-20971519,默认为 2048):    //继续回车默认
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+2G     //这里选择配置磁盘大小,可自定义。

命令(输入 m 获取帮助):n     //注意这边已经创建三个磁盘了所以第四个就要选择扩展分区,下面选择e
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e         
起始 扇区 (12584960-20971519,默认为 12584960):     //回车默认
Last 扇区, +扇区 or +size{K,M,G} (12584960-20971519,默认为 20971519):    //注意这里是创建扩展,所以剩余的储存全部给予扩展分区,当然也可自定义
命令(输入 m 获取帮助):n       //选择n创建逻辑分区
起始 扇区 (12587008-20971519,默认为 12587008):      //选择默认
Last 扇区, +扇区 or +size{K,M,G} (12587008-20971519,默认为 20971519):+1G              //注意,这里需要添加内存了,如果回车那就全部内存给予这一个逻辑分区 
命令(输入 m 获取帮助):n      //选择n
起始 扇区 (14686208-20971519,默认为 14686208):      //回车默认
Last 扇区, +扇区 or +size{K,M,G} (14686208-20971519,默认为 20971519):+1G     //增加储存
命令(输入 m 获取帮助):n      //选择n
起始 扇区 (14686208-20971519,默认为 14686208):      //回车默认
Last 扇区, +扇区 or +size{K,M,G} (14686208-20971519,默认为 20971519):       //回车默认,这里默认是把所有内存都放至最后一个逻辑分区。

命令(输入 m 获取帮助):p          //按p查看当前磁盘分区信息

磁盘 /dev/sdc:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x8ae6b12c

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     4196351     2097152   83  Linux
/dev/sdc2         4196352     8390655     2097152   83  Linux
/dev/sdc3         8390656    12584959     2097152   83  Linux
/dev/sdc4        12584960    20971519     4193280    5  Extended
/dev/sdc5        12587008    14684159     1048576   83  Linux
/dev/sdc6        14686208    16783359     1048576   83  Linux
/dev/sdc7        16785408    20971519     2093056   83  Linux

命令(输入 m 获取帮助):w        //保存分区并退出
ps:如果添加储存失败了,^c 退出重来即可。
[[email protected] ~]# lsblk            //查看磁盘分区信息
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda               8:0    0   20G  0 disk  
├─sda1            8:1    0    1G  0 part  /boot
└─sda2            8:2    0   19G  0 part  
  ├─centos-root 253:0    0   17G  0 lvm   /
  └─centos-swap 253:1    0    2G  0 lvm   [SWAP]
sdb               8:16   0   10G  0 disk  
sdc               8:32   0   10G  0 disk  
├─sdc1            8:33   0    2G  0 part  
├─sdc2            8:34   0    2G  0 part  
├─sdc3            8:35   0    2G  0 part  
├─sdc4            8:36   0    1K  0 part  
├─sdc5            8:37   0    1G  0 part  
├─sdc6            8:38   0    1G  0 part  
└─sdc7            8:39   0    2G  0 part 

2 gdisk   
GPT  128个主分区
这里操作和以上操作类似,这里就不过多讲解了。

3.创建文件系统(格式化)centos7 默认使用xfs  //系统必须格式化才可使用和window原理相同
[[email protected] ~]# mkfs.xfs /dev/sdc1       //注意每个磁盘分区完之后必须要进行格式化才能正常使用
[[email protected] ~]# mkfs.ext4 /dev/sdc2      //使用ext4格式化磁盘分区

4.挂载
[[email protected] ~]# mkdir /mnt/disk1       //创建挂载目录,名称自定义
[[email protected] ~]# mkdir /mnt/disk1       //创建挂载目录
[[email protected] ~]# mount -t xfs /dev/sdc1 /mnt/disk1    //临时挂载,重启后会失效
[[email protected] ~]# umount /mnt/disk1       //取消挂载 
[[email protected] ~]# vim /etc/fstab          //永久挂载配置文件
UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1"  /mnt/disk1   auto    defaults    0 0         
UUID="4d26172c-7aff-4388-baa5-c6756c014d52"  /mnt/disk2    ext4    ro    0 0            //格式如下,先要执行blkid查询需要挂载的UUID
[[email protected] ~]# mount -a              //重新加载挂载信息
[[email protected] ~]# df -Th                //查看挂载信息


如果挂载失败,导致机器无法启动:
1.开机界面按e进入grub系统界面:
2.在linux16行末尾输入 rd.break console=tty1
3.ctrl + x  重新加载启动
4.mount -o remount,rw /sysroot    
5.chroot /sysroot
6.passwd                               #输入2次密码
7.touch /.autorelabel
8.exit
9.reboot      //重新系统然后输入密码即可正常使用


           

=====================================================================

三.逻辑卷LVM

1.LVM 管理

在线扩容 online

数据迁移 online

创建LVM VG扩展/缩小 LV扩容 文件系统扩容 //主要学习目标

基本分区(MBR|GPT) ----> Filesystem ----> mount

逻辑卷LVM ----> Filesystem ----> mount

PE: Physical extent 物理扩展 4M 8M 16M 32M 64M 创建VG时指定 -s 8M

LE: Logical extent 逻辑扩展

实战需要准备环境可以使:/dev/sdc1

实战演示:
[[email protected] ~]# ll /dev/sdb                    //查看sdc磁盘

1.创建pv
[[email protected] ~]# pvcreate /dev/sdb3        //创建pv
  Physical volume "/dev/sdb3" successfully created.
[[email protected] ~]# pvs        //查看pv    pvscan   pvdisplay   //都可以查看pv,三种查看方式
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sda2  centos lvm2 a--   <19.00g      0 
  /dev/sdb3         lvm2 ---     2.00g   2.00g


2.创建vg
[[email protected] ~]# vgcreate vg3 /dev/sdb3           //创建vg3
  Volume group "vg3" successfully created       //则显示成功
[[email protected] ~]# vgs                //查看vg信息   vgscan    vgdispay   //都可查看vg信息


3.创建lv
[[email protected] ~]# lvcreate -l 20 -n lv3 vg3        //创建lv3
 Logical volume "lv3" created.                 //显示此信息表示成功
[[email protected] ~]# lvcreate -L 200M -n lv3 vg3    //创建lv3 方法二 -L 后加上lv内存大小  -l 20代表PE,1PE等于4M,也就是80M大小
[[email protected] ~]# lvs      //查看lv信息  lvscan   lvmdiskscan  //都可查看lv信息

4.创建文件系统并挂载
[[email protected] ~]# mkfs.xfs /dev/vg3/lv3            //创建文件系统xfs格式,并格式化
[[email protected] ~]# mkdir -pv /mnt/disk3             //创建准备挂载的目录
[[email protected] ~]# mount -t xfs /dev/vg3/lv3 /mnt/disk3    //进行挂载

[[email protected] ~]# mkfs.ext4 /dev/vg1/lv2          //创建系统文件ext4格式,并格式化
[[email protected] ~]# mkdir /mnt/lv1 /mnt/lv2         //创建lv1 lv2挂载目录 
[[email protected] ~]#  vim /etc/fstab                //进入永久挂载系统配置文件      ,先查询blkid ,查询UUID信息。
/dev/vg1/lv1    /mnt/lv1        xfs     defaults 0 0
/dev/vg1/lv2    /mnt/lv2        ext4    defaults 0 0
[[email protected] ~]# mount -a           //重新加载系统信息
[[email protected] ~]# df -Th             //显示所有磁盘挂载信息



5.VG管理
5.1 .扩大VG vgextend
1.pv
[[email protected] ~]# pvcreate /dev/sdd
2.vgextend
[[email protected] ~]# vgextend vg1 /dev/sdd      //vg1卷组名字,将/dev/vde扩展到vg1中
3.vgs                                //查看vg扩展信息
 VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <29.00g  4.00m
  vg1      2   2   0 wz--n-   1.99g <1.76g

5.2 减小VG      //企业中坚决先备份在使用,一般不建议使用
[[email protected] ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sda2  centos lvm2 a--   <29.00g    4.00m
  /dev/sdb   vg1    lvm2 a--  1020.00m  780.00m
  /dev/sdc   vg1    lvm2 a--  1020.00m 1020.00m
[[email protected] ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   2   0 wz--n- <29.00g  4.00m
  vg1      2   2   0 wz--n-   1.99g <1.76g
[[email protected] ~]# vgreduce vg1 /dev/sdc
  Removed "/dev/sdc" from volume group "vg1"
[[email protected] ~]# vgs
  VG     #PV #LV #SN Attr   VSize    VFree  
  centos   1   2   0 wz--n-  <29.00g   4.00m
  vg1      1   2   0 wz--n- 1020.00m 780.00m
[[email protected] ~]# pvs
  PV         VG     Fmt  Attr PSize    PFree  
  /dev/sda2  centos lvm2 a--   <29.00g   4.00m
  /dev/sdb   vg1    lvm2 a--  1020.00m 780.00m
  /dev/sdc          lvm2 ---     1.00g   1.00g

5.3.pvmove数据到其它PV
首先要保证有备用pv(要属于一个vg)
可以先在/dev/vdd创建出一个逻辑卷之后,进行测试
[[email protected] ~]# pvs               //查看pvs
  PV         VG     Fmt  Attr PSize    PFree   
  /dev/sdc5  vg3    lvm2 a--  1020.00m  940.00m
  /dev/sdc6  vg3    lvm2 a--  1020.00m 1020.00m
[[email protected] ~]# pvmove /dev/sd5 /dev/sdc6       //将sdc5 数据迁移至sdc6
  /dev/sdc5: Moved: 25.00%
  /dev/sdc5: Moved: 100.00%
[[email protected] ~]# lsblk             //查看 磁盘信息
 ├─sdc5            8:37   0    1G  0 part  
 ├─sdc6            8:38   0    1G  0 part  
 │ └─vg3-lv3     253:4    0   80M  0 lvm   
 └─sdc7            8:39   0    2G  0 part  
 

5.4LV扩容
[[email protected] ~]# vgs               //查看vgs信息
  VG     #PV #LV #SN Attr   VSize    VFree  
  centos   1   2   0 wz--n-  <19.00g      0 
  vg3      2   1   0 wz--n-    1.99g   1.91g
  vg4      1   0   0 wz--n-   <2.00g  <2.00g
[[email protected] ~]# lvextend -L 800M /dev/vg3/lv3      //扩展到800M
  Size of logical volume vg3/lv3 changed from 80.00 MiB (20 extents) to 800.00 MiB (200 extents).
  Logical volume vg3/lv3 successfully resized.
[[email protected] ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                                                                
  lv3  vg3    -wi-a----- 800.00m        
[[email protected] ~]# lvextend -L +800M /dev/vg3/lv3     //在原有基础上加800M
  Size of logical volume vg3/lv3 changed from 800.00 MiB (200                  extents) to 1.56 GiB (400 extents).
  Logical volume vg3/lv3 successfully resized.
[[email protected] ~]# lvs           //查看lv信息
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                                                                  
  lv3  vg3    -wi-a-----   1.56g                                                    


           

=====================================================================

四.交换分区

交换分区管理 Swap

作用: ‘提升‘ 内存的容量,防止OOM(Out Of Memory)

实战:

1.查看当前的交换分区
[[email protected] ~]# free -m         //查看内存信息
              total        used        free      shared  buff/cache   available
Mem:           1819         210         986           9         623        1388
Swap:          2047           0        2047

[[email protected] ~]# swapon -s                //查看挂载信息
文件名                          类型            大小    已用    权限
/dev/dm-1                               partition       2097148 0       -2


2.增加交换分区 可以是基本分区,LVM,File
[[email protected] ~]# fdisk /dev/sdb    (t转换分区的ID 82)
[[email protected] ~]# partprobe /dev/sdb   通知系统分区表的变化
[[email protected] ~]# ll /dev/sdb*        //查看

[[email protected] ~]# mkswap /dev/sdb1        //初始化
[[email protected] ~]# blkid /dev/sdb1         //查找sdb1 UUID
[[email protected] ~]# vim /etc/fstab           //进入永久挂载配置文件
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap    swap default 0 0
[[email protected] ~]# swapon -a	(读取/etc/fstab)
[[email protected] ~]# swapon -s
[[email protected] ~]#  df -Th         //查看挂载信息