磁盘的基本分区 gdisk
前面我们已经了解到fdisk分区,但fdisk不支持给高于2TB的磁盘进行分区。如果有单块盘高于2TB,建议使用Gdisk进行分区。
使用gdisk进行磁盘分区
1.查看gdisk命令属于哪个软件包
root@Hyman[15:14:48]~# yum provides gdisk
2.安装gdisk分区工具
root@Hyman[15:14:13]~# yum install gfisk -y
3.使用gdisk进行磁盘分区
root@Hyman[15:36:32]~# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): n #创建新分区
Partition number (1-128, default 1):
First sector (34-8589934558, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-8589934558, default = 8589934558) or {+-}size{KMGTP}: #将所有的都给这个分区
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p #打印查看
Disk /dev/sdb: 8589934592 sectors, 4.0 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): D38064E1-E437-4ACE-AD86-9E99CC7351D2
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 8589934558
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 8589934558 4.0 TiB 8300 Linux filesystem
Command (? for help): w #保存分区
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y #确认
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
4.创建完成后,可以尝试检查磁盘是否为gpt格式
root@Hyman[15:40:27]~# fdisk /dev/sdb -l | grep type
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk label type: gpt
5.安装parted,刷新内核立即生效,无需重启
root@Hyman[15:40:44]~# yum install parted -y
13'root@Hyman[15:41:31]~# partprobe /dev/sdb
6.使用mkfs命令格式化磁盘,给后面使用。
root@Hyman[15:41:49]~# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=268435391 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1073741563, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
磁盘挂载方式Mount
前面我们已经提到过,如果需要使用磁盘的空间,需要准备一个空的目录作为挂载点,与该设备进行关联。mount主要是为文件系统指定一个访问入口。
PS: 类似我的商场没有门,那么就无法进入购买商品,此时通过mount命令可以创建一个入口,给超市安装一个门。
1.通过mount进行挂载,但重启将会失效。我们称为临时生效。
选项 | 含义 |
---|---|
-t | 指定文件系统挂在分区 |
-a | 挂载/etc/fstab中的配置文件 |
-o | 指定挂载参数 |
挂载/dev/sdb1至db1目录
root@Hyman[15:43:12]~# mkdir /sdb1
root@Hyman[15:47:35]~# mount -t xfs /dev/sdb1 /sdb1/
2.挂载的磁盘,如果不想使用可以使用umount进行卸载。
选项 | 含义 |
---|---|
-l | 强制卸载 |
卸载目录方式
root@Hyman[15:47:56]~# umount /sdb1/
卸载设备方式
root@Hyman[15:49:45]~# umount /dev/sdb1
umount不能卸载的情况
root@Hyman[15:49:55]~# mount -t xfs /dev/sdb1 /sdb1/
root@Hyman[15:55:07]~# cd /sdb1/
root@Hyman[15:55:11]/sdb1# umount /dev/sdb1
umount: /sdb1: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
root@Hyman[15:55:18]/sdb1# umount -l /dev/sdb1
PS: 如上情况解决办法有两种, 1.切换至其他目录 2.使用'-l'选项强制卸载
3.如果需要实现永久挂载则需要将挂载信息写入/etc/fstab配置文件中实现。
使用blkid命令获取各设备的UUID
root@Hyman[15:56:56]~# blkid | grep "sdb1"
/dev/sdb1: UUID="f1ae79b4-dd4c-45be-88f7-0ee522c00d4c" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="65e619bd-e84d-42cf-8f28-fc8f9b977bac"
使用UUID挂载磁盘sdb1分区至于db1, 测试挂载
root@Hyman[15:58:33]~# mount UUID="f1ae79b4-dd4c-45be-88f7-0ee522c00d4c" /sdb1
写入/etc/fstab中,实现开机自动挂载
root@Hyman[15:59:24]~# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jul 25 00:23:54 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=d419051a-3782-4dae-a69c-090f264ec988 / xfs defaults 0 0
UUID=9939e9f8-8c48-4a4d-aa66-a867b7d70b52 /boot xfs defaults 0 0
UUID=89c8b810-88f4-4fe3-899e-457b926d14cd swap swap defaults 0 0
#
UUID="f1ae79b4-dd4c-45be-88f7-0ee522c00d4c" /sdb1 xfs defaults 0 0
加载fstab配置文件, 同时检测语法是否有错误
root@Hyman[16:01:54]~# mount -a
/etc/fstab配置文件编写格式
要挂载的设备 | 挂载点(入口) | 文件系统类型 | 挂载参数 | 是否备份 | 是否检查 |
---|---|---|---|---|---|
/dev/sdb1 | /sdb1 | xfs | defaults | 0 | 0 |
- 第四列:挂载参数。挂载参数有很多,在这块我们了解即可,不必深究。
参数 | 含义 |
---|---|
async/sync | 是否为同步方式运行。默认async |
user/nouser | 是否允许普通用户使用mount命令挂载。默认nouser |
exec/noexe | 是否允许可执行文件执行。默认exec |
suid/nosuid | 是否允许存在suid属性的文件。默认suid |
auto/noauto | 执行mount -a 命令时,此文件系统是否被主动挂载。默认auto |
rw/ro | 是否以只读或者读写模式进行挂载。默认rw |
default | 具有rw,suid,dev,exec,auto,nouser,async等默认参数的设定 |
- 第五列:是否进行备份。通常这个参数的值为0或者1
选项 | 含义 |
---|---|
0 | 代表不做备份 |
1 | 代表要每天进行备份操作 |
2 | 代表不定日期的进行备份操作 |
- 第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整
选项 | 含义 |
---|---|
0 | 不要检验磁盘是否有坏道 |
1 | 检验 |
2 | 校验 (当1级别检验完成之后进行2级别检验) |
swap交换分区 (磁盘充当内存)
内存不够,也没有配置swap会出现什么情况?
- 系统会出现oom机制, out of memroy
Aug 20 11:13:43 oldboy kernel: Out of memory: Kill process 7910 (dd) score 785 or sacrifice child Aug 20 11:13:43 oldboy kernel: Killed process 7910 (dd) total-vm:1746408kB, anon-rss:1638504kB, filerss:0kB, shmem-rss:0kB
内存不够,有配置swap又会出现什么情况?
- 1.会使用swap充当内容使用,防止系统出现oom故障
- 2.如果使用了swap,系统会变得特别的卡
Swap分区在系统的物理内存不够时,将硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。
PS: 当物理内存不够时会随机kill占用内存的进程,从而产生oom,临时使用swap可以解决。
创建分区,并格式化为swap分区。
root@Hyman[16:31:51]~# fdisk /dev/sdb
root@Hyman[16:32:09]~# mkswap /dev/sdb1
Setting up swapspace version 1, size = 10485756 KiB
no label, UUID=d0bc2710-591a-4628-9349-2418732aa0a9
查看当前swap分区大小,然后进行扩展和缩小
root@Hyman[16:21:01]~# free -m
total used free shared buff/cache available
Mem: 972 136 436 7 399 648
Swap: 1023 0 1023
扩展swap分区大小
root@Hyman[16:32:29]~# swapon /dev/sdb1
root@Hyman[16:32:56]~# free -m
total used free shared buff/cache available
Mem: 972 137 695 7 140 674
Swap: 11263 0 11263
swapon -a代表激活所有的swap
root@Hyman[16:33:02]~# swapon -a
缩小swap分区大小
root@Hyman[16:33:20]~# swapoff /dev/sdb1
root@Hyman[16:33:46]~# free -m
total used free shared buff/cache available
Mem: 972 129 703 7 140 682
Swap: 1023 0 1023
代表关闭所有的swap
root@Hyman[16:33:49]~# swapoff -a
root@Hyman[16:34:11]~# free -m
total used free shared buff/cache available
Mem: 972 128 703 7 140 683
Swap: 0 0 0
检查当前swap分区有哪些设备
root@Hyman[16:35:58]~# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 1048572 0 -2
/dev/sdb1 partition 10485756 0 -3
PS: 如果希望swap开机自动挂载,将swap信息追加至/etc/fstab即可。
磁盘阵列
什么是磁盘阵列
提高磁盘的整体读写能力,和冗余能力,通常我们将其称为磁盘阵列。
RAID
- 提高性能
- 保证安全
RAID模式
1.RAID0条带卷
RAID0条带卷,最少凉快盘。读写性能好,但没有容错机制。坏一块磁盘数据全丢。主要应用在web服务器。
RAID1镜像卷
RAID1镜像卷,写入性能一般、读取性能快、有容错机制,但磁盘有50%浪费。
RAID5校验卷
RAID校验卷,至少3块相同大小的盘,并且只允许坏一块盘,有效空间1/3,读写速度快,坏掉一块盘,读速度会慢。
RAID10
RAID10是RAID1和RAID0的结合体。读写快,有冗余,但是空间浪费一半。