Linux存储管理1

一,基本分区

1,磁盘/硬盘/disk/简介

1.1 类型

按工作原理区分
机械
机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器, 数据转换器,接口, 缓存等几个部分组成。
固态

SSD的优势
  SSD是摒弃传统磁介质,采用电子存储介质进行数据存储和读取的一种技术,突破了传统机械硬盘的性能瓶颈,
拥有极高的存储性能,被认为是存储技术发展的未来新星。  
    固态硬盘的全集成电路化、无任何机械运动部件的革命性设计,从根本上解决了在移动办公环境下,对于数据读
写稳定性的需求。全集成电路化设计可以让固态硬盘
做成任何形状。与传统硬盘相比,SSD固态电子盘具有以下优点:  
第一,SSD不需要机械结构,完全的半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。
第二,SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性也能够降到最小。  
第三,得益于无机械部件及FLASH闪存芯片,SSD没有任何噪音,功耗低。  
第四,质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。同时因其完全半导体化,
无结构限制,可根据实际情况设计成各种不同接口、形状的特殊电子硬盘。

图示


1.2 尺寸

分为3.5寸,2.5寸,1.8寸等

1.3 插拔

热插拔,简单 比如说U盘 MP3 摄像头  那些 USB设备  
在电脑正常运行的时候  你可以 通过删除设备 将他们直接取下来
也可以在电脑正常运行时安装上去。

而非热插拔,也简单  比如说CPU 硬盘 内存。。
你不可能在电脑运行的时候 给他取下来吧...这样
若你直接取下来  电脑 硬件就会烧了的!  只能关机时取下来!

1.4 接口

早期的IDE——现在SATA I/II/III

早期服务器SISC——现在服务器SAS

序列式SCSI(SAS:Serial Attached SCSI)是一种电脑集线的技术,其功能主要是作为周边零件的数据传输,如:硬盘、CD-ROM等设备而设计的界面。序列式SCSI 由并行SCSI物理存储接口演化而来,是由ANSI INCITS T10技术委员会(T10 committee)开发及维护的新的存储接口标准。与并行方式相比,序列方式能提供更快速的通信传输速度以及更简易的配置。此外SAS并支持与序列式ATA(SATA)设备兼容,且两者可以使用相类似的电缆。

其他的还有PCIE FC等。

1.5 转速

转速分为5400rpm,7200rpm,10000rpm,15000rpm

1.6 厂商

硬盘的主要厂商有西部数据,希捷,三星日立金士顿之类。

1.7 从存储连接方式(了解)

本地存储

外部存储 scs线  stat线 sas线 FC线


                  scsi线缆图示

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

1.8术语

盘片   一块硬盘有若干盘片,每个盘片有可以存储数据的上、下两盘面(Side)。这些盘面堆叠在主轴上高速旋转,它们从上至下从“0”开始依次编号。

柱面  所有盘面上的同一磁道构成一个圆柱,称作柱面

扇区  将一个盘面划分为若干内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区。每个扇区中的数据作为一个单元同时读出或写入。硬盘的第一个扇区,叫做引导扇区。

磁道  每个盘面被划分成许多同心圆,这些同心圆轨迹叫做磁道;磁道从外向内从0开始顺序编号。

图示


1.9 命名

kernel对不同接口硬盘命名方式
    OS IDE(并口) SATA(串口) SCSI
    RHEL5 /dev/hda /dev/sda /dev/sda
    RHEL6 /dev/sda /dev/sda /dev/sda
    RHEL7 /dev/sda /dev/sda /dev/sda
    KVM /dev/vda(半虚拟化驱动)
          KVM增加硬盘
          半虚拟化驱动磁盘: online
          全虚拟化驱动磁盘: offline

    /dev/sda(全虚拟化驱动)

2.0 分区

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

    图示   

  

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

2,创建RAID

      RAID 0:连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合。
      RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。RAID1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写 ,而不需要重组失效的数据。简单来说就是:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。

      RAID10:高可靠性与高效磁盘结构一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充。主要用于容量不大,但要求速度和差错控制的数据库中。

      RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。请参考《Linux就该这么学》使用RAID硬盘技术章节。

真实服务器配置RAID : http://www.jb51.net/article/53814.htm

3,管理磁盘

3.1 添加磁盘

KVM增加硬盘
半虚拟化驱动磁盘: online
                
                
全虚拟化驱动磁盘: offline
VMWARE增加磁盘
1编辑虚拟机设置
                
2增加磁盘
               

3.2 管理磁盘流程三部曲

分区(MBR或者GPT) ---->文件系统 Filesystem ----> 挂载mount

3.3 查看磁盘信息

方法1
注意:kvm虚拟化磁盘vda,真实服务器上sda
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8,  0 1月  25 09:35 /dev/sda
brw-rw----. 1 root disk 8,  1 1月  25 09:35 /dev/sda1
brw-rw----. 1 root disk 8,  2 1月  25 09:35 /dev/sda2
brw-rw----. 1 root disk 8, 16 1月  25 09:35 /dev/sdb
brw-rw----. 1 root disk 8, 32 1月  25 09:35 /dev/sdc
brw-rw----. 1 root disk 8, 48 1月  25 09:35 /dev/sdd
/dev/sdb和/dev/sdc相当于购买的新磁盘。
方法2          
[root@server0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 10G 0 disk
└─vda1 253:1 0 10G 0 part /
vdb 253:16 0 10G 0 disk
vdc 252:32 0 8G 0 disk
名称 设备类型 序号 是否可移动设备  大小  是否只读  磁盘或分区  挂载点
注意
vmware的磁盘名称/dev/sda
kvm的磁盘名称/dev/vda

3.4 创建分区

fdisk(MBR)          
MBR 管理分区
创建分区
[root@localhost ~]# fdisk      /dev/sdb
n        //创建新分区
p        //主分区
1        //1号分区
回车    //起始扇区
+100M    //结束大小
w            //保存分区设置。
查看分区创建信息
# fdisk -l /dev/sdb
# partprobe /dev/sdb      //在有缓存的时候,刷新磁盘分区表。
[root@localhost ~]# fdisk -l /dev/sdb

磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x787eea5e

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048      411647      204800   83  Linux
/dev/sdb2          411648     1026047      307200   83  Linux
/dev/sdb3         1026048     1435647      204800   83  Linux
/dev/sdb4         1435648     4194303     1379328    5  Extended
/dev/sdb5         1437696     1847295      204800   83  Linux
/dev/sdb6         1849344     2258943      204800   83  Linux
/dev/sdb7         2260992     4194303      966656   83  Linux
[root@localhost ~]#

不管是ll 还是fdisk,都能看到多个新分区,sdb1~sdb3是主分区,sdb4扩展分区,sdb5~7逻辑分区。

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

文件系统:储物柜;格子柜
方法一:# mkfs.ext4 /dev/sdb1

问题:未挂载的分区,如何查询文件系统
                
                    
方法二:# mkfs.xfs /dev/sdb2(了解)
文件系统类型XFS和EXT4在后续章节讲解。在此使用哪种都可以。
后续的分区,如果使用,就必须格式化

3.5 挂载mount

方法一:手动挂载(重启失效)
创建挂载点,一个分区一个挂载点
# mkdir /mnt/disk1
# mkdir /mnt/disk2
# mount -t ext4  /dev/sdb1 /mnt/disk1(了解) //手动不推荐
# mount -t xfs  /dev/sdb2 /mnt/disk2 //手动不推荐
方法二:自动挂载(重启不失效)
第一步:查看分区的ID
# blkid
第二步:使用UUID来自动挂载分区
# vim /etc/fstab
UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" /mnt/disk1 auto defaults 0 0
UUID="4d26172c-7aff-4388-baa5-c6756c014d52" /mnt/disk2 ext4 defaults 0 0
分区信息   挂载点(文件夹)  文件系统类型   属性(默认)  压缩  检测
第三步:手动刷新
# mount -a

注意/etc/fstab中有固定格式
磁盘                   挂载点    文件系统        属性   备份  检测
/dev/vdb1   /mnt/disk1    xfs或者auto    default    0     0

3.6 查看挂载信息

方法1 df -hT
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb1 xfs 197M 48M 150M 24% /mysql_data
分区     文件系统   大小  占用  空闲  占比  挂载点
一般df看的是磁盘分区大小。
方法2 mount
          
[root@server0 ~]# mount
/dev/sdb1 on /mysql_data type xfs (rw,relatime,seclabel,attr2,inode64,noquoa)
/dev/sdb3 on /mnt/disk1/disk2/disk3/disk4 type ext4 (rw,relatime,seclabel,dta=ordered)
mount 看的是磁盘有没有特殊属性,具体属性在后续讲解。

3.7 磁盘管理方式2gdisk(了解)

本章后续使用的是fdisk 创建分区,gdisk做为了解部分。
====gdisk====

GPT 128个主分区
创建分区
# gdisk -l /dev/vdc
# gdisk /dev/vdc
# partprobe /dev/vdc
# ll /dev/vdc*
brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/vdc
brw-rw----. 1 root disk 253, 33 Jun 6 17:38 /dev/vdc1
brw-rw----. 1 root disk 253, 34 Jun 6 17:38 /dev/vdc2

格式化(略)
挂载 (略)
            

parted  /dev/sda        //分区管理工具
mklabel msdos          //将分区转为mbr
mklabel gpt                //将分区转为GPT

二,逻辑卷LVM

1, 目的:管理磁盘的一种方式,性质与基本磁盘无异

2, 特点:随意扩张大小,缩减大小,快照备份。

3, 流程

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

4, 工作原理

名词
PV:物理卷(Physical volume)
VG:卷组(Volume Group)
LV:逻辑卷(Logical Volume)
PE:物理块(Physical Extent)
LE:逻辑块(Logical Extent)

图示(可以放大看)


             

5,创建LVM

5.1 准备物理磁盘

0. 准备物理磁盘(可以是: /dev/sdb /dev/sdc1 (建立在RIAD之上))
[root@server0 ~]# ll /dev/sd*
brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/sdc
brw-rw----. 1 root disk 253, 48 Jun 6 17:38 /dev/sdd
brw-rw----. 1 root disk 253, 64 Jun 6 17:38 /dev/sde
建议使用相同的磁盘名称。
如果再CENTOS6中,千万记得将分区类型更改为8E

5.2 pv

1 将物理磁盘,转换成物理卷-PV
[root@server0 ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created

查看PV信息                  
[root@server0 ~]# pvscan
PV /dev/vdd lvm2 [2.00 GiB]
Total: 1 [2.00 GiB] / in use: 0 [0 ] / in no VG: 1 [2.00 GiB]

[root@server0 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdd lvm2 a-- 2.00g 2.00g

[root@server0 ~]# pvdisplay

5.3 vg

创建卷组-VG
[root@server0 ~]# vgcreate vg1 /dev/sdc
Volume group "vg1" successfully created
查看卷组信息
第一种方法,查看卷组的摘要信息。卷组名,物理卷数量,逻辑卷数量,大小等。
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- 2.00g 2.00g

第二种方法,扫描卷组信息。
[root@server0 ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2


第三种方法。显示卷组详细信息。
[root@server0 ~]# vgdisplay
--- Volume group ---
VG Name vg1
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 2.00 GiB                    //重点观察
PE Size 4.00 MiB                    //重点观察
Total PE 511                        //重点观察
Alloc PE / Size 0 / 0
Free PE / Size 511 / 2.00 GiB
VG UUID 7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V

补充:vgcreate -s 10M vg1 /dev/sdb1 //表示创建卷组vg1并指定PE大小为10M

          lvcreate -l 5 lv1 vg1    // 创建逻辑卷lv1并指定块大小为5   也就是5个PE大小就是50M

5.4 lv

创建逻辑卷
[root@server0 ~]# lvcreate -L 200M -n lv2 vg1
指定大小,单位M,G

查看LV                   
[root@server0 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [400.00 MiB] inherit
ACTIVE '/dev/vg1/lv2' [200.00 MiB] inherit

5.5 创建文件系统并挂载

方法一:手动挂载
创建文件系统

[root@server0 ~]# mkfs.ext4 /dev/vg1/lv2
创建挂载点
[root@server0 ~]# mkdir  /mnt/lv2
挂载
[root@server0 ~]#mount /dev/vg1/lv2 /lv2
查看挂载结果
[root@server0 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg1-lv1 651948 32928 619020 6% /mnt/lv1
/dev/mapper/vg1-lv2 245671 2062 226406 1% /mnt/lv2

逻辑卷管理完毕,就可以向挂载点写入数据了。
方法二:自动挂载
vim /etc/fstab
/dev/vg1/lv1    /mysql_data     ext4    defaults 0 0
分区 挂载点 文件系统 属性 压缩 检测
mount -a

6,VG管理

6.1 ==扩大VG vgextend==

环境:/dev/vg1 容量由4G 扩容到 6G。
==扩大VG vgextend==
步骤1,创建PV。而后使用第二步,将PV增加到VG中。
[root@server0 ~]# pvcreate /dev/sdd1

步骤2:扩展VG,同时包含方法1.
[root@server0 ~]# vgextend vg1 /dev/sdd1
Volume group "vg1" successfully extended

扩容完成
查看VG
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 3.99g 3.76g

6.2 ==减小VG vgreduce==

警告

==减小VG ,命令虽少。但千万需要注意的是数据迁移。

环境介绍

卷组vg1
物理卷sdc,sdd1和sde(查看物理卷pvs命令)
sdc物理卷中有数据
为了避免vg缩减影响数据,请先将sdd中的数据移动到sde中。

查看当前的VG中PV的使用情况               

[root@server0 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc vg1 lvm2 a-- 2.00g 1.76g
/dev/sdd1 vg1 lvm2 a-- 2.00g 2.00g
/dev/sde vg1 lvm2 a-- 2.00g 2.00g
注意观察,PV的空间。一个是使用过的,一个是满的。

pvmove,会将sdd中的数据,移动到sde中

[root@server0 ~]# pvmove /dev/sdc
/dev/sdc: Moved: 16.7%
/dev/sdc: Moved: 100.0%
可以看到移动过程。

再次查看,空间已经发生变化

[root@localhost ~]# pvs
PV         VG     Fmt  Attr PSize   PFree
/dev/sda2  centos lvm2 a--  <19.00g     0
/dev/sdc   vg1    lvm2 a--   <2.00g <2.00g
/dev/sdd1  vg1    lvm2 a--   <2.00g  1.80g
/dev/sde   vg1    lvm2 a--   <2.00g <2.00g

vgreduce VG缩减。

[root@server0 ~]# vgreduce vg1 /dev/sdd
Removed "/dev/sdd" from volume group "vg1"

再次观察,VG中少了一个PV

[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 2 0 wz--n- 2.00g 1.76g
观察,PV的数量变少了。

7,LV扩容

扩大LV lvextend

1. lv扩容
1.查看VG空间。
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 1.88g 1.00g
请观察,VG是否有剩余空间。
2.扩容LV。
[root@server0 ~]# lvextend -L +200M /dev/vg1/lv2
增加200M空间,给lv2
查看LV                       
[root@server0 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [768.00 MiB] inherit
ACTIVE '/dev/vg1/lv2' [300.00 MiB] inherit

观看LV大小已经发生改变。
如果希望缩减LV,1请注意数据保存。2使用lvreduce
 注意
xfs的lvm不支持缩容
Xfs filesystem shrinking is unsupported
2. FS扩容
先观察文件系统当前容量。
[root@server0 ~]# df -Th
/dev/mapper/vg1-lv2 ext4 240M 32M 192M 15% /mnt/lv2

. ext2/3/4文件系统扩容
[root@server0 ~]# resize2fs /dev/vg1/lv2
再次观察df -hT 的分区大小。和上一次的对比一下。大小已经发生改变。

查看FS
                        
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 765M 67M 698M 9% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 488M 32M 429M 7% /mnt/lv2
请注意对比,之前的输出结果,文件系统的大小发生改变。

如果您的文件系统,不是EXT4。那请用下列命令来更新XFS文件系统

xfs文件系统扩容请注意,不同的文件系统,扩容指令不同。
[root@server0 ~]# xfs_growfs /dev/vg1/lv1

减小LV lvreduce

减容注意事项(了解)
环境介绍
逻辑卷/dev/vg1/lv2,大小400M,并挂载到/mnt/lv2
需要先将lv卸载(umount),再进行减容操作。
1.首先查看磁盘使用情况
df -hT
注意分区大小400M
/dev/mapper/vg1-lv2     ext4      380M  2.3M  356M    1% /mnt/lv2
2、卸载
umount /dev/vg1/lv2
3、调整分区大小
e2fsck -f /dev/vg1/lv2
resize2fs -p /dev/vg1/lv2 200M
4、设置空闲空间,减容
lvreduce -L 200M /dev/vg1/lv2
5、挂载上/mnt/lv2,查看磁盘使用情况
mount /dev/vg1/lv2  /mnt/lv2/
df -h
    看到分区大小已经200M
     /dev/mapper/vg1-lv2     ext4      186M  1.6M  171M    1% /mnt

千万注意,不要对已经挂载的LV进行兼容,会损坏文件系统。
千万注意,缩减后的LV大小,要大于存储数据的大小。
(重新格式化才能用)

8, LVM快照snapshot

快照的目的
快速-------备份数据。
快照与备份
备份原理
备份窗口
数据一致性
快照技术
COW
ROW
1. 创建快照 (EXT4)
快照之前准备一些文件
1. 创建快照 卷(EXT4)
[root@server0 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2
或者这样看呢,创建LV,名字lv2-snap,根据lv2进行快照,大小128M
lvcreate -n lv2-snap  -s /dev/vg1/lv2  -L 128M

2 查询快照卷大小。
[root@server0 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 768.00m
lv2 vg1 owi-aos--- 512.00m
lv2-snap vg1 swi-aos--- 128.00m lv2 5.92
实验到这里就结束了。
注意:制作快照限制,受VG大小。
2.挂载快照卷,恢复数据(验证)
            
3 将快照卷挂载,拷贝出数据。可以用作回复数据使用了。
[root@server0 ~]# mkdir    /mnt/lv2-snap
[root@server0 ~]# mount -o ro /dev/vg1/lv2-snap /mnt/lv2-snap/

3. 查看Snapshot
1 查看两个卷的挂载情况。
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv2 ext4 488M 32M 429M 7% /mnt/lv2
/dev/mapper/vg1-lv2--snap ext4 488M 32M 429M 7% /mnt/lv2-snap

2 查看两个卷的关系
[root@server0 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [768.00 MiB] inherit
ACTIVE Original '/dev/vg1/lv2' [512.00 MiB] inherit
ACTIVE Snapshot '/dev/vg1/lv2-snap' [128.00 MiB] inherit

3 查看文件内容。根据情况进行使用。
[root@server0 ~]# ls /mnt/lv2
etc lost+found
[root@server0 ~]# ls /mnt/lv2-snap/
etc lost+found

4. 观察Snapshot
[root@server0 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 768.00m
lv2 vg1 owi-aos--- 512.00m
lv2-snap vg1 swi-aos--- 128.00m lv2 30.56
4.提示xfs文件系统快照注意事项
            
XFS:不识别uuid ,所以需要单独加上一个-o nouuid 来忽略掉。就可以使用xfs的快照了。
[root@server0 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/
挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据

9、命令总结

看帮助,查文档,LVM命令一大堆。头疼记不住。
归类汇总
            
 lvm卸载流程
1.umountFS
2.删除LV。
3.将PV从所在的VG中删除。
4.删除VG。
问题汇总
先删除pv,后删除vg时报错。
Volume group "vg1" not found, is inconsistent or has PVs missing.
vgreduce --removemissing --force vg1

三,交换分区管理Swap

1,简介

1.1 作用

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

1.2 swap大小

推荐
设置交换分区大小为内存的2倍

生产
大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;
大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;
大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。

2,查看当前的交换分区

[root@server0 ~]# free      -m
total used free shared buff/cache available
Mem: 489 140 145 4 202 304
Swap: 0 0 0

[root@server0 ~]# swapon -s
当前系统中,没有swap。如果你的系统中有,请观察大小,后续实验会增加swap大小。

3,增加交换分区

类型
可以是分区或者LVM或者File

===分区/LVM===(方法一)
    ===分区===
1. 准备分区(准备将/dev/sde磁盘,划分为1G分区)
[root@server0 ~]# fdisk    /dev/sde (t转换分区的ID 82)
[root@server0 ~]# partprobe /dev/sde
[root@server0 ~]# ll /dev/sde*
brw-rw----. 1 root disk 253, 16 12月 6 10:18 /dev/sde
brw-rw----. 1 root disk 253, 17 12月 6 10:18 /dev/sde1

2.格式化
[root@server0 ~]# mkswap /dev/sde1

3.挂载
[root@server0 ~]# blkid /dev/sde1
/dev/sde1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap"

[root@server0 ~]# vim /etc/fstab
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults 0 0

[root@server0 ~]# swapon -a (读取/etc/fstab)
[root@server0 ~]# swapon -s
Filename Type Size Used Priority
/dev/vdb1 partition 524284 0 -1
===File===(了解 方法二)
    ===File===
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 xfs 10G 3.3G 6.8G 33% /

[root@server0 ~]# dd if=/dev/zero of=/swap2.img bs=1M count=512
或者
[root@server0 ~]# dd </dev/zero >/swap2.img bs=1M count=512

[root@server0 ~]# mkswap /swap2.img

[root@server0 ~]# vim /etc/fstab
/swap2.img swap swap defaults 0 0

由于文件型扩展SWAP会提示权限不够。所以扩大一下权限。
[root@server0 ~]# swapon -a
swapon: /swap2.img: insecure permissions 0644, 0600 suggested.
[root@server0 ~]# chmod 600 /swap2.img
[root@server0 ~]# swapon -a


[root@server0 ~]# swapon -s
Filename Type Size Used Priority
/dev/vdb1 partition 524284 0 -1
/swap2.img file 524284 0 -2

4,对交换分区调整优先级[扩展]

关于swap优先级

swap分区的优先级(Priority)从高到低依次使用,最高32767,最低优先级是0
这样设置使得Linux并行的使用优先级相同的swap分区(Priority = 1的分区),这会大幅的提高对swap的读写。当这些分区满了,就会使用较低优先级swap分区(Priority = 0的分区)

设置swap优先级

多个交换分区分布在不同的磁盘
挂载时,使用相同的优先级

[root@server0 ~]# vim /etc/fstab
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults,pri=1 0 0
UUID="ea5b1c77-e540-465c-9644-0d75457f8b45" swap swap defaults,pri=1 0 0
pri是优先级的意思,设置相同即可。

[root@server0 ~]# swapon -a
[root@server0 ~]# swapon -s
Filename Type Size Used Priority
/dev/sdb1 partition 524284 0 1
/dev/sdc1 partition 524284 0 1










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值