一、硬盘的基本知识
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 gdisk(parted) 128个主分区
注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!
扩展阅读:www.eassos.cn/jiao-cheng/…
二、硬盘的工作原理
三、基本分区管理
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:
添加一块硬盘,需要将其分两个分区,分别格式化成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
总结:
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
开机自动挂载:
操作系统启动流程:
# 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.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
10.1.1.1:/share/nfs 18G 4.1G 13G 25% /notes
注意:一级和二级挂载点可以不用创建,autofs可以让我们临时使用
总结:挂载设备的三种方式
-
- 重启需要再次重新挂载
-
- /etc/fstab 修改特别小心(不建议)
- 修改/etc/rc.local文件 启动后最后读取文件,执行该文件必须要有可执行权限
-
- 使用时触发自动挂载
- 超时自动卸载
- 如何配置设备的autofs自动挂载 1)安装autofs软件 2)修改/etc/auto.master文件 定义1级挂载点和超时时间,子配置文件 3)创建刚刚定义的子配置文件 二级挂载点和需要挂载设备以及文件系统类型及挂载方式 4)启动服务,测试验证
四、逻辑卷管理(重点)
1. 逻辑卷介绍
逻辑卷: 逻辑卷(LVM):它是Linux环境下对磁盘分区进行管理的一种机制,它是建立在物理存储设备之上的一个抽象层,优点在于灵活管理。 特点: 1、动态在线扩容(重点) 2、离线裁剪 3、数据条带化 4、数据镜像
2. 逻辑卷基本概念
- 物理卷(Physical Volume,PV)
物理卷是底层真正提供容量,存放数据的设备,它可以是整个硬盘、硬盘上的分区等。
- 卷组(Volume Group, VG)
卷组建立在物理卷之上,它由一个或多个物理卷组成。即把物理卷整合起来提供容量分配。 一个LVM系统中可以只有一个卷组,也可以包含多个卷组。
- 逻辑卷(Logical Volume, LV)
逻辑卷建立在卷组之上,它是从卷组中“切出”的一块空间。它是最终用户使用的逻辑设备。逻辑卷创建之 后,其大小可以伸缩。
- 物理区域 PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是能被LVM寻址的最小单元。PE的大小可指定,默认为4 MB。 PE的大小一旦确定将不能改变,同一个卷组中的所有物理卷的PE的大小是一致的。 4MB=4096kb=4096kb/4kb=1024个block
说明:
- 逻辑区域 LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
真实的物理设备——>逻辑上(命令创建)——>物理卷(pv)——>卷组(vg)——>逻辑卷(lv)——>逻辑卷格式化——>挂载使用
3. 逻辑卷LVM应用
3.1 逻辑卷创建
需求:创建一个2.5G大小的逻辑卷
思路:
1. 物理的设备
2. 将物理设备做成物理卷
3. 创建卷组并将物理卷加入其中
4. 创建逻辑卷
5. 格式化逻辑卷
6. 挂载使用
步骤:
1. 物理设备
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 2G 0 part
├─sdb3 8:19 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
└─sdb7 8:23 0 2G 0 part
2. 创建物理卷
[root@server ~]# pvcreate /dev/sdb1 /dev/sdb2
查看物理卷:
[root@server ~]# pvs 简单查看
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 a-- 2.01g 2.01g
/dev/sdb2 lvm2 a-- 2.01g 2.01g
[root@server ~]# pvdisplay /dev/sdb1 详细查看
3. 创建卷组并将物理卷加入其中
[root@server ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
Volume group "vg01" successfully created
查看卷组信息:
[root@server ~]# vgs vg01 简单查看
VG #PV #LV #SN Attr VSize VFree
vg01 2 0 0 wz--n- 4.01g 4.01g
[root@server ~]# vgdisplay vg01 详细查看
4. 创建逻辑卷
[root@server ~]# lvcreate -n lv01 -L 2.5G vg01
Logical volume "lv01" created
在操作系统层面映射两个地方:
[root@server ~]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx 1 root root 7 Jan 7 11:16 /dev/mapper/vg01-lv01 -> ../dm-2
[root@server ~]# ll /dev/vg01/lv01
lrwxrwxrwx 1 root root 7 Jan 7 11:16 /dev/vg01/lv01 -> ../dm-2
查看逻辑卷的信息:
[root@server ~]# lvdisplay /dev/vg01/lv01
-n:指定逻辑卷的名字
-L:指定逻辑卷的大小
-l:指定逻辑卷的大小
举例:
-l 100 100个PE,每个PE大小默认4M,故逻辑卷大小为400M
-l 50%free 卷组剩余空间的50%
[root@server ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 1 1 0 wz--n- 2.00g 516.00m
创建大小为200M的逻辑卷lv02;每个PE为4M,-l50指定50个PE,大小为200M
[root@server ~]# lvcreate -n lv02 -l50 vg01
Logical volume "lv02" created
[root@server ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 1 2 0 wz--n- 2.00g 316.00m
[root@server ~]# lvs /dev/vg01/lv02
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv02 vg01 -wi-a----- 200.00m
创建大小为剩余卷组vg01空间的50%的逻辑卷lv03
[root@server ~]# lvcreate -n lv03 -l50%free vg01
Logical volume "lv03" created
[root@server ~]# lvs /dev/vg01/lv03
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv03 vg01 -wi-a----- 156.00m
[root@server ~]# vgs vg01
VG #PV #LV #SN Attr VSize VFree
vg01 1 3 0 wz--n- 2.00g 160.00m
5. 格式化逻辑卷
[root@server ~]# mkfs.ext4 /dev/vg01/lv01
6. 挂载使用
1)创建一个空的挂载点
2)挂载使用
[root@server ~]# mount /dev/vg01/lv01 /u01
3.2 逻辑卷动态扩容
需求:将/u01目录动态扩容到3G
思路:
1. 查看/u01目录所对应的逻辑卷是哪一个 /dev/mapper/vg02-lv01
2. 查看当前逻辑卷所在的卷组vg01剩余空间是否足够
3. 如果vg01空间不够,得先扩容卷组,再扩容逻辑卷
4. 如果vg01空间足够,直接扩容逻辑卷
步骤:
1. 查看/u01目录属于哪个卷组
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv_root 18G 5.9G 11G 36% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 291M 33M 244M 12% /boot
/dev/sr0 4.2G 4.2G 0 100% /mnt
/dev/mapper/vg02-lv01 1.5G 35M 1.4G 3% /u01
[root@web ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Conver
lv01 vg02 -wi-ao---- 1.50g
2. 卷组的剩余空间
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 2 0 wz--n- 19.70g 0
vg02 1 1 0 wz--n- 2.00g 516.00m
结果:当前卷组空间不足我扩容
3. 扩容逻辑卷所在的卷组
1)首先得有物理设备 /dev/sdb5
2) 将物理设备做成物理卷
[root@web ~]# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg01 lvm2 a-- 19.70g 0
/dev/sdb5 lvm2 a-- 2.01g 2.01g
/dev/sdb6 vg02 lvm2 a-- 2.00g 516.00m
3)将物理卷加入到卷组中(卷组扩容)
[root@web ~]# vgextend vg02 /dev/sdb5
Volume group "vg02" successfully extended
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg01 lvm2 a-- 19.70g 0
/dev/sdb5 vg02 lvm2 a-- 2.00g 2.00g
/dev/sdb6 vg02 lvm2 a-- 2.00g 516.00m
注意:
正常情况下,应该先将/dev/sdb5物理设备创建为物理卷再加入到卷组中;如果直接加入卷组,系统会自动帮你将其做成物理卷。
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 2 0 wz--n- 19.70g 0
vg02 2 1 0 wz--n- 4.01g 2.51g
4. 扩容逻辑卷
[root@web ~]# lvextend -L 3G /dev/vg02/lv01 -L 3G最终的大小
或者
[root@web ~]# lvextend -L +1.5G /dev/vg02/lv01 -L +1.5G 扩容1.5G
5. 查看结果
[root@web ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root vg01 -wi-ao---- 17.70g
lv_swap vg01 -wi-ao---- 2.00g
lv01 vg02 -wi-ao---- 3.00g 已经扩容到了3G
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv_root 18G 5.9G 11G 36% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 291M 33M 244M 12% /boot
/dev/sr0 4.2G 4.2G 0 100% /mnt
/dev/mapper/vg02-lv01 1.5G 35M 1.4G 3% /u01 实际并没有改变
6. 同步文件系统
[root@web ~]# resize2fs /dev/vg02/lv01
7. 再次查看验证
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg01-lv_root 18G 5.9G 11G 36% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 291M 33M 244M 12% /boot
/dev/sr0 4.2G 4.2G 0 100% /mnt
/dev/mapper/vg02-lv01 3.0G 35M 2.8G 2% /u01 扩容成功
离线裁剪逻辑卷(了解)
[root@server ~]# umount /data/
[root@server ~]# e2fsck -f /dev/vg01/lv01 检验文件系统
[root@server ~]# resize2fs /dev/vg01/lv01 2G 裁剪文件系统到2G
[root@server ~]# lvreduce /dev/vg01/lv01 -L 2G 裁剪逻辑卷
[root@server ~]# mount /dev/vg01/lv01 /data 挂载使用
3.3 逻辑卷相关命令
创建物理卷:pvcreate
pvcreate /dev/sdb1
创建卷组:vgcreate
vgcreate vg01 /de/sdb1
创建逻辑卷:lvcreate
lvcreate -n lv01 -L 1G vg01
lvcreate -n lv01 -l 100 vg01
lvcreate -n lv01 -l 100%free vg01
删除逻辑卷:lvremove
lvremove /dev/vg01/lv01
删除卷组:vgremove
vgremove vg01
说明:卷组里的物理卷没有被使用才可以直接删除卷组
删除物理卷:pvremove
pvremove /dev/sdb1
扩容卷组:vgextend
vgextend vg01 /dev/sdb2
扩容逻辑卷:lvextend
lvextend /dev/vg01/lv01 -L +2G
同步文件系统:
resize2fs /dev/vg01/lv01
裁剪卷组:vgreduce
vgreduce vg01 /dev/sdb2
裁剪逻辑卷:lvreduce
五、 扩容swap空间
方法1:增加一个硬盘或者分区来扩容swap空间
查看swap空间大小:
[root@web ~]# free -m
total used free shared buffers cached
Mem: 1861 646 1215 0 9 60
-/+ buffers/cache: 576 1285
Swap: 2047 0 2047
[root@web ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097144 0 -1
[root@web ~]# mkswap /dev/sdb7
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=485ff8ad-a636-4556-a2e7-4ee9efc78afb
[root@web ~]# blkid /dev/sdb7
/dev/sdb7: UUID="485ff8ad-a636-4556-a2e7-4ee9efc78afb" TYPE="swap"
//激活swap分区。swap空间不能手动挂载
[root@server ~]# swapon /dev/sdb7
[root@server ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2031608 0 -1
/dev/sdb7 partition 2064312 0 -2
方法2:使用dd命令模拟大文件来扩容swap
[root@server ~]# dd if=/dev/sr0 of=/rhel6.iso
[root@server ~]# dd if=/dev/sda1 of=/tmp/bak.boot
[root@server ~]#
[root@server ~]# dd if=/dev/zero of=/dev/sda1 bs=1M count=100 //不要执行
if=源文件
of=目标文件
bs=复制数据的大小
count=复制的个数
注意:
1. 一般可以使用dd命令做块设备文件的备份
2. /dev/zero 特殊设备,一般用来模拟一个大文件,源源不断的二进制的bit流;
/dev/null 空设备,类似黑洞
步骤:
1. 使用dd命令模拟大文件
# dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024
2. 格式化大文件
[root@server ~]# mkswap /tmp/swapfile
3.激活大文件
[root@server ~]# swapon -p 1 /tmp/swapfile
-p:指定优先级,数字越大优先级越高,0-32767
4. 查看
[root@server ~]# swapon -s
Filename Type Size Used Priority
/tmp/swapfile file 1048568 0 1
如果开机自动挂载,需要修改文件:/etc/fstab
/swap_file swap swap defautls,pri=1 0 0
六、逻辑卷实现条带化
条带化:
把保存到逻辑卷的数据分成n等分,分别写到不同的物理卷,可以提高数据的读写效率;
如果任何一个涉及到的物理卷出现故障,数据都会无法恢复。
sdc 8:32 0 20G 0 disk
├─sdc1 8:33 0 2G 0 part
└─sdc2 8:34 0 2G 0 part
创建物理卷
[root@server ~]# pvcreate /dev/sdc[12]
查看物理卷
[root@server ~]# pvs
/dev/sdc1 lvm2 a-- 2.01g 2.01g
/dev/sdc2 lvm2 a-- 2.01g 2.01g
创建卷组:
[root@server ~]# vgcreate vg01 /dev/sdc[12]
[root@web ~]# pvs /dev/sdc[12]
PV VG Fmt Attr PSize PFree
/dev/sdc1 vg01 lvm2 a-- 2.00g 2.00g
/dev/sdc2 vg01 lvm2 a-- 2.00g 2.00g
创建实现条带化的逻辑卷:
[root@server ~]# lvcreate -n lv01 -L 1G vg01 -i 2 /dev/sdc[12]
Using default stripesize 64.00 KiB
Logical volume "lv01" created
[root@server ~]# lvs /dev/vg01/lv01
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv01 vg01 -wi-a----- 1.00g
[root@server ~]# pvs /dev/sdc[12]
PV VG Fmt Attr PSize PFree
/dev/sdc1 vg01 lvm2 a-- 2.00g 1.50g
/dev/sdc2 vg01 lvm2 a-- 2.00g 1.50g
-i 参数:给出条带化的数量
格式化挂载使用:
[root@server ~]# mkfs.ext4 /dev/vg01/lv01
[root@server ~]# mount /dev/vg01/lv01 /u01
测试:
[root@server ~]# yum -y install sysstat
[root@server ~]# iostat -m -d /dev/sdc[12] 2
-d 查看磁盘
-m 以什么速度显示,每秒M
2 每隔2s显示一次
如果后面还有数字则代表总共显示多少次
[root@server ~]# dd if=/dev/zero of=/u01/test bs=1M count=1000 模拟写数据
[root@server ~]# iostat -m -d /dev/sdc[12] 1
。。。
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdb5 178.00 0.00 52.00 0 52
sdb6 177.00 0.00 52.00 0 52
七、逻辑卷实现镜像
逻辑卷实现镜像:
镜像:对某个逻辑卷的数据做镜像,起到数据备份的作用。
当前环境:
├─sdb7 8:23 0 2G 0 part
└─sdb8 8:24 0 2G 0 part
创建物理卷:
[root@web ~]# pvcreate /dev/sdb[78]
[root@web ~]# pvs /dev/sdb[78]
PV VG Fmt Attr PSize PFree
/dev/sdb7 lvm2 a-- 2.01g 2.01g
/dev/sdb8 lvm2 a-- 2.01g 2.01g
将物理卷加入到vg02卷组:
[root@web ~]# vgextend vg02 /dev/sdb[78]
Volume group "vg02" successfully extended
[root@web ~]# vgs vg02
VG #PV #LV #SN Attr VSize VFree
vg02 4 1 0 wz--n- 8.02g 6.02g
创建实现镜像的逻辑卷:
[root@web ~]# lvcreate -n lv02 -L 2G vg02 -m 1 /dev/sdb[78]
Logical volume "lv02" created
-m参数:给出镜像的个数;1表示1个镜像
[root@web ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root vg01 -wi-ao---- 17.70g
lv_swap vg01 -wi-ao---- 2.00g
lv01 vg02 -wi-ao---- 2.00g
lv02 vg02 mwi-a-m--- 2.00g lv02_mlog 38.67
lv-mysql vg03 -wi-ao---- 10.00g
说明: Cpy%Sync 53.52该值是100%说明复制ok
创建后:
[root@web ~]# pvs /dev/sdb[78]
PV VG Fmt Attr PSize PFree
/dev/sdb7 vg02 lvm2 a-- 2.00g 4.00m
/dev/sdb8 vg02 lvm2 a-- 2.00g 0
格式化逻辑卷:
[root@web ~]# mkfs.ext4 /dev/vg02/lv02
挂载使用
[root@web ~]# mount /dev/mapper/vg02-lv02 /u02
[root@web ~]# touch /u02/file{1..3}
[root@web ~]# mkdir /u02/dir{1..3}
测试验证:
思路:损坏一个磁盘,测试数据是否在第二个物理卷中
1. 使用dd命令破坏一个物理卷
[root@web ~]# dd if=/dev/zero of=/dev/sdb7 bs=1M count=100
2. 再次查看物理卷发现有一个unknown Device
/dev/sdc vg03 lvm2 a-- 20.00g 10.00g
unknown device vg02 lvm2 a-m 2.00g 4.00m
3. 将损坏的盘从卷组中移除
vgreduce vg02 --removemissing --force
4. 再次查看挂载点/u02数据依然存在
自己也可以再次测试:
1. 再拿刚刚人为损坏的盘做成物理卷再次加入到vg02卷组中
[root@web ~]# pvcreate /dev/sdb7
Physical volume "/dev/sdb7" successfully created
[root@web ~]# vgextend vg02 /dev/sdb7
Volume group "vg02" successfully extended
2. 再次让/dev/sdd5和/dev/sdd6互为镜像
[root@web ~]# lvconvert -m 1 /dev/vg02/lv02 /dev/sdb[78]
vg02/lv02: Converted: 0.0%
vg02/lv02: Converted: 32.2%
vg02/lv02: Converted: 65.8%
vg02/lv02: Converted: 97.7%
vg02/lv02: Converted: 100.0%
3. 等待复制完成就可以再次人为模拟另一块物理卷损坏继续测试
八、逻辑卷快照
1. 创建快照 (EXT4)
[root@node1 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2 给lv2逻辑卷创建快照
[root@node1 ~]# mount -o ro /dev/vg1/lv2-snap /mnt/lv2-snap/ 挂载快照
[root@node1 ~]# 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
[root@node1 ~]# dmsetup ls --tree
vg1-lv2--snap (252:5)
├─vg1-lv2--snap-cow (252:7) 保存原卷改变前的数据
│ └─ (253:17)
└─vg1-lv2-real (252:6) 真实的逻辑卷(原卷)
├─ (253:17)
└─ (253:18)
vg1-lv2 (252:1)
└─vg1-lv2-real (252:6)
├─ (253:17)
└─ (253:18)
2. 修改原卷的数据
[root@server ~]# dd if=/dev/zero of=/u01/test bs=1M count=30
3. 观察Snapshot
[root@server ~]# lvs /dev/vg1/lv2-snap
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
s-lv01 vg01 swi-aos--- 52.00m lv01 0.16
[root@server ~]# lvs /dev/vg1/lv2-snap
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
s-lv01 vg01 swi-aos--- 52.00m lv01 58.16
XFS:
[root@node1 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/s
挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据
应用场景:
/var/lib/mysql
1. 锁表
2. 备份【逻辑|物理备份】
3. 解锁
100G 物理备份 /var/lib/mysql/xxx
1. 锁表
2. 创建快照
3. 解锁
4. 挂载快照
5. 备份到指定地方
6. 删除快照
快照实现自动扩容:
/etc/lvm/lvm.conf
snapshot_autoextend_threshold = 80
snapshot_autoextend_percent = 20
//当快照使用到80%时,自动扩容20%;当snapshot_autoextend_threshold = 100表示关闭自动扩容
九、磁盘配额
磁盘配额 quota
===========================================================================
作用: 限制用户或组对磁盘空间的使用,例如文件服务器,邮件服务器...
一、启用磁盘限额
1. 让文件系统支持配额 [ext3/4]
# vim /etc/fstab
/dev/vg02/lv02 /u01 ext4 defaults,usrquota,grpquota 0 0
# umount /u01
# mount -a
# mount |grep u01
/dev/mapper/vg02-lv02 on /u01 type ext4 (rw,usrquota,grpquota)
2. 创建磁盘配额的数据库文件
注意: 建议停用SELinux
[root@server ~]# yum -y install quota
[root@server ~]# quotacheck -acug
[root@server ~]# ll /u01
total 16
-rw------- 1 root root 6144 Sep 17 09:28 aquota.group
-rw------- 1 root root 6144 Sep 17 09:28 aquota.user
//-a 所有分区(已支持配额)
//-c 创建
//-u 用户
//-g 组
3.启动磁盘配额
# quotaon -a //启动所有分区的磁盘配额
二、日常管理
设置配额:
方法一:edquota
# edquota -u stu1
Disk quotas for user stu1 (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/vg01-lv01 0 0 0 0 0 0
soft:又称软限制,当用户到达这个限制以后,系统会给予警告,但仍可写入。
hard:又称硬限制,到达这个限制,就完全禁止任何写入
以下三个为磁盘空间的限制设置:
blocks:已使用空间,无需要设置
soft:用户空间使用限制,为软限制,需要设置
hard:用户空间使用限制,为硬限制,需要设置
以下三个为总文件个数的限制:
inodes:已有文件总数,无需要设置
soft:文件总数限制,为软限制,需要设置
hard:文件总数限制,为硬限制,需要设置
我们要限制stu1用户使用空间10M,最多不能超过12M,文件总数为200个,
最多不能超过250个,设置如下:
Filesystem blocks soft hard inodes soft hard
/dev/mapper/vg01-lv01 0 10240 12288 0 200 250
注:空间限制是以k为单位的。
grace time: 宽限期,默认7天
# edquota -t 修改配额的宽限期
测试:
# su - stu1
[stu1@vm1 data]$ dd if=/dev/zero of=test99 bs=1M count=11
dm-1: warning, user block quota exceeded.
11+0 records in
11+0 records out
11534336 bytes (12 MB) copied, 0.108284 s, 107 MB/s
[stu1@vm1 data]$ dd if=/dev/zero of=test99 bs=1M count=13
dm-1: warning, user block quota exceeded.
dm-1: write failed, user block limit reached.
dd: writing `test99': Disk quota exceeded
13+0 records in
12+0 records out
12582912 bytes (13 MB) copied, 0.257964 s, 48.8 MB/s
[stu1@vm1 data]$ touch file{1..6}
dm-1: warning, user file quota exceeded.
[stu1@vm1 data]$ touch file{1..11}
dm-1: write failed, user file limit reached.
touch: cannot touch `file10': Disk quota exceeded
touch: cannot touch `file11': Disk quota exceeded
[stu1@vm1 data]$ quota //查看自己的配额情况
Disk quotas for user stu1 (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/mapper/vg01-lv01
12288* 10240 12288 24:00 1 5 10
方法二: setquota
# setquota -u username block软限制 block硬限制 inode软限制 inode硬限制 分区
# setquota -u jack 80000 100000 15 20 /dev/sda2
# quota jack
方法三:复制
# edquota -p alice tom robin user1 user2 user3
将alice的配额方案复制给后面所有用户
# for i in {1..10}
> do
> useradd zhang$i
> edquota -p stu1 zhang$i
> done
+++查看配额+++
查看单个用户的配额: # quota jack
查看所有用户的配额: # repquota -a
# repquota -ag
普通用户查看自己配额: $ quota
扩展知识:针对组设置配额
例1:限制hr组的成员能在/home/hr目录中:100M 50文件
# groupadd hr
# useradd hr01 -G hr
# useradd hr02 -G hr
# mkdir /home/hr
# chgrp hr /home/hr
# chmod 2770 /home/hr
# ll -d /home/hr
drwxrws--- 2 root hr 4096 09-12 17:07 /home/hr
# edquota -g hr
Disk quotas for group hr (gid 507):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/vg01-lv_home 4 0 102400 1 0 50
# repquota -ag
===========================================================================
rhel7:
注意:
1、不需要手动执行quotacheck命令对xfs文件系统进行检查,它会在mount的时候自动执行
2、不需要在xfs文件系统的根下生成quota数据文件
# mount -o uquota /dev/xvm/home /home
# xfs_quota -x -c 'limit bsoft=500m bhard=550m tanya' /home
# xfs_quota -x -c report /home
-x:专家模式
-c:交互模式,可加多个
十、GPT分区
gdisk工具分区
parted工具分区
GPT 128个主分区
1.创建分区
# gdisk -l /dev/sdc
# gdisk /dev/sdc
# partprobe /dev/sdc
# ll /dev/sdc*
2.创建文件系统(格式化)redhat7默认使用xfs
# mkfs.xfs /dev/sdb1
3.挂载(手动、开机自动、autofs自动)
# mkdir /mnt/disk1
# mkdir /mnt/disk2
# mount -t xfs -o ro /dev/sdb1 /mnt/disk1 //手动挂载
# umount /mnt/disk1
十一、RAID介绍
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能,能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。
十二、常见的RAID级别
1. RAID0
RAID0特点:
- 至少需要两块磁盘
- 数据条带化分布到磁盘,高的读写性能,100%高存储空间利用率
- 数据没有冗余策略,一块磁盘故障,数据将无法恢复
- 应用场景:
-
- 对性能要求高但对数据安全性和可靠性要求不高的场景,比如音频、视频等的存储。
2. RAID1
RAID1特点:
- 至少需要2块磁盘
- 数据镜像备份写到磁盘上(工作盘和镜像盘),可靠性高,磁盘利用率为50%
- 读性能可以,但写性能不佳
- 一块磁盘故障,不会影响数据的读写
- 应用场景:
-
- 对数据安全可靠要求较高的场景,比如邮件系统、交易系统等。
3. RAID5
RAID5特点:
- 至少需要3块磁盘
- 数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n
- 以奇偶校验(分散)做数据冗余
- 一块磁盘故障,可根据其他数据块和对应的校验数据重构损坏数据(消耗性能)
- 是目前综合性能最佳的数据保护解决方案
- 兼顾了存储性能、数据安全和存储成本等各方面因素(性价比高)
- 适用于大部分的应用场景
4. RAID6
RAID6特点:
- 至少需要4块磁盘
- 数据条带化存储在磁盘,读取性能好,容错能力强
- 采用双重校验方式保证数据的安全性
- 如果2块磁盘同时故障,可以通过两个校验数据来重建两个磁盘的数据
- 成本要比其他等级高,并且更复杂
- 一般用于对数据安全性要求非常高的场合
5. RAID10
RAID10特点:
- RAID10是raid1+raid0的组合
- 至少需要4块磁盘
- 两块硬盘为一组先做raid1,再将做好raid1的两组做raid0
- 兼顾数据的冗余(raid1镜像)和读写性能(raid0数据条带化)
- 磁盘利用率为50%,成本较高
6. 总结
类型 | 读写性能 | 可靠性 | 磁盘利用率 | 成本 |
---|---|---|---|---|
RAID0 | 最好 | 最低 | 100% | 较低 |
RAID1 | 读正常;写两份数据 | 高 | 50% | 高 |
RAID5 | 读:近似RAID0 写:多了校验 | RAID0...............] recovery = 29.9% (317652/1058816) finish=0.3min speed=39706K/sec 等待同步完成再次查看: [root@server ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdc9[4] sdc10[3](S) sdc8[1] sdc7[0] S表示spare备份盘 2117632 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] 说明:热备盘表示当其中一块盘故障后,热备盘会立马顶上去,而不需要人为手动干预。 [root@server ~]# mdadm -D /dev/md5 查看详细信息 。。。 Number Major Minor RaidDevice State 0 8 39 0 active sync /dev/sdc7 1 8 40 1 active sync /dev/sdc8 4 8 41 2 active sync /dev/sdc9 3 8 42 - spare /dev/sdc10 格式化挂载使用: [root@server ~]# mkfs.ext4 /dev/md5 [root@server ~]# mount /dev/md1 /u03 查看空间使用情况: [root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg01-lv_root 18G 5.9G 11G 36% / tmpfs 931M 0 931M 0% /dev/shm /dev/sda1 291M 33M 244M 12% /boot /dev/sr0 4.2G 4.2G 0 100% /mnt /dev/md0 2.0G 1.1G 843M 57% /u01 利用率100% /dev/md1 1019M 34M 934M 4% /u02 利用率50% /dev/md5 2.0G 68M 1.9G 4% /u03 利用率(n-1)/n,即3-1/3*3g=2g 测试热备磁盘作用: 1. 标记一块活动盘失效 [root@server ~]# mdadm /dev/md5 -f /dev/sdc7 mdadm: set /dev/sdc7 faulty in /dev/md5 立即查看状态: [root@server ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdc9[4] sdc10[3] sdc8[1] sdc7[0](F) 说明: sdc7(F)失效后,原来的sdc10(S)热备盘立马顶上去同步数据 2117632 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [_UU] [==>..................] recovery = 13.0% (138052/1058816) finish=0.4min speed=34513K/sec ... unused devices: [root@server ~]# mdadm -D /dev/md5 ... Number Major Minor RaidDevice State 3 8 42 0 active sync /dev/sdc10 1 8 40 1 active sync /dev/sdc8 4 8 41 2 active sync /dev/sdc9 0 8 39 - faulty /dev/sdc7 2. 移除失效的盘 [root@server ~]# mdadm /dev/md5 -r /dev/sdc7 mdadm: hot removed /dev/sdc7 from /dev/md5 [root@server ~]# cat /proc/mdstat Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] md5 : active raid5 sdc9[4] sdc10[3] sdc8[1] 2117632 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] 3. 为了日后考虑,再次添加一个热备盘到raid5中 [root@server ~]# mdadm /dev/md5 -a /dev/sdc7 mdadm: added /dev/sdc7 课堂作业: 1. 创建一个raid5,raid5至少由3块磁盘设备组成 2. 模拟1块设备故障,检查raid5是否可以正常使用 2. 保存RAID信息
3. raid停止与启动
4. raid的删除
|