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,占2个字节,固定为55AA。

    分区编号:主分区1-4,逻辑分区5......

    Linux规定:逻辑分区必须建立在扩展分区之上

    分区作用:

        主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上

        扩展分区不能使用,它只是作为逻辑分区的容器存在的,真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中

        如果你用的是GPT的分区方式,那么它没有限制主分区个数

磁盘分区工具和挂载_分区表

命名方式:/dev/sd[a-z]n

其中:a-z表示设备的序号,如sda表示第一块硬盘,sdb表示第二块.......

n表示每块磁盘上划分的磁盘分区编号

磁盘分区工具和挂载_分区表_02

新添加的硬盘没有读取需要重启或者手动刷新

[root@localhost ~]#echo "- - -" >/sys/class/scsi_host/host0/scan
[root@localhost ~]#echo "- - -" >/sys/class/scsi_host/host1/scan
[root@localhost ~]#echo "- - -" >/sys/class/scsi_host/host2/scan

磁盘分区工具和挂载_文件系统_03

2、使用fdisk命令管理分区

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

    用法:fdisk  [选项]  device

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

                    -m 打印菜单

                    -p  打印当前分区表

                    -n  新建一个分区

                    -d  删除一个分区

                    -t  改变分区的属性,系统ID

                    -w  保存

                    -q  不保存退出

例1:给/dev/sdb硬盘分区

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x7cec0e7d.

Command (m for help): n #-n新建一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free) #p是主分区
e extended #e是扩展分区
Select (default p): p
Partition number (1-4, default 1): #分区编号,默认1号
First sector (2048-41943039, default 2048): #首个扇区大小,默认
Using default value 2048 #2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G
Partition 1 of type Linux and of size 5 GiB is set
#最后扇区大小,手动设置5G
Command (m for help): p #打印当前分区表,可以看到新建的分区sdb1

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7cec0e7d

Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
#device:分区的设备文件名称
#Boot:是否是引导分区。若是,则有*标识
#Start:该分区在硬盘中的起始柱面数
#End:该分区在硬盘中的结束柱面数
#Blocks:分区的大小,以blocks(块)为单位,默认大小为1024字节
#Id:分区对应的系统ID号。83表示Linux中XFS分区或EXT4分区,8e表示逻辑卷
#System:分区类型,识别到新的硬盘设备后,就可以在该硬盘中建立新的分区了,
#在Linux操作系统中,分区和格式化的过程是相对独立的
Command (m for help): w #保存操作并退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# ll /dev/sdb* #查看/dev/下sdb开头的可以看到新分
的区sdb1
brw-rw----. 1 root disk 8, 16 Sep 27 02:58 /dev/sdb
brw-rw----. 1 root disk 8, 17 Sep 27 02:58 /dev/sdb1

例2:对已经在使用的磁盘进行分区,让新生成的分区生效。对sda在做一个sda3主分区。

[root@localhost ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
Partition number (3,4, default 3): 3
First sector (123750400-125829119, default 123750400):
Using default value 123750400
Last sector, +sectors or +size{K,M,G} (123750400-125829119, default 125829119):
Using default value 125829119
Partition 3 of type Linux and of size 1015 MiB is set
Command (m for help):
Command (m for help):
Command (m for help): p
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000af95e

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 10487807 5242880 83 Linux
/dev/sda2 10487808 123750399 56631296 8e Linux LVM
/dev/sda3 123750400 125829119 1039360 83 Linux

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
#这里有个小小的警告,内核仍然使用老的分区表,新分区表将会在重启后生效
#或者可以执行partprobe命令或partx命令

解决:让新分区生效:

[root@localhost ~]# reboot            #这个是最好的方法

[root@localhost ~]# partx -a /dev/sda          #获得新分区表

[root@localhost ~]# partprobe               

3、使用sdb1新分区

1.给sdb1格式化

[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, versinotallow=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

2.把硬盘挂载

[root@localhost mnt]# mount /dev/sdb1 /mnt  
[root@localhost mnt]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 50G 3.3G 47G 7% /
devtmpfs devtmpfs 897M 0 897M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.0M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 xfs 5.0G 179M 4.9G 4% /boot
tmpfs tmpfs 183M 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /mnt

挂载规则:

 一个挂载点同一时间只能挂载一个设备

一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其他设备上的数据将被隐藏

一个设备可以同时挂载到多个挂载点

挂载点一般是已存在的空目录

-t fstype 指定要挂载的设备上的文件系统类型,如:ext4,xfs

-r readonly,只读挂载

-w read and write, 读写挂载,此为默认设置,可省略

-n 不更新/etc/mtab,mount不可见

-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有

auto功能)

-L 'LABEL' 以卷标指定挂载设备

-U 'UUID' 以UUID指定要挂载的设备

 remount 重新挂载

ro/rw 只读、读写 

3.解决卸载不了的问题

[root@localhost ~]# umount /dev/sdb1   
umount: /mnt: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
#卸载失败,显示目标忙。有人正在使用这个设备,可以通过lsof或fuser命令
#解决
[root@localhost ~]# lsof /mnt    #查看使用这个设备的用户
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 34083 root cwd DIR 8,17 6 64 /mnt
[root@localhost ~]# kill -9 34083 #把这个pid的用户进程杀死
[root@localhost ~]# umount /dev/sdb1 #卸载成功
[root@localhost ~]#

4、开机自动挂载

修改配置文件/etc/fstab

[root@localhost ~]# blkid /dev/sdb1    #查询硬盘的UUID号
/dev/sdb1: UUID="baabe60b-c781-47f9-8422-8c4206632c7f" TYPE="xfs"
[root@localhost ~]# vim /etc/fstab

 UUID=baabe60b-c781-47f9-8422-8c4206632c7f /mnt  xfs  defaults 0  0

~UUID可以确定设备,不建议写路径。

~/mnt代表挂载点。

~xfs代表文件类型。

~default代表默认挂载参数,即mount 命令“-o”选项后可使用的参数。例如,defaults、rw、ro、noexec 分别表示默认参数、可写、只读、禁用执行程序。

~第一个0表示文件系统是否需要 dump 备份(dump 是一个备份工具)。一般设为 1时表示需要,设为 0 时将被 dump 忽略。

~第二个0表示在系统启动时进行磁盘检查的顺序。0 表示不进行检查,1 表示优先检查,2 表示其次检查。根分区应设为 1,其他分区设为 2。

UUID

/mnt

xfs

default

0

0

要挂载的分区设备

挂载点

文件系统类型

挂载选项

是否备份

是否检测

磁盘分区工具和挂载_文件系统_04

[root@localhost ~]# mount -a    #配置文件写完后执行mount -a,自动挂载
[root@localhost ~]# df -hT #配置文件中未挂载的
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 50G 3.3G 47G 7% /
devtmpfs devtmpfs 897M 0 897M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.0M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda1 xfs 5.0G 179M 4.9G 4% /boot
tmpfs tmpfs 183M 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb1 xfs 5.0G 33M 5.0G 1% /mnt
#可以看到sdb1挂载成功,这时我们可以重启机器。若挂载失败说明配置文件
#写的有问题如果直接重启会导致系统启动不了

注:echo “UUID="baabe60b-c781-47f9-8422-8c4206632c7f  /mnt  xfs  default    0    0” >> /etc/fstab

使用echo直接在fstab中追加一条配置,更加方便

扩展:-o   default 选项

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等默认

参数的设置

remount

重新挂载

第一个0是否进行备份

0

代表不要做备份

1

代表要每天进行操作

2

代表不定日期的进行操作

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

0

不要检验

1

最早检验(一般根目录选择)

2

1级别检验完成后进行检验

4、gdisk --磁盘分区工具

gdisk主要时用来划分容量大于2T的硬盘,大于2T fdisk搞不定

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

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

[root@localhost ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.6

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format.
THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if
you don't want to convert your MBR partitions to GPT format!
***************************************************************


Command (? for help): n
Partition number (2-128, default 2):
First sector (34-41943006, default = 10487808) or {+-}size{KMGTP}:
Last sector (10487808-41943006, default = 41943006) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): l
0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS
7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved
8200 Linux swap 8300 Linux filesystem 8301 Linux reserved
8e00 Linux LVM a500 FreeBSD disklabel a501 FreeBSD boot
a502 FreeBSD swap a503 FreeBSD UFS a504 FreeBSD ZFS
a505 FreeBSD Vinum/RAID a580 Midnight BSD data a581 Midnight BSD boot
a582 Midnight BSD swap a583 Midnight BSD UFS a584 Midnight BSD ZFS
a585 Midnight BSD Vinum a800 Apple UFS a901 NetBSD swap
a902 NetBSD FFS a903 NetBSD LFS a904 NetBSD concatenated
a905 NetBSD encrypted a906 NetBSD RAID ab00 Apple boot
af00 Apple HFS/HFS+ af01 Apple RAID af02 Apple RAID offline
af03 Apple label af04 AppleTV recovery af05 Apple Core Storage
be00 Solaris boot bf00 Solaris root bf01 Solaris /usr & Mac Z
bf02 Solaris swap bf03 Solaris backup bf04 Solaris /var
bf05 Solaris /home bf06 Solaris alternate se bf07 Solaris Reserved 1
bf08 Solaris Reserved 2 bf09 Solaris Reserved 3 bf0a Solaris Reserved 4
bf0b Solaris Reserved 5 c001 HP-UX data c002 HP-UX service
ed00 Sony system partitio ef00 EFI System ef01 MBR partition scheme
ef02 BIOS boot partition fb00 VMWare VMFS fb01 VMWare reserved
fc00 VMWare kcore crash p fd00 Linux RAID
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): DA4330A4-2643-40FE-9FDD-9C376EF1A2DA
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
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 10487807 5.0 GiB 8300 Linux filesystem
2 10487808 41943006 15.0 GiB 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.
[root@localhost ~]# mkfs.ext4 /dev/sdb2

5、扩展swap分区

swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。

步骤:

选择一个分区

mkswap /devices(格式化成swap格式)

swapon /swap(激活/swap,加入到swap分区中)

vim /etc/fstab (开机自启动新添加的swap分区),在最后追加:

/devices swap swap default 0 0

如果不想使用需要删除,只需要执行swapoff /swap

[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1823 595 115 5 1111 1009
Swap: 4095 3 4092
[root@localhost ~]# mkswap /dev/sdb2
mkswap: /dev/sdb2: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 15727592 KiB
no label, UUID=21c1f8be-0d06-4d98-94a9-93cc2dae4bac
[root@localhost ~]# swapon /dev/sdb2 #开启swap分区
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1823 608 90 5 1124 996
Swap: 19454 3 19451
[root@localhost ~]# swapon -s #查看swap分区列表
Filename Type Size Used Priority
/dev/dm-1 partition 4194300 3712 -1
/dev/sdb2 partition 15727592 0 -2
[root@localhost ~]# [root@localhost ~]# swapoff /dev/sdb2 #关闭
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1823 600 97 5 1125 1004
Swap: 4095 3 4092
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 4194300 3712 -1

:没有分区想要扩展swap分区大小

[root@localhost ~]# dd if=/dev/zero of=swap_file bs=1M count=2000
2000+0 records in #创建一个2G大小的文件
2000+0 records out
2097152000 bytes (2.1 GB) copied, 2.47968 s, 846 MB/s
[root@localhost ~]# ll -h swap_file
-rw-r--r--. 1 root root 2.0G Sep 27 07:40 swap_file
[root@localhost ~]# mkswap -f /root/swap_file #把文件格式化成
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=f081cfbf-2ce5-401c-b229-fa5dd9f604b5
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1823 587 73 5 1161 1016
Swap: 4095 3 4092
[root@localhost ~]# swapon /root/swap_file
swapon: /root/swap_file: insecure permissions 0644, 0600 suggested.
[root@localhost ~]# chmod 0600 /root/swap_file
[root@localhost ~]# swapon /root/swap_file
[root@localhost ~]# swapon /root/swap_file
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1823 272 1202 9 348 1354
Swap: 6095 0 6095
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 4194300 0 -1
/root/swap_file file 2047996 0 -2