存储管理

一 .存储管理

主要知识点: 基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、RAID

1.1 初识硬盘

1
2
机械 HDD
固态 SSD

与传统硬盘相比,SSD固态电子盘具有以下优点:

1
2
3
4
5
第一,SSD不需要机械结构,完全的半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。
第二,SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性也能够降到最小。  
第三,得益于无机械部件及闪存芯片,SSD没有任何噪音,功耗低。 
第四,质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。同时因其完全半导体化
无结构限制,可根据实际情况设计成各种不同接口、形状的特殊电子硬盘。

硬盘设备命名

1
2
3
4
物理硬盘:    /dev/sd[a-z]
KVM虚拟化:
/dev/vd[a-z](半虚拟化驱动)
/dev/sd[a-z](全虚拟化驱动)

HP服务器硬盘

1
2
/dev/cciss/c0d0p1	    //c0第一个控制器, d0第一块磁盘, p1分区1
/dev/cciss/c0d0p2 //c0第一个控制器, d0第一块磁盘, p2分区2

从存储连接方式(注意:后期还会学到不同的存储方式)

1
2
3
本地存储 例如DellR730本地磁盘
外部存储 scsi线 sata线 sas线
网络存储 以太网络(iscsi, glusterFS,ceph) 分布式

1.2 从磁盘分区方式区分

1
2
3
4
5
MBR (MSDOS根据分区表来分区的,又叫做主引导扇区) <2TB 
分区工具:fdisk
一共可以分14个分区(4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)
MBR 小于2TB的可以。
一块硬盘最多分4个主分区。
1
2
3
4
5
GPT 无限制
分区工具:gdisk(parted---rhel6)
一共可以分128个主分区
GPT大于小于2TB都可以。
#注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!无法恢复!

二.基本分区

首先需要给虚拟机添加一块新的硬盘,在VMware的虚拟机设置中即可添加,在添加前要先将虚拟机关机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Nov 7 23:15 /dev/sda
brw-rw----. 1 root disk 8, 1 Nov 7 23:15 /dev/sda1
brw-rw----. 1 root disk 8, 2 Nov 7 23:15 /dev/sda2
brw-rw----. 1 root disk 8, 16 Nov 7 23:15 /dev/sdb
brw-rw----. 1 root disk 8, 32 Nov 7 23:15 /dev/sdc
[root@localhost ~]# 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 8G 0 disk

2.1 fdisk

MBR 14个分区(4个主分区,扩展分区,逻辑分区)

1
[root@qfedu.com ~]# fdisk -l /dev/sdb #查看磁盘分区信息

1
2
3
# lsblk 查看分区结果
【如果分区后无法发现分区结果,请{刷新分区表}后再次查看】
# partprobe /dev/sdb

为什么起始扇区一定要默认呢?

因为如果间隔起始的话,会导致前后两端的数据无法连接,会导致资源的浪费。

2.2 gdisk

GPT 128个主分区

2.2.1 创建分区

1
2
3
[root@qfedu.com ~]# yum -y install gdisk  #安装分区工具
[root@qfedu.com ~]# gdisk -l /dev/sdb
[root@qfedu.com ~]# gdisk /dev/sdb

2.2.2 创建文件系统(格式化)centos7默认使用xfs

1
2
[root@qfedu.com ~]# mkfs.ext4 /dev/sdb1   #格式化成ext4格式的文件系统
[root@qfedu.com ~]# mkfs.xfs /dev/sdc2 #格式化成xfs格式的文件系统(/采用的就是这种)

操作完成后可以通过blkid命令查看文件系统类型,从而得知是否操作成功。直接回车可以看到所有的硬盘分区UUID和文件系统类型,后面加路径可以只查看指定的分区信息。

1
2
3
4
5
6
7
8
9
[root@localhost ~]# blkid 
/dev/sdb1: UUID="e215e902-de80-4f9c-bae7-97ac00711653" TYPE="xfs"
/dev/sda1: UUID="1cd22a94-6aa7-4a09-9c88-0de73436eec1" TYPE="xfs"
/dev/sda2: UUID="lGZ1F3-RJoN-P1dh-jbYG-x8Da-YZrR-fgFZcW" TYPE="LVM2_member"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="6c9250c6-060f-4bc5-9d5c-0059a85113a4" TYPE="xfs"
/dev/mapper/centos-swap: UUID="6fd8ee45-7416-42ca-8422-8ddcf81e5e91" TYPE="swap"
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="e215e902-de80-4f9c-bae7-97ac00711653" TYPE="xfs"

2.2.3 挂载mount使用

1
2
3
4
5
6
7
[root@qfedu.com ~]# mkdir /mnt/disk1   #创建挂载目录
[root@qfedu.com ~]# mkdir /mnt/disks #创建挂载目录
[root@qfedu.com ~]# mount -o rw /dev/sdb1 /mnt/disk1/ #-o 指定读写权限(ro只读,rx读写)
mount参数:
-o 指定读写权限
-a 需要定义(/etc/fstab)执行-a才会自动挂载
[root@qfedu.com ~]# mount /dev/sdc2 /mnt/disks/

查看磁盘挂载与磁盘使用空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@qfedu.com ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 17G 1.2G 16G 7% /
devtmpfs devtmpfs 982M 0 982M 0% /dev
tmpfs tmpfs 993M 0 993M 0% /dev/shm
tmpfs tmpfs 993M 8.7M 984M 1% /run
tmpfs tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 125M 890M 13% /boot
tmpfs tmpfs 199M 0 199M 0% /run/user/0
/dev/sdb1 ext4 283M 2.1M 262M 1% /mnt/disk1
/dev/sdc2 xfs 197M 11M 187M 6% /mnt/disks
参数解释:
-T 打印文件系统类型
-h 人性化显示,磁盘空间大小
文件系统会占用一些空间

取消挂载

后跟挂载设备和挂载点都可以

1
2
[root@qfedu.com ~]# umount /mnt/disks/
[root@qfedu.com ~]# umount -l /mnt/disk1/ #强行卸载,即使目录有资源被进程占用,也可以卸载

三.fstab开机自动挂载

3.1 /etc/fstab文件实现开机的时候自动挂载

1
2
3
4
5
6
7
8
9
10
11
12
[root@qfedu.com ~]# blkid /dev/sdb1  #查看uuid和文件系统类型
/dev/sdb1: UUID="d1916638-bd0a-4474-8051-f788116a3a92" TYPE="ext4"
[root@qfedu.com ~]# vim /etc/fstab
参数解释:
第1列:挂载设备
(1)/dev/sda5
(2)UUID=设备的uuid(设备ID号) rhel6/7的默认写法 同一台机器内唯一的一个设备标识
第2列:挂载点
第3列:文件系统类型
第4列:文件系统属性
第5列:是否对文件系统进行磁带备份:0 不备份
第6列:是否检查文件系统:0 不检查

1
2
3
[root@qfedu.com ~]# vim /etc/fstab
/dev/sdc2 /mnt/disks xfs defaults 0 0
[root@qfedu.com ~]# reboot #重启之后df -Th可以看到已经自动挂载成功

3.2 /etc/rc.d/rc.local开机自动挂载

1
这个配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次。也就是说,如果有任何需要在系统启动时运行的工作,则只需写入 /etc/rc.d/rc.local 配置文件即可。写入/etc/rc.local 配置文件也可以,两者之间是软链接的关系。
1
[root@qfedu.com ~]# vim /etc/rc.d/rc.local #将挂载命令直接写到文件中

1
2
[root@qfedu.com ~]# chmod a+x /etc/rc.d/rc.local #所有用户添加执行权限
[root@qfedu.com ~]# reboot #重启之后df -Th可以看到已经自动挂载成功

注:用户家目录下的.bashrc文件中也可以,但root以外的用户要确保其有使用mount命令的权限,以及文件的执行权限。

四.文件系统

4.1、文件系统分类

4.1.1分类

问题:为什么有这么多文件系统?一个不够用吗?

1
2
3
4
5
分类:
本地文件系统,不能在网络上用。
ntfs xfs ext2,ext3,ext4
网络文件系统,也可以在本地用。(比如网吧)
nfs glusterfs hdfs ceph
4.1.2概念
1
2
3
4
作用:
管理文件的一套系统。
文件的编辑,拷贝,粘贴,移动。
inode :inoed块、i节点--索引节点。专门存储inode信息。里面是文件的属性信息-也叫元信息,文件名,权限,访问时间

存取不分割,放进去什么样,拿出来什么样。存储分割

理解inode

理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。索引节点编号;它是文件或目录在磁盘里的唯一标识,linux读取文件首先要读取到这个索引节点。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。

inode的内容

1
2
3
4
5
6
7
文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
链接数,即有多少文件名指向这个inode
文件数据block的位置

查看inode信息

1
2
3
4
5
6
7
8
9
10
11
12
[root@qfedu.com ~]# stat /etc/hosts
File: ‘/etc/hosts’
Size: 158 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 16778306 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-07-28 19:11:48.781000069 +0800
Modify: 2013-06-07 22:31:32.000000000 +0800
Change: 2020-07-18 15:37:52.353025437 +0800
Birth: -

[root@qfedu.com ~]# ls -i /etc/hosts #-i:查看inode号
16778306 /etc/hosts
4.1.3.EXT
1
2
3
4
EXT 家族支持度最广:
但创建文件系统(格式化)慢!
修复慢!
文件系统存储容量有限!
4.1.4.XFS
1
2
3
4
5
XFS 同样是一种日志式文件系統:
高容量,支持大存储
高性能,创建/修复文件系统快
格式化快
inode 与 block 都是系統需要用到時,才动态配置产生

五、逻辑卷LVM–(Logical Volume Manager(逻辑卷管理)的简写)

5.1 LVM管理

1
2
lvm概念:LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。
卷:卷在Windows系统当中其实也就是我们平常所谓的C盘D盘等等。那么到底什么是卷呢?只要经历过分区和格式化的就可以叫卷。

5.1.1 lvm的特点

1
2
3
4
5
6
7
8
9
#传统分区的缺点:
传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不易改变。当一个分区空间已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中。

#当采用LVM时:
1.将硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;
2.文件系统建立在LVM上,可以跨分区,方便使用;
3.当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。

#使用LVM主要是方便管理、增加了系统的扩展性。可以跨分区,多个硬盘组合。

5.1.2 lvm

1
2
3
1.lvm的制作
2.lvm的使用
3.lvm扩容-------在线扩容。可以在有数据的情况下去扩容。
1
2
基本分区(MBR|GPT) ----> Filesystem(制作文件系统类型) ----> mount(挂载)
逻辑卷LVM ----> Filesystem(制作文件系统类型) ----> mount(挂载)

5.2.lvm的制作

1
2
3
4
5
6
7
第一步,拥有基本分区
做成物理卷: pv ------- sdb1、sdb2 打pv的标记。
加入卷组: vg-------- 卷组里面包含:sdb1 sdb2,建立在PV之上。
逻辑卷 lv ------- 逻辑卷是从卷组里面拿空间出来做成的逻辑卷,在起个名,建立在VG之上
制作文件系统------mkfs.xfs lvm路径
挂载 ------mount 使用lvm #扩容逻辑卷时不需要挂载
#制作lvm的时候可以是一整块硬盘也可以是硬盘分好的区并且是还没有用的。必须是没有做文件系统的

5.3 案例

5.3.1.创建LVM

首先准备添加3块磁盘:可以是/dev/sdb这种没有分区的也可以是/dev/sdb1这种已经分区了的

1
注意:如果没有pv命令安装 #yum install -y lvm2
1
2
3
4
5
6
7
[root@linux-server ~]# ll /dev/sd*   #或者直接lsblk直接查看
brw-rw----. 1 root disk 8, 0 Nov 9 12:59 /dev/sda
brw-rw----. 1 root disk 8, 1 Nov 9 12:59 /dev/sda1
brw-rw----. 1 root disk 8, 2 Nov 9 12:59 /dev/sda2
brw-rw----. 1 root disk 8, 16 Nov 9 12:59 /dev/sdb
brw-rw----. 1 root disk 8, 32 Nov 9 12:59 /dev/sdc
brw-rw----. 1 root disk 8, 48 Nov 9 14:04 /dev/sdd
5.3.1.1.创建pv
1
2
3
4
5
6
7
8
9
[root@linux-server ~]# pvcreate /dev/sdb #创建pv
Physical volume "/dev/sdb" successfully created.
[root@linux-server ~]# pvs #查看pv
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 10.00g 10.00g
[root@linux-server ~]# pvscan #查看pv
PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]
PV /dev/sdb lvm2 [10.00 GiB]
Total: 2 [<29.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [10.00 GiB]
5.3.1.2.创建vg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@linux-server ~]# vgcreate vg1 /dev/sdb   #创建vg
Volume group "vg1" successfully created
参数解释:
-s 16M 指的是在分区的时候指定vg的大小。
[root@linux-server ~]# vgs #查看vg
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1 1 0 0 wz--n- <10.00g <10.00g
[root@linux-server ~]# vgscan
Reading volume groups from cache.
Found volume group "centos" using metadata type lvm2
Found volume group "vg1" using metadata type lvm2
[root@linux-server ~]# vgdisplay #查看vg
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <10.00 GiB
PE Size 4.00 MiB
Total PE 2559
Alloc PE / Size 0 / 0 MiB
Free PE / Size 2559 / <10.00 GiB
VG UUID bVvQxe-4M2A-mMuk-b3gJ-4Maj-0xDy-5QZDOp
5.3.1.3.创建lv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@linux-server ~]# lvcreate -L 150M -n lv1 vg1  #创建lv
Rounding up size to full physical extent 152.00 MiB
Logical volume "lv1" created.
[root@linux-server ~]# lvcreate -l 20 -n lv2 vg1 #采用PE方式在创建一个lv
Logical volume "lv2" created.
参数解释:
-L 指定lv的大小(常规单位M,G)
-n 给创建的lv起一个名字
-l 20 指定PE
[root@linux-server ~]# 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
lv1 vg1 -wi-a----- 152.00m
lv2 vg1 -wi-a----- 80.00m
5.3.1.4.制作文件系统并挂载
1
2
3
4
5
6
7
8
9
10
[root@linux-server ~]# mkfs.xfs /dev/vg1/lv1    #xfs格式文件系统
[root@linux-server ~]# mkfs.ext4 /dev/vg1/lv2 #ext4格式文件系统
[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 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 149M 7.8M 141M 6% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 74M 1.6M 67M 3% /mnt/lv2
#注:在lv1中写入文件666.txt,查看666.txt可以看到其内容。挂载后的lv1目录有自己分区,不属于/。取消挂载后里边的666.txt将消失,因为他属于lv1目录的分区。取消挂载后的lv1目录属于/下。

5.3.2.LVM逻辑卷扩容

5.3.2.1.VG管理
1
#注意:如果lv所在的vg有空间直接扩容lv就ok了!大致流程为:lvextend扩容-->声明文件系统(要与扩容之前的文件系统一致,可以通过blkid命令查看文件类型)  切记扩容lv在声明过文件系统后无需再次挂载!
5.3.2.2.扩大VG vgextend(lv所在vg无空间)
1
2
3
4
5
6
7
8
9
10
1.创建pv
[root@linux-server ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
2.直接vgextend扩容
[root@linux-server ~]# vgextend vg1 /dev/sdc #vg1卷组名字,将/dev/sdc扩展到vg1中
Volume group "vg1" successfully extended
[root@linux-server ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1 2 2 0 wz--n- 19.99g 18.23g
5.3.2.3.实战lv扩容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@linux-server ~]# vgs  #查看vg
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1 1 2 0 wz--n- <19.99g <9.77g
[root@linux-server ~]# lvextend -L 850M /dev/vg1/lv1 #扩展到850M
[root@linux-server ~]# lvextend -L +850M /dev/vg1/lv1 #在原有基础上加850M
[root@linux-server ~]# 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
lv1 vg1 -wi-ao---- 1.66g
lv2 vg1 -wi-ao---- 80.00m
[root@linux-server ~]# lvextend -l +15 /dev/vg1/lv1 #在原有基础上加15个PE(在想直接用完剩下所有内存的时候用PE比较方便,用-L的话不能准确知道剩下多少空间)
[root@linux-server ~]# 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
lv1 vg1 -wi-ao---- <1.68g
lv2 vg1 -wi-ao---- 80.00m
5.3.2.4.FS(file system)文件系统扩容(声明文件系统,声明后无需挂载)
1
2
3
4
5
6
7
8
9
10
[root@linux-server ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 149M 7.8M 141M 6% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 74M 1.6M 67M 3% /mnt/lv2
[root@linux-server ~]# xfs_growfs /dev/vg1/lv1 #xfs扩容(声明文件系统,与之前一致)
[root@linux-server ~]# resize2fs /dev/vg1/lv2 #ext4扩容(声明文件系统,与之前一致)
[root@linux-server ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 1.7G 9.1M 1.7G 1% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 74M 1.6M 67M 3% /mnt/lv2

六.交换分区

交换分区管理 Swap—也叫虚拟内存

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

6.1 引入

1
2
3
4
5
6
现象是当内存不够的时候内核会随机杀死进程,它认为占用内存多的进程。(内核会先删除占用内存多的进程).

如何制作交换分区?
#我们可以将硬盘空间拿来当作内存来用
什么时候用到交换分区?
#当物理内存不够用的时候使用swap分区,防止物理内存耗尽

扩展知识

1
2
3
4
5
6
swap分区大小设置规则
在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。
内存小于4GB时,推荐不少于2GB的swap空间;
内存4GB~16GB,推荐不少于4GB的swap空间;
内存16GB~64GB,推荐不少于8GB的swap空间;
内存64GB~256GB,推荐不少于16GB的swap空间。

查看当前的交换分区

1
2
3
4
5
[root@linux-server ~]# free -m 
total used free shared buff/cache available
Mem: 1984 155 1679 8 149 1656
Swap: 2047 0 2047
[root@linux-server ~]# swapon -s #查看交换分区信息

6.2 增加交换分区 可以是基本分区,LVM,File

6.2.1 基本分区增加交换分区(需分区)

1
2
3
4
5
[root@linux-server ~]# fdisk /dev/sdd  #分一个主分区出来
[root@linux-server ~]# partprobe /dev/sdd #刷新分区表
[root@linux-server ~]# ll /dev/sdd*
brw-rw----. 1 root disk 8, 16 Nov 9 14:11 /dev/sdd
brw-rw----. 1 root disk 8, 17 Nov 9 14:11 /dev/sdd1

初始化

1
2
3
[root@linux-server ~]# mkswap /dev/sdd1  #初始化
Setting up swapspace version 1, size = 5242876 KiB
no label, UUID=d2fd3bc0-10c0-4aeb-98ea-6b640d29b783

挂载

1
2
3
4
5
6
7
8
9
10
11
[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
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 0 -1
/dev/sdd1 partition 5242876 0 -2

#swapoff /dev/sdd1 #关闭swap分区

6.2.2 file制作增加交换分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@linux-server ~]# dd if=/dev/zero of=/swap2.img bs=1M count=512
解释:dd 读入 从空设备里面拿空块 到交换分区 块多大 一共多少兆
#if 参数指定了 dd 命令的输入文件。在这里,/dev/zero 是一个特殊的设备文件,它提供无限的零(null)字节流。这意味着 dd 将从 /dev/zero 中读取无限的零字节作为输入数据。如果你想将 /dev/zero 替换为其他文件,理论上是可以的,但需要考虑替换文件的内容和大小,以确保满足你的需求。

#/swap2.img 是指将输出写入到一个根下名为 swap2.img 的文件中。如果路径中没有指定目录,则会将文件创建在当前工作目录下,命名无限制
[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权限不安全。但是不设置600权限也照样可以实现
[root@linux-server ~]# swapon -a
[root@linux-server ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 0 -1
/dev/sdd1 partition 5242876 0 -2
/swap2.img file 524284 0 -3

6.2.3 lvm增加和扩容交换分区(通过lvm进行增加扩容交换分区可以不分区)

6.2.3.1 lvm增加交换分区
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[root@localhost ~]# fdisk /dev/sde 
欢迎使用 fdisk (util-linux 2.23.2)。

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


命令(输入 m 获取帮助):N
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): P
分区号 (2-4,默认 2):2
起始 扇区 (27265024-41943039,默认为 27265024):
将使用默认值 27265024
Last 扇区, +扇区 or +size{K,M,G} (27265024-41943039,默认为 41943039):+3G
分区 2 已设置为 Linux 类型,大小设为 3 GiB

命令(输入 m 获取帮助):W
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

[root@localhost ~]# pvcreate /dev/sde2
Physical volume "/dev/sde2" successfully created.
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VG1 2 1 0 wz--n- 1.99g 0
VG2 1 1 0 wz--n- <2.00g 0
centos 2 2 0 wz--n- 31.99g 1020.00m
[root@localhost ~]# vgcreate VG3 /dev/sde2
Volume group "VG3" successfully created
[root@localhost ~]# vgdisplay VG3
--- Volume group ---
VG Name VG3
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 <3.00 GiB
PE Size 4.00 MiB
Total PE 767
Alloc PE / Size 0 / 0
Free PE / Size 767 / <3.00 GiB
VG UUID sU3LsS-h8aU-xzSe-uGWx-TFmU-hWPA-b0G50Z
[root@localhost ~]# lvcreate -n LV3 -l 767 VG3
Logical volume "LV3" created.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
LV1 VG1 -wi-a----- 1.99g
LV2 VG2 -wi-a----- <2.00g
LV3 VG3 -wi-a----- <3.00g
root centos -wi-ao---- <29.00g
swap centos -wi-ao---- 2.00g
[root@localhost ~]# mkswap /dev/VG3/LV3
正在设置交换空间版本 1,大小 = 3141628 KiB
无标签,UUID=971f0251-22dd-4636-8dab-b38aaa04faa2
[root@localhost ~]# free -m
[root@localhost ~]# vi /etc/fstab
/dev/VG3/LV3 swap swap defaults 0 0
[root@localhost ~]# swapon -a
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 972 195 632 7 143 633
Swap: 5115 0 5115
6.2.3.1 lvm扩容交换分区
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 972 187 181 7 602 635
Swap: 4607 0 4607
[root@localhost ~]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.23.2)。

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

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

命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+3G
分区 1 已设置为 Linux 类型,大小设为 3 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# 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 6G 0 disk
└─sdb1 8:17 0 1G 0 part
sdc 8:32 0 5G 0 disk
└─sdc1 8:33 0 2G 0 part [SWAP]
sdd 8:48 0 5G 0 disk
└─sdd1 8:49 0 3G 0 part
sr0 11:0 1 4.4G 0 rom
[root@localhost ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
[root@localhost ~]# vgextend centos /dev/sdd1
Volume group "centos" successfully extended
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 2 0 wz--n- 21.99g <3.00g
[root@localhost ~]# vgdisplay centos
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 21.99 GiB
PE Size 4.00 MiB
Total PE 5630
Alloc PE / Size 4863 / <19.00 GiB
Free PE / Size 767 / <3.00 GiB
VG UUID Hq2Jqj-nGM7-9hNZ-q5ET-76Ua-1yfL-AckFzL

[root@localhost ~]# lvextend -l +767 /dev/centos/swap
Size of logical volume centos/swap changed from 2.00 GiB (512 extents) to <5.00 GiB (1279 extents).
Logical volume centos/swap successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- <5.00g
[root@localhost ~]# mkswap /dev/centos/swap
mkswap: error: /dev/centos/swap is mounted; will not make swapspace #需要把swap关掉
[root@localhost ~]# swapoff -a
[root@localhost ~]# mkswap /dev/centos/swap #声明
mkswap: /dev/centos/swap: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 5238780 KiB
无标签,UUID=3a297574-beea-4dc0-b072-49ad4ccdd944
[root@localhost ~]# swapon -a
swapon: /ldq:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 972 196 655 7 120 642
Swap: 7675 0 7675

七.mount详解

*常用挂载选项详解 *

1
挂载设备文件名、UUID

常见的挂载选项

1
2
3
4
5
6
7
-o         指定文件系统属性
rw 读写
ro 只读
noexec 不允许执行二进制文件
exec 允许执行二进制文件
auto mount -a 开机自动挂载
remount 在线重新挂载
1
[root@linux-server ~]# mount  #查看已经挂载上的系统的属性

案例1:exec/noexec

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@linux-server ~]# mount /dev/vg1/lv1 /mnt/lv1/		#挂载默认是有执行权限的
[root@linux-server ~]# mount -o noexec /dev/vg1/lv2 /mnt/lv2 #不允许执行二进制文件
[root@linux-server ~]# cat /mnt/lv1/hello.sh
#!/bin/bash
echo "hello"
[root@linux-server ~]# cat /mnt/lv2/hello2.sh
#!/bin/bash
echo "hello"
[root@linux-server ~]# chmod +x /mnt/lv1/hello.sh
[root@linux-server ~]# chmod +x /mnt/lv2/hello2.sh
[root@linux-server ~]# /mnt/lv1/hello.sh
hello
[root@linux-server ~]# /mnt/lv2/hello2.sh
-bash: /mnt/lv2/hello2.sh: Permission denied

取消挂载

1
2
3
4
5
[root@linux-server ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 1.7G 34M 1.7G 2% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 74M 1.6M 67M 3% /mnt/lv2
[root@linux-server ~]# umount /mnt/lv2/

八.raid–磁盘阵列

1、RAID介绍

主观备份叫备份 被动备份叫冗余

RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。

1
2
#注意
所有服务器在安装操作系统之前必须先做raid【常识】
作用
1
为什么要做raid? #为了保证数据完整性,防止数据丢失

最常用的raid级别:0、1、5、6、10:是 1和0 的组合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
raid0 ---数据条带卷
最少需要两块磁盘,分别往每一块磁盘上写一部分数据
优点:
1.读写速度快,
2.磁盘利用率:100%
缺点:不提供数据冗余,无数据检验,不能保证数据的正确性,存在单点故障。

应用场景:
1)对数据完整性要求不高的场景,如:日志存储,个人娱乐
2)要求读写效率高,安全性能要求不高,如图像工作站
#范例:
#两块盘A和B 存数据123456 一块存123 一块存456
============================================================================
两个盘存相同数据
raid1 又叫镜像raid,通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。
一般需要两块磁盘,每块磁盘上都会存储一份完整数据。其数据安全性就会较高,但是磁盘空间利用率是比较低的。

优点:提供数据冗余,数据双倍存储安全性高支持容错。读速度快
缺点:写速度不变,无数据校验。磁盘利用率不高
磁盘利用率:50%

应用场景:
存放重要数据,如数据存储领域
#范例:
#两块盘A和B 存数据123456 一块存123456 令一块也存123456
===========================================================
raid5:RAID5应该是目前最常见的 RAID 等级,它的校验数据分布在阵列中的所有磁盘上。RAID5的磁盘上同时存储数据和校验数据。当一个数据盘损坏时,系统可以根据其他数据块和对应的校验数据来重建损坏的数据。 

raid5最少需要3块磁盘。
优点:
1.可以找回丢失的数据---数据可以通过校验计算得出,
2.冗余磁盘-->(需要4快磁盘将其中一块做热备)当某一块磁盘坏掉后,冗余磁盘会自动替换上去
3.有校验机制
4.读写速度高
5.磁盘利用率高
缺点:
1.磁盘越多安全性能越差

应用场景:安全性高,如金融、数据库、存储等。
#范例:
#三块盘A、B和C 存数据123456 A存123 B存456 C存校验码 当A或B当中一块坏掉,可以通过另一块中的数据和校验码算出坏掉那块中的数据。
==================================================
raid6:RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式。
最少需要四块磁盘,两块存校验位。RAID6引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。
优点:
1.容错:允许两块磁盘同时坏掉。读写快。
2.良好的随机读性能
3.有校验机制

缺点:
1.写入速度差
2.成本高

应用场景:对数据安全级别要求比较高的企业
#范例:
#四块盘A、B、C和D 存数据123456 一块存123 一块存456 另外两块存校验码 两块数据盘同时丢也可以继续工作
===============================================
RAID10:先做镜像再作条带--也叫混合raid
优点:
1.较高的IO性能
2.有数据冗余
3.无单点故障
4.安全性能高
缺点:成本稍高
应用场景:
特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
#范例:
#四块盘A、B、C和D 存数据123456 A和B为一组,C和D为一组,一组存123,一组存456,组内两块存相同数据和raid1一样,这样只要不是同时坏掉两块为同一组的硬盘就不会出问题。
=======================================================
购买磁盘后需要操作
1
# 1.有磁盘,2.制作raid5,3.开始分区,4.刷新分区表,5,制作文件系统,6.挂载。