10.磁盘储存相关操作
存储管理
1.1 创建磁盘的流程
1.首先需要先给虚拟机添加磁盘
[root@localhost ~]# lsblk #查看磁盘设备
2.给磁盘分区,两种分区方式
方式一 MBR分区:
1.只能分小于2TB的磁盘。
2.一共可分14个分区,4个主分区,一般搭配3个主分区,1个拓展分区(N个逻辑分区)
分区工具:fdisk
用法:
[root@localhost ~]# fdisk -l /dev/sdb #查看磁盘分区信息
[root@localhost ~]# fdisk /dev/sdb #针对MBR格式,创建分区
m 查看帮助
n 新建分区
w 保存退出
方式二 GPT分区:
1.一共可以分128个主分区。
2.小于大于2TB的磁盘都可以分。
用法:
[root@localhost ~]# yum -y install gdisk #安装分区工具
[root@localhost ~]# gdisk -l /dev/sdc #查看磁盘基本信息
[root@localhost ~]# gdisk /dev/sdc
n 创建分区
p 打印分区信息
w 保存
分区常用操作
分区完要记得刷新磁盘
[root@localhost ~]# partprobe /dev/sdb #更新磁盘分区表,手动让内核更新分区表。不需要重启
格式转换:
注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!
[root@localhost ~]# parted -s /dev/sdc mklabel gpt #将/dev/sdc(MBR格式)转换成(GPT格式)
[root@localhost ~]# parted -s /dev/sdc mklabel msdos #将/dev/sda(GPT格式)转换成(MBR格式)
3.创建文件系统(格式化)centos7默认使用xfs
分区完需要创建文件系统也就是格式化,才能使用。
方式一 EXT
红帽自己的,家族支持度最广
建文件系统(格式化)慢、修复慢
文件系统存储容量有限
[root@localhost ~]# mkfs.ext4 /dev/sdb1 #格式化成ext4格式的文件系统
方式二 XFS
高容量,支持大存储
高性能,创建/修复文件系统快
格式化快
inode 与 block 都是系統需要用到時,才动态配置产生
[root@localhost ~]# mkfs.xfs /dev/sdc2 #格式化成xfs格式的文件系统
4.磁盘挂载与使用
做好文件系统的磁盘挂载到目录中开始使用。
磁盘挂载步骤
[root@localhost ~]# mkdir /mnt/disk1 #创建挂载目录
[root@localhost ~]# mount /dev/sdb1 /mnt/disk1/ #把磁盘挂载到目录上
[root@localhost ~]# df -Th #查看磁盘挂载与磁盘使用空间
[root@localhost ~]# umount /mnt/disks/ #取消挂载
[root@localhost ~]# umount -l /mnt/disk1/ #强行卸载,即使目录有资源被进程占用,也可以卸载
5.实现磁盘开机自动挂载的两种方式
方式一 通过修改文件的方式挂载:
专门挂载的文件 /etc/fstab
[root@localhost ~]# blkid /dev/sdb1 #查看uuid和文件系统类型
[root@localhost ~]# vim /etc/fstab #进入编辑
格式:挂载的磁盘的uuid 挂载的路径 文件系统类型 文件系统属性 是否备份 是否检查
UUID=9588b6aa-c057-450d-bbeb-45ffda280b98 /boot xfs defaults 0 0
解释:UUID=xxx /boot路径 xfs文件系统 defaults属性 0不备份 0不检查
方式二 命令的方式:/etc/rc.d/rc.local
这个配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次。/etc/rc.local 是 /etc/rc.d/rc.local的软链接;
[root@localhost ~]# vim /etc/rc.d/rc.local #将挂载命令直接写到文件中
mount /dev/sdc/1 /mnt/disk2/
[root@localhost ~]# chmod +x /etc/rc.d/rc.local #添加执行权限,不然不会执行
[root@localhost ~]# reboot #重启生效
1.2 制作可扩展逻辑卷
1.2.1 逻辑卷LVM概述
lvm概念:LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。
1.2.2 为什么要做逻辑卷
当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。
使用LVM主要是增加了系统的扩展性,可以跨分区,多个硬盘组合。
1.2.3 制作逻辑卷步骤
1.拥有磁盘
制作lvm的时候可以是一整块硬盘也可以是硬盘分好的区并且是还没有用的。
必须是没有做文件系统的。
2.做成物理卷pv
[root@linux-server ~]# yum install -y lvm2 #安装命令
[root@linux-server ~]# pvcreate /dev/sdb #键新磁盘或分区创建成pv
[root@linux-server ~]# pvs #查看pv
[root@linux-server ~]# pvscan #详细查看pv
3.加入卷组vg
[root@linux-server ~]# vgcreate vg1 /dev/sdb #创建vg1 把/dev/sdb加入
参数:-s 16M 指的是在分区的时候指定vg的大小。
[root@linux-server ~]# vgs #查看vg
[root@linux-server ~]# vgscan
[root@linux-server ~]# vgdisplay #详细查看vg
4.创建逻辑卷lv
[root@linux-server ~]# lvcreate -L 150M -n lv1 vg1 #创建lv从vg1里拿空间
参数解释: -L 指定lv的大小 -n 给创建的lv起一个名字
[root@linux-server ~]# lvcreate -l 20 -n lv2 vg1 #采用PE方式在创建一个lv
参数解释: -l 20 按PE方式创建指定大小20
[root@linux-server ~]# lvs #查看lv
6.制作文件系统并挂载使用
[root@linux-server ~]# mkfs.xfs /dev/vg1/lv1 #制作xfs格式文件系统
[root@linux-server ~]# mkfs.ext4 /dev/vg1/lv2 #制作ext格式文件系统
[root@linux-server ~]# mkdir /mnt/lv{1..2} #创建挂载目录
[root@linux-server ~]# mount /dev/vg1/lv1 /mnt/lv1 #挂载使用
[root@linux-server ~]# mount /dev/vg1/lv2 /mnt/lv2 #挂载使用
[root@linux-server ~]# umount /mnt/lv2 #取消挂载
#注意设置好开机自动挂载。
设置开机自动挂载的两种方式自己琢磨。
1.2.4 LVM逻辑卷扩容
分两种情况
1.lv逻辑卷所在的vg卷组空间不够(这时就要扩大vg卷组)
1.获取没有创建系统的磁盘或分区。
2.做成物理卷pv。
[root@linux-server ~]# pvcreate /dev/sdc
3.直接给已有的vg扩容
[root@linux-server ~]# vgextend vg1 /dev/sdc #vg1:已有的vg卷组名字
[root@linux-server ~]# vgs #查看vg是否扩容成功
2.lv逻辑卷所在的vg卷组有空间(直接个lv扩容)
[root@linux-server ~]# vgs #查看vg卷组空间是否充足
[root@linux-server ~]# lvextend -L 850M /dev/vg1/lv1 #扩展lv1大小为850M
[root@linux-server ~]# lvextend -L +850M /dev/vg1/lv1 #在原有基础上加850M
[root@linux-server ~]# lvextend -l +15 /dev/vg1/lv1 #在原有基础上加15个PE
[root@linux-server ~]# lvs #查看是否扩容
FS(file system)文件系统扩容
[root@linux-server ~]# xfs_growfs /dev/vg1/lv1 #xfs扩容
[root@linux-server ~]# resize2fs /dev/vg1/lv2 #ext4扩容
[root@linux-server ~]# df -Th
1.3 交换分区管理
1.3.1 介绍什么交换分区Swap
Swap---也叫虚拟内存
#当内存不够的时候内核会随机杀死它认为占用内存多的进程。
#这时我们就需要交换分区Swap
作用: ‘提升‘ 内存的容量,防止OOM(Out Of Memory)
如何制作交换分区?
#我们可以将硬盘空间拿来当作内存来用
什么时候用到交换分区?
#当物理内存不够用的时候使用swap分区,防止物理内存耗尽
swap分区大小设置规则
在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。
内存小于4GB时,推荐不少于2GB的swap空间;
内存4GB~16GB,推荐不少于4GB的swap空间;
内存16GB~64GB,推荐不少于8GB的swap空间;
内存64GB~256GB,推荐不少于16GB的swap空间。
1.3.1 交换分区的制作
1.分出一块空间出来制作交换分区
#增加交换分区,可以是基本分区,LVM,File
[root@linux-server ~]# free -m #查看当前的交换分区
[root@linux-server ~]# swapon -s #查看交换分区信息
[root@linux-server ~]# fdisk /dev/sdd #分一个主分区出来
[root@linux-server ~]# partprobe /dev/sdd #刷新分区表
[root@linux-server ~]# ll /dev/sdd*
2.制作交换分区(初始化)
[root@linux-server ~]# mkswap /dev/sdd1 #初始化
3.挂载使用
[root@linux-server ~]# blkid /dev/sdd1 #查看UUID
/dev/sdd1: UUID="d2fd3bc0-10c0-4aeb-98ea-6b640d29b783" TYPE="swap"
[root@linux-server ~]# vim /etc/fstab #制作开机挂载
/dev/sdd1 swap swap defaults 0 0
[root@linux-server ~]# swapon -a #激活swap分区(读取/etc/fstab)
[root@linux-server ~]# swapon -s #查看swap分区
#swapoff /dev/sdd1 #关闭swap分区
拓展:file制作swap方法
[root@linux-server ~]# dd if=/dev/zero of=/swap2.img bs=1M count=512
解释:dd 读入从空设备里面拿空块 到交换分区 块多大 一共多少兆
[root@linux-server ~]# mkswap /swap2.img #初始化
[root@linux-server ~]# vim /etc/fstab
/swap2.img swap swap defaults 0 0
[root@linux-server ~]# chmod 600 /swap2.img #交换分区权限需要设置为600,默认644权限不安全。
[root@linux-server ~]# swapon -a #激活swap分区(读取/etc/fstab)
[root@linux-server ~]# swapon -s #查看swap分区
1.4 raid磁盘阵列
RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。
所有服务器在安装操作系统之前必须先做raid【常识】
作用:为了保证数据完整性,防止数据丢失。
最常用的raid级别:0、1、5、6
raid0:数据条带卷
最少需要2块磁盘,分别往每一块磁盘上写一部分数据
优点:读写速度快,磁盘利用率:100%
缺点:不提供数据冗余,无数据检验,不能保证数据的正确性,存在单点故障。
应用场景:对数据完整性要求不高的场景,如:日志存储,个人娱乐
raid1:镜像raid
一般需要2块磁盘,每块磁盘上都会存储一份完整数据。
优点:提供数据冗余,读速度快,数据双倍存储安全性高支持容错。
缺点:写速度慢,无数据校验,磁盘利用率:50%
应用场景:存放重要数据,如数据存储领域
raid5:目前最常见的RAID等级
raid5最少需要3块磁盘,磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上。
优点:
可以找回丢失的数据,数据可以通过校验计算得出。
冗余磁盘(需要4快磁盘将其中一块做热备),当某一块磁盘坏掉后,冗余磁盘会自动替换上
有校验机制,读写速度高,磁盘利用率高。
缺点:
磁盘越多安全性能越差
应用场景:安全性高,如金融、数据库、存储等。
1.5 文件系统
本地文件系统,不能在网络上用。
ntfs xfs ext2,ext3,ext4
网络文件系统,也可以在本地用。
nfs glusterfs hdfs ceph
作用:
管理文件的一套系统。
文件的编辑,拷贝,粘贴,移动。
#node :inode块也叫索引。专门存储inode信息。里面是文件的属性,权限,访问时间。
inode的内容
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
文件的字节数,文件拥有者的User ID,文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:
ctime指inode上一次变动的时间,
mtime指文件内容上一次变动的时间,
atime指文件上一次打开的时间。
链接数,即有多少文件名指向这个inode
文件数据block的位置
文件属性包含:
文件的权限,链接个数,所有者,所属组,文件大小,修改时间,文件存放的路径
查看inode信息
[root@qfedu.com ~]# stat /etc/hosts #查看该文件的inode详细信息
[root@qfedu.com ~]# ls -i /etc/hosts #-i:查看inode号