存储管理 一 .存储管理 主要知识点: 基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、RAID
1.1 初识硬盘
与传统硬盘相比,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
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 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.挂载。