【linux】之磁盘管理&RAID

任务背景

某天接到短信报警提示,显示某主机的根分区空间使用率超过85%,该主机用于影评(mysql)和报表数据库(oracle)。经查看发现其中MySQL数据库的数据文件存放在/usr/local/mysql/中,占用根文件系统空间导致。由于前期规划不合理,没有将业务数据和系统数据分开。经研究决定,要将影评的数据库单独放到另一块磁盘上,并且实现逻辑卷管理

任务要求

  1. 保证数据库完整的情况下将影评数据库迁移到另外一块新添加的磁盘上
  2. 考虑到数据增长情况,新磁盘使用lvm逻辑卷管理,方便日后动态扩容

任务拆解

  1. 需要有一块可用硬盘(需要在虚拟机里增加一块硬盘)
  2. 使用lvm方式管理磁盘(学习lvm相关的知识点)
  3. 迁移数据库(MySQL)业务维护时间(23:00—)
    1. 停监控(根据情况)
    2. 停前端应用
    3. 停MySQL数据库
    4. 备份数据库(全备)
    5. 将原有的数据库同步到新的设备存储上(数据同步rsync)
    6. 启动数据库(保证没有问题)
    7. 启动前端应用
    8. 测试人员测试
    9. 开门营业(记得打开监控)

涉及知识点

  • 磁盘分区相关概念和工具(fdisk)
  • LVM逻辑卷相关概念和工具使用(重点)

课程目标

  • 能够使用fdisk命令对磁盘进行分区
  • 熟悉设备的挂载方式(手动、开机自动、autofs自动)
  • 理解物理卷、卷组、逻辑卷的概念
  • 能够根据需求创建逻辑卷(重点)
  • 能够根据需求动态扩容逻辑卷(重点)
  • 熟练使用逻辑卷相关命令(pvcreate/vgcreate/lvcreate等)

理论储备

一、硬盘的基本知识
1.了解硬盘的接口类型

IDE ——> SATA I/II/III 个人pc机
SCSI ——> SAS 服务器上

2. 硬盘命名方式
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
3. 磁盘设备的命名

/dev/sda2

s=硬件接口类型(sata/scsi),d=disk(硬盘),a=第1块硬盘(b,第二块),2=第几个分区
/dev/hd h=IDE硬盘 /dev/hdd3
/dev/vd v=虚拟硬盘 /dev/vdf7

4. HP服务器硬盘

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

5. 硬盘的分区方式

MBR <2TB fdisk 4个主分区或者3个主分区+1个扩展分区(N个逻辑分区)

MBR(Master Boot Record)的缩写,由三部分组成,即:

  1. Bootloader(主引导程序)=446字节 硬盘第一个扇区=512字节
    • 引导操作系统的主程序
  2. DPT分区表(Disk Partition Table)=64字节
    • 分区表保存了硬盘的分区信息,操作系统通过读取分区表内的信息,就能够获得该硬盘的分区信息
    • 每个分区需要占用16个字节大小,保存有文件系统标识、起止柱面号、磁头号、扇区号、起始扇区位置(4个字节)、分区总扇区数目(4个字节)等内容
    • 分区表中保存的分区信息都是主分区与扩展分区的分区信息,扩展分区不能直接使用,需要在扩展分区内划分一个或多个逻辑分区后才能使用
    • 逻辑分区的分区信息保存在扩展分区内而不是保存在MBR分区表内,这样,就可以突破MBR分区表只能保存4个分区的限制
  3. 硬盘有效标志(校验位)=2个字节

GPT >2TB gdisk(parted) 128个主分区

注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失

扩展阅读:

二、硬盘的工作原理

了解

三、基本分区管理
1. 磁盘划分思路
  • 进入分区表 新建分区 fdisk /dev/sdb
  • 更新分区表<刷新分区表>
  • 格式化分区——>文件系统 mkfs.ext4 /dev/sdb1
  • 挂载使用——>mount【开机自动挂载|autofs自动挂载】
2. fdisk分区
2.1 使用fdisk分区
# lsblk
# df -h  查看正在挂载的设备情况
# fdisk -l		查看当前系统的所有设备分区情况
# fdisk  /dev/sdb

硬盘容量 = 柱面数 × 盘面数(磁头数) × 扇区数 × 扇区大小(一般为512字节)
Disk /dev/sda: 26.8 GB, 26843545600 bytes   磁盘空间
 255 heads, 63 sectors/track, 3263 cylinders
 255磁头    63个扇区 每 磁道   3263个圆柱体
Units = cylinders of 16065 * 512 = 8225280 bytes       单元
Sector size (logical/physical): 512 bytes / 512 bytes
扇区大小(逻辑/物理)  都是512字节。
I/O size (minimum/optimal): 512 bytes / 512 bytes
I/O 大小(最小/最大) 都是512字节。
Disk identifier: 0x00030124   设备识别码

 启动设备加*           起始         结束      块           id     系统
 Device Boot      Start         End      Blocks     Id  System
/dev/sda1   *           1        2497    20051968   83  Linux
/dev/sda2            2497        2611      916481    5  Extended	扩展分区
/dev/sda3            2612        3263     5237190   83  Linux
/dev/sda5            2497        2611      916480   82  Linux swap / Solaris

Command(m for help): m      							输出帮助信息
Commandaction
   a  toggle a bootable flag  						设置启动分区
   b  edit bsd disklabel      						编辑分区标签
   c  toggle the dos compatibility flag
   d  delete a partition        						删除一个分区
   l  list known partition types  					列出分区类型
   m  print this menu         						帮助
   n  add a new partition     						建立一个新的分区
   o  create a new empty DOS partition table  	创建一个新的空白DOS分区表
   p  print the partition table               	打印分区表
   q  quit without saving changes           		退出不保存设置
   s   createa new empty Sun disklabel				创建一个新的空的SUN标示
   t   changea partition's system id          	改变分区的类型
   u   changedisplay/entry units            		改变显示的单位
   v   verifythe partition table              	检查验证分区表
   w  write table to disk and exit           	保存分区表

总结:

  1. 最多只能分4个主分区,主分区编号1-4
  2. 逻辑分区大小总和不能超过扩展分区大小,逻辑分区分区编号从5开始
  3. 如果删除扩展分区,下面的逻辑卷分区也被删除
  4. 扩展分区的分区编号(1-4)

任务1:

添加一块硬盘,需要将其分两个分区,分别格式化成ext4和vfat格式文件系统使用,最终需要使用2G空间。

思路:
1. 增加一块硬盘
2. 使用fdisk命令进行分区
3. 格式化指定分区
4. 创建一个空的目录作为挂载点
5. 挂载使用

步骤:
1. 增加硬盘
增加完硬盘记得重启系统
# lsblk	查看硬盘是否添加成功
...
sdb                       8:16   0   10G  0 disk
[root@web ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
2. 使用fdisk命令分区
[root@web ~]# fdisk /dev/sdb
Command (m for help): p			打印分区表信息

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x31dd29ec

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n			创建新分区
Command action
   e   extended		扩展分区
   p   primary partition (1-4)   主分区
p
Partition number (1-4): 1		选择主分区编号
First cylinder (1-1305, default 1): 	起始柱面默认即可(直接回车)
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +1G  分区大小1G

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x31dd29ec

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (133-1305, default 133): 
Using default value 133
Last cylinder, +cylinders or +size{K,M,G} (133-1305, default 1305): +1G

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x31dd29ec

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133         264     1060290   83  Linux

Command (m for help): w			保存退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

3. 再次查看分区情况
# lsblk
sdb                       8:16   0   10G  0 disk 
├─sdb1                    8:17   0    1G  0 part 
└─sdb2                    8:18   0    1G  0 part 

4. 刷新分区表信息
[root@web ~]# partx -a /dev/sdb
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2

5. 格式化分区
[root@web ~]# mkfs.ext4 /dev/sdb1
[root@web ~]# yum -y install dosfstools   需要mkfs.vfat命令,安装软件
[root@web ~]# mkfs.vfat /dev/sdb2

6. 创建新的挂载点
[root@web ~]# mkdir /u01
[root@web ~]# mkdir /u02

7. 挂载使用
[root@web ~]# mount /dev/sdb1 /u01
[root@web ~]# mount /dev/sdb2 /u02

总结:

  1. 扩展分区的大小决定了所有逻辑分区的大小
  2. 删除扩展分区后下面的逻辑分区都被删除
  3. 分完区后需要手动刷新分区表,如果刷新不成功需要重启操作系统
  4. 创建分区的时候尽可能注意分区序号的连续性
2.2 挂载分区设备

手动挂载:

mount   [options]     需要挂载的设备     挂载点
特点:系统重启后需要重新挂载;手动卸载后需要手动挂载

-o:挂载选项	ro,sync,rw,remount
-t:文件系统类型
mount -t nfs=mount.nfs
mount -t cifs=mount.cifs

10.1.1.2  /share   [smb]

mount.cifs -o user=user01,password=123 //10.1.1.2/smb /u01
mount.nfs 10.1.1.2:/share /u02

[root@MissHou ~]# mount -o remount,ro /u02		//可以是挂载点也可以是设备
remount:重新挂载一个正在挂载的设备

# mount -o remount,ro /dev/sdb1		
# mount -o remount,ro /u01
注意:后面可以根挂载点也可以跟设备本身


挂载设备:真实设备、设备UUID,设备的卷标
/dev/sdb
/dev/sdb1
[root@MissHou ~]# blkid /dev/sdb1				//查看设备的UUID和文件系统类型
/dev/sdb1: UUID="FD3A-F14D" TYPE="vfat" 
[root@MissHou ~]# blkid /dev/sdb2
/dev/sdb2: UUID="f1cc2198-7e5f-4408-9c74-9b93d4716d8d" TYPE="ext4"
[root@server ~]# e2label /dev/sdb1 DISK1

说明:e2label只能够对ext2~ext4的文件系统设置卷标

[root@MissHou ~]# e2label /dev/sdb2 disk2
[root@MissHou ~]# blkid /dev/sdb2
/dev/sdb2: UUID="f1cc2198-7e5f-4408-9c74-9b93d4716d8d" TYPE="ext4" LABEL="disk2"

卸载设备:umount
[root@MissHou ~]# umount /u01
[root@MissHou ~]# umount /dev/sdb2


开机自动挂载:

操作系统启动流程:

  1. 硬件初始化 硬盘、内存、。。。HD
  2. 系统初始化 /sbin/init—>xxxxxx/etc/fstab
# 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
# mount -a
特点:系统重启后自动挂载;手动卸载后重启会自动挂载或者使用mount -a自动挂载

/etc/fstab文件:
格式:
要挂载的资源路径	挂载点	文件系统类型	挂载选项	dump备份支持  文件系统检测
UUID=289370eb-9459-42a8-8cee-7006507f1477   /      ext4    defaults        1 1
1段:挂载的设备(磁盘设备的文件名或设备的卷标或者是设备的UUID)
2段:挂载点(建议用一个空目录),建议不要将多个设备挂载到同一个挂载点上
3段:文件系统类型(ext3、ext4、vfat、ntfs(安装软件包)、swap等等)
4段:挂载选项
async/sync  异步/同步:
auto/noauto     自动/非自动:
rw/ro   读写/只读:
exec/noexec     可被执行/不可被执行:
remount     重新挂在一个已经挂载的文件系统,常用于修改挂载参数
user/nouser     允许/不允许其他普通用户挂载:
suid/nosuid     具有/不具有suid权限:该文件系统是否允许SUID的存在。
usrquota    这个是在启动文件系统的时候,让其支持磁盘配额,这个是针对用户的。
grpquota    支持用户组的磁盘配额。
....
defaults 同时具有rw, dev, exec, acl, async,nouser等参数。

mount -a  重新读取/etc/fstab文件内容

man mount 可以找到详细信息

5段:是否支持dump备份。//dump是一个用来备份的命令,0代表不要做dump备份,1代表要每天进行dump的动作,2也代表其他不定日期的dump备份。通常这个数值不是0就是1。数字越小优先级越高。

6段:是否用 fsck 检验扇区。//开机的过程中,系统默认会用fsck检验文件系统是否完整。0是不要检验,1表示最先检验(一般只有根目录会设定为1),2也是要检验,只是1是最先,2是其次才进行检验。

# fsck -f /dev/sdb2		强制检验/dev/sdb2上文件系统

说明:
要挂载的资源路径可以是文件系统的UUID,设备路径,文件系统的标签 ,光盘镜像文件(iso),亦或是来自网络的共享资源等

建议:
/etc/rc.local  操作系统启动后读取的最后一个文件

vim /etc/rc.local
...
/bin/mount -o noexec,ro /dev/sdb1 /u01

自动挂载 Automount:

特点:挂载是由访问产生;卸载是由超时产生;依赖于后台的autofs服务
思路:
1. 所有的监控都是由一个程序完成  autofs
2. 服务启动后才会监控挂载的设备
3. 修改配置文件来指定需要监控的设备


需求1:让系统自动挂载/dev/sdb1设备,如果2分钟没有被用自动卸载

步骤:
1)安装autofs软件
[root@server ~]# rpm -q autofs
package autofs is not installed
[root@server ~]# 
[root@server ~]# yum list|grep autofs
autofs.x86_64                           1:5.0.5-88.el6                    local 
libsss_autofs.x86_64                    1.9.2-129.el6                     local 
[root@server ~]# yum -y install autofs

[root@server ~]# rpm -q autofs
autofs-5.0.5-88.el6.x86_64
2)修改配置文件(指定需要监控的设备和挂载的目录)
vim /etc/auto.master		//定义一级挂载点/u01和子配置文件
/u01    /etc/auto.test	-t 120 或者 --timeout 120  单位秒   (设置超时时间去卸载)

vim /etc/auto.test			//子配置文件自己创建,定义二级挂载点和需要挂载的设备
test  -fstype=ext4,ro   :/dev/sdb5


3)重启服务
[root@MissHou ~]# service autofs restart
Stopping automount:                                        [  OK  ]
Starting automount:                                        [  OK  ]
[root@MissHou ~]# 

4)测试验证
[root@server ~]# ls /u01/test
[root@server ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G  6.6G  9.9G  41% /
tmpfs                         491M     0  491M   0% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
/dev/sr0                      4.2G  4.2G     0 100% /mnt


后续补充:
如果想要将/dev/sdb5挂载到/u01下,怎么做?
vim /etc/auto.master
/-		/etc/auto.test

vim /etc/auto.test
/u01	-fstype=ext4 :/dev/sdb5

需求2:将10.1.1.1(node1)上的共享目录/share/nfs挂载到10.1.1.2(server)本地的/notes下面

环境:
node1:10.1.1.1	搭建NFS服务,共享/share/nfs/xxx
server:10.1.1.2   使用autofs自动挂载server上共享目录
步骤:
1. node1端共享文件
1)修改/etc/exports文件
[root@node1 ~]# mkdir /share/nfs -p
[root@node1 ~]# touch /share/nfs/file{1..5}
[root@node1 ~]# vim /etc/exports 
[root@node1 ~]# cat /etc/exports 
/share/nfs	10.1.1.2/24(rw)
2)重启nfs服务
[root@node1 ~]# service rpcbind restart
[root@node1 ~]# service nfs restart

2. server端使用autofs方式自动挂载
[root@server ~]# showmount -e 10.1.1.1
Export list for 10.1.1.1:
/share/nfs 10.1.1.2/24
[root@server ~]# 
[root@server ~]# vim /etc/auto.master
/-	/etc/auto.notes  --timeout 60
[root@server ~]# vim /etc/auto.notes
/notes	-nfs,ro  10.1.1.1:/share/nfs

3) 重启服务
[root@server ~]# service autofs restart
Stopping automount:                                        [  OK  ]
Starting automount:                                        [  OK  ]

4)测试验证
[root@server ~]# ls /notes
file1  file2  file3  file4  file5
[root@server ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G  6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值