#学习笔记:CentOS7学习之十三,2:磁盘介绍与管理

1、磁盘分区工具与挂载

1.1 硬盘分区符认识:

MBR概述:全称为Master Boot Record,即硬盘的主引导记录。

硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由3个本分组成:主引导程序、硬盘分区表DPT(Disk Partition Table)和分区有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记录在其中。第三部分是magic number,占两个自己,固定为55AA。

分区编号:

  • 主分区:1-4
  • 逻辑分区:从5开始

一个硬盘最多能有4个主分区一个扩展分区,一般组成为:4个主分区或者3个主分区和一个扩展分区。

linux规定,逻辑分区必须建立在扩展分区之上,不能在主分区之上

分区作用:

  • 主分区:主要是用来启动操作系统,它主要存放的是操作系统的启动或引导程序,/boot分区最好放在主分区上
  • 扩展分区:扩展分区不能直接使用,它只是作为逻辑分区的容器存在。我们真正存放数据的是主分区和逻辑分区,一般大量的数据都放在逻辑分区

GPT的分区方式,不限制主分区个数

注意:使用分区工具fdisk对磁盘进行操作,分区,格式化

[root@linuxprobe yg]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc  /dev/sdd

说明:

/dev/sda1

  • /dev:设备文件的目录
  • sd:scsi硬盘
  • a:【a-z】从a开始,sda表示第一块scsi硬盘,第二块为sdb,依次类推
  • 1:分区编号,表示第一块scsi硬盘上的第一个分区。

1.2 使用fdisk管理分区

fdisk:磁盘分区,是linux发行版本中最常用的分区工具

用法:fdisk 【选项】 device

常用选项: -l 查看硬盘分区表

[root@linuxprobe yg]# fdisk -l

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000033f0

   设备 Boot  Start End  Blocks   Id  System
/dev/sda1   *2048 2099199 1048576   83  Linux
/dev/sda2 20992008388607940893440   8e  Linux LVM

磁盘 /dev/sdb:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdc:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdd:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

fdisk常用的参数:

 [root@linuxprobe yg]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x4cf6a6ac 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition    ##删除分区
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types ##显示分区
   m   print this menu  ##打印帮助菜单
   n   add a new partition  ##添加新的分区
   o   create a new empty DOS partition table
   p   print the partition table  ##显示分区表
   q   quit without saving changes  ##退出不保存
   s   create a new empty Sun disklabel
   t   change a partition's system id   ##改变分区类型
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit   ##写分区信息到硬盘,保存操作并退出
   x   extra functionality (experts only)

1.3 使用fdisk添加一个新的分区

1)在/dev/sda硬盘上新建一个分区

fdisk /dev/sda

命令(输入 m 获取帮助):p   ##列出当前磁盘的分区信息
  
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000033f0

   设备 Boot  Start End  Blocks   Id  System
/dev/sda1   *2048 2099199 1048576   83  Linux
/dev/sda2 20992008388607940893440   8e  Linux LVM


命令(输入 m 获取帮助):n  ##新建一个分区

Partition type:
   p   primary (2 primary, 0 extended, 2 free)p:主分区
   e   extended e:扩展分区
Select (default p): --直接默认
Using default response p
Partition number (1,4, default 3):   ---直接默认
First sector (1230848-41943039, default 1230848):   ---直接默认 
Using default value 1230848
Last sector, +sectors or +size{K,M,G} (1230848-41943039, default 41943039): +1G  输入分区大小
Partition 3 of type Linux and of size 1 GiB is set
Command (m for help): w   保存退出

2)让新划分的分区生效

注意:对已经在使用的磁盘进行分区后,要让新分区生效,可以使用:

partx -a /dev/sda  

最好的办法是进行设备重启。

init 6

3)格式化新分区

mkfs.xfs -f /dev/sda3  #格式化,-f 对已经存在文件系统的分区,强制格式化

4)挂载新分区

mkdir /data ##创建挂载点/data
mount /dev/sda3 /data ##将新分区/dev/sda3挂载在/data目录下
df -h #查看确认新的分区已经存在

5)写入配置文件/etc/fstab,让其开机自动挂载

vim /etc/fstab

在最后写入

/dev/sda3 /data xfs defaults 0 0

注释:

/dev/sda3/dataxfsdefaults00
要挂载的分区挂载点文件系统类型挂载选项是否备份是否检测
mount -a  ##自动挂载/etc/fstab文件中没有挂载的文件

df -h ##进行查看分区信息,如果能查看到新挂载的分区,说明fstab配置文件中书写正确,负责需要核对。

6)卸载一个分区

正在使用的分区使用umount时是卸载不了的

umount /dev/sda3
umount: /:目标忙。
    (有些情况下通过 lsof(8) 或 fuser(1) 可以
     找到有关使用该设备的进程的有用信息)

两种方式:

a:查看正在使用当前分区的进程,杀死进程

lsof /data
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash 2823 root  cwdDIR   8,17   20   64 /sda3
lsof 2952 root  cwdDIR   8,17   20   64 /sda3
lsof 2953 root  cwdDIR   8,17   20   64 /sda3

kill -9 2823

b、退出目录,重新卸载

umount /dev/sda3

注:umount 挂载点 //卸载方式1 或 umount 设备路径 //卸载方式2

7)扩展

a、使用UUID挂载

建议使用UUID挂载,以防止因为磁盘接口更换以后引起的挂载混乱问题

查找分区UUID

[root@linuxprobe yg]# blkid
/dev/sda1: UU TYPE="xfs" 
/dev/sda2: UU TYPE="LVM2_member" 
/dev/sdb: UU TYPE="LVM2_member" 
/dev/sdc: UU TYPE="LVM2_member" 
/dev/sr0: UU LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sdd: UU TYPE="LVM2_member" 
/dev/mapper/centos-root: UU TYPE="xfs" 
/dev/mapper/centos-swap: UU TYPE="swap" 

根据分区UUID挂载,以sda2为例

echo "JuGBSR-C2u5-17Cl-9kYL-WQeZ-HxZo-GLlAd7  /sdb1  xfs defaults 0 0" >> /etc/fstab

b、扩展对fstab配置文件了解

/dev/sda3/dataxfsdefaults00
要挂载的分区挂载点文件系统类型挂载选项是否备份是否检测

第四列:parameters-文件系统的参数

参数说明
Async/sync设置是否为同步方式运行,默认为async
auto/noauto当执行mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro是否以以只读或者读写模式挂载
exec/noexe限制此文件系统内是否能够进行"执行"的操作
user/nouser是否允许用户使用mount命令挂载
suid/nosuid是否允许SUID的存在
Usrquota启动文件系统支持磁盘配额模式
Grpquota启动文件系统对群组磁盘配额模式的支持
Defaults同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置 samba nfs

第五列:是否进行备份。通常这个参数的值为0或者1

参数数值
0代表不要做备份
1代表每天都要做备份
2代表不定日期的进行备份

第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整

参数数值
0不要检验
1最早检验(一般根目录会选择)
21级别检验完成之后进行检验

1.4 gdisk磁盘分区工具

gdisk主要是用来划分容量大于4T的硬盘。

两种类型的分区表:GPT和MBR ; MBR不支持4T以上

GPT分区:GPT,全局唯一标识分区表(GUID Partition Table),它使用128位GUID来唯一标识每个磁盘和分区,与MBR存在单一故障点不同,GPT提供分区表信息的冗余,一个在磁盘头部一个在磁盘尾部;它通过CRC校验和来检测GPT头和分区表中的错误与损坏;默认一个硬盘支持128个分区

直接引用学神的文档:

例:对sdb做gpt分区,创建一个sdb1

[root@xuegod63 ~]# gdisk /dev/sdb
。。。
Command (? for help): ?#  查看帮助
b       back up GPT data to a file
c       change a partition's name   
d       delete a partition#删除分区
i       show detailed information on a partition
l       list known partition types
n       add a new partition# 添加一个分区
o       create a new empty GUID partition table (GPT)
p       print the partition table   # 打印分区表
q       quit without saving changes # 退出不保存
r       recovery and transformation options (experts only)
s       sort partitions
t       change a partition's type code
v       verify disk
w       write table to disk and exit #  # 写入分区表并退出
x       extra functionality (experts only)
?       print this menu

Command (? for help): n   #新建分区表
Partition number (1-128, default 1): #直接回车
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: #直接回车, 从头开始划分空间
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +1G  #给1G空间
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): #分区类型直接回车
注:8300 Linux filesystem  ;8e00 Linux LVM 想查看,可以按L 来显示
Changed type of partition to 'Linux filesystem'

Command (? for help): p  #查看
。。。
Number  Start (sector)End (sector)  Size   Code  Name
   12048 2099199   1024.0 MiB  8300  Linux filesystem
Command (? for help): w   #保存
Do you want to proceed? (Y/N): y#确定写入
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.


[root@xuegod63 ~]# mkfs.xfs  /dev/sdb1  #格式化

END

2019-5-7 0:44:05