硬盘分为2种:机械硬盘,固态硬盘。
机械硬盘是就是传统的硬盘主要有,磁盘盘片,磁头,电机,磁头控制器等等,通过磁盘的快速旋转来进行读写,固态硬盘则是多个芯片合成的。
插拔方式分为:
热插拔,非热插拔。
就是能否支持通电状态的插拔。
硬盘的主要接口有:
SATA SAS PCIE等等
整理碎片:硬盘读取内容的过程有几个,1、找到文件存储在硬盘的位置。2、读取文件。这两步都要费时间,而文件存储时不规范,让文件存得分散,到处都是,就会让找到文件的时间很多,影响速度,而整理碎片就是将这些乱的文件汇聚整理,减少寻找文件的时间从而增加速度。
硬盘的分区主要是为了方便管理,若遇到系统需要重装或者分区需要进行格式化等,原有的重要文件无法在本硬盘保留,而若提前进行了合理分区,则用户数据不会收到影响,读取越频繁,磁盘越容易受损,我们把读写频繁的目录挂载到一个单独的分区,可以把磁盘的损伤控制在一个集中的区域。
根据分区方式的不同可以分为2种情况:
2T以下的 用fdisk分区,分区表是MBR
2T以上的 用parted分区,分区表是GPT
MBR分区的限制:
主分区 、逻辑分区、拓展分区。
最多4个主分区。
总共不能超过15 个分区。
只支持2T以下的硬盘。
最初的硬盘设计时没有考虑到存储的发展如此迅速,硬盘的分区表只有64bytes存储着分区信息存储,而每个分区要用16 bytes来记录,所以主分区只能有4个,但是4个并不能满足需求,所以引入了拓展分区和逻辑分区,将剩下的所有分区作为拓展分区,将拓展分区的前一部分作为分区表,后边的重新分区作为逻辑分区,就像俄罗斯套娃。逻辑分区就是在拓展分区中再细分的。
而GPT则没有那么多限制,没有逻辑分区等概念,只限制了数量128个分区。
注:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!
fdisk分区工具MBR的分区的步骤:
1、添加设备(硬盘)
2、选择分区工具进行分区
3、格式化(也叫创建文件系统)
4、挂载使用。
查看设备
/dev目录存放的是设备文件,其中硬盘这种也在其中,
分区之前就是要确定文件是否存在,也就是设备是否存在。
可以使用 ll /dev/sd* 来查看文件。
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Oct 21 17:53 /dev/sda
brw-rw----. 1 root disk 8, 1 Oct 21 17:53 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 21 17:53 /dev/sda2
brw-rw----. 1 root disk 8, 16 Oct 21 17:53 /dev/sdb
brw-rw----. 1 root disk 8, 17 Oct 21 17:53 /dev/sdb1
brw-rw----. 1 root disk 8, 18 Oct 21 17:53 /dev/sdb2
brw-rw----. 1 root disk 8, 32 Oct 21 17:53 /dev/sdc
brw-rw----. 1 root disk 8, 33 Oct 21 17:53 /dev/sdc1
brw-rw----. 1 root disk 8, 34 Oct 21 17:53 /dev/sdc2
brw-rw----. 1 root disk 8, 35 Oct 21 17:53 /dev/sdc3
brw-rw----. 1 root disk 8, 48 Oct 21 17:53 /dev/sdd
brw-rw----. 1 root disk 8, 64 Oct 21 17:53 /dev/sde
可以看到sda,sdb,sdc,sde,sdf 几个硬盘。
另一种更加直观的显示方式。
lsblk
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 2G 0 part /boot
└─sda2 8:2 0 144G 0 part
├─centos-root 253:0 0 40G 0 lvm /
├─centos-swap 253:1 0 4G 0 lvm [SWAP]
└─centos-tmp 253:2 0 100G 0 lvm /tmp
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 953M 0 part /sdb1
└─sdb2 8:18 0 1.9G 0 part /sdb2
sdc 8:32 0 2G 0 disk
├─sdc1 8:33 0 94M 0 part
│ ├─vg1-lv1-real 253:3 0 60M 0 lvm
│ │ ├─vg1-lv1 253:4 0 60M 0 lvm
│ │ └─vg1-lv1--snap 253:6 0 60M 0 lvm
│ └─vg1-lv1--snap-cow 253:5 0 12M 0 lvm
│ └─vg1-lv1--snap 253:6 0 60M 0 lvm
├─sdc2 8:34 0 96M 0 part
└─sdc3 8:35 0 286M 0 part
sdd 8:48 0 10G 0 disk
sde 8:64 0 10G 0 disk
sr0 11:0 1 8.1G 0 rom
abc都进行了分区 de则没有。
选择分区工具分区
fdisk
-l 列出素所有分区表
-u 与"-l"搭配使用,显示分区数目
-s<分区编号> 指定分区
-v 版本信息
-c[=] 兼容模式 (default)
-u[=] 显示扇区 (default)
[root@localhost ~]# fdisk /dev/sdd //进入fdisk分区工具的分区设置
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 0x69e33cfe.
Command (m for help): //按M进帮助
这里的选项很多只列出几个常用的。
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能
Command (m for help): n //n添加新分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p //主分区
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):
Using default value 2048 //起始的字节数
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +2G //给这个分区分配2G的内存
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): e //新建拓展分区
Partition number (3,4, default 3):
First sector (8390656-20971519, default 8390656):
Using default value 8390656
Last sector, +sectors or +size{K,M,G} (8390656-20971519, default 20971519):
Using default value 20971519
Partition 3 of type Extended and of size 6 GiB is set
Command (m for help): n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): l //新建逻辑分区
Adding logical partition 5
First sector (8392704-20971519, default 8392704):
Using default value 8392704
Last sector, +sectors or +size{K,M,G} (8392704-20971519, default 20971519): +2G
Partition 5 of type Linux and of size 2 GiB is set
按P查看分区情况
Command (m for help): p
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 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: 0x69e33cfe
Device Boot Start End Blocks Id System
/dev/sdd1 2048 4196351 2097152 83 Linux
/dev/sdd2 4196352 8390655 2097152 83 Linux
/dev/sdd3 8390656 20971519 6290432 5 Extended
/dev/sdd5 8392704 12587007 2097152 83 Linux
/dev/sdd6 12589056 16783359 2097152 83 Linux
第一列分区位置,第二列起始点,第三列结束点,第四列分区大小,第五列分区的id,第六列分区类型
w:保存退出
让内核刷新分区表:
kpartx -a /dev/sdd
如果报错可以
partprobe /dev/sdd
或者重启
格式化(也叫创建文件系统)
[root@localhost ~]# mkfs.xfs /dev/sdd1 //格式化是对分区进行的
meta-data=/dev/sdd1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
挂载
挂载就是挂载到某个目录中,在目录就可以访问硬盘的分区,类似于C:D: 或者插U盘时的H等都是window自动挂载了这些。
[root@localhost /]# mkdir /tmp/test-gsc/sdd1 //创建文件夹
[root@localhost /]# mount /dev/sdd1 /tmp/test-gsc/sdd1/ //挂载到上面的目录
[root@localhost sdd1]# touch sdd1file.txt
[root@localhost sdd1]# ll
total 0
-rw-r--r--. 1 root root 0 Oct 21 18:46 sdd1file.txt
[root@localhost test-gsc]# umount /dev/sdd
sdd sdd1 sdd2 sdd3 sdd5 sdd6
[root@localhost test-gsc]# umount /dev/sdd1
[root@localhost test-gsc]# cd sdd1/
[root@localhost sdd1]# ls
能创建文件,取消后查看文件,没有文件,确定之前挂载完成,重新挂载。
这个挂载只是手动临时生效的重新启动后就会失效。所以要进行开机自动挂载操作。
[root@localhost sdd1]# blkid
/dev/sdd1: UUID="8b3bbbd4-3085-4d05-9a97-45142462e7d7" TYPE="xfs"
找到相对的这一条。
[root@localhost sdd1]# vi /etc/fstab //修改这个文件
[root@localhost sdd1]# cd ..
[root@localhost test-gsc]# umount /dev/sdd1 //取消挂载
[root@localhost test-gsc]# mount | grep sdd1 //查看sdd1的挂载,没有
[root@localhost test-gsc]# mount -a //重新加载/etc/fstab文件,没有挂载的重新挂载
[root@localhost test-gsc]# mount | grep sdd1 //插看sdd1的挂载
/dev/sdd1 on /tmp/test-gsc/sdd1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota) //查到一个挂载点
[root@localhost test-gsc]#
fstab 文件
#
# /etc/fstab
# Created by anaconda on Mon Oct 14 15:18:56 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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=2f597dda-b97e-4756-8610-3822538ea536 /boot xfs defaults 0 0
/dev/mapper/centos-tmp /tmp xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
PARTUUID=225d8ecd-2268-4a3f-8203-cefa17e92c7d /sdb1 xfs defaults 0 0
PARTUUID=1056505a-716e-4fc1-95a1-fb202d7fe4a0 /sdb2 xfs defaults 0 0
UUID=8b3bbbd4-3085-4d05-9a97-45142462e7d7 /tmp/test-gsc/sdd1 xfs defaults 0 0
最后一行就是新添加的。
parted分区工具GPT的分区的步骤:
步骤同上:
如果用同一块硬盘进行操作的话要先删除/etc/fstab文件中的分区挂载,清空硬盘分区操作。
有个指令可以快速的删除这些信息:
dd if=/dev/zero of=/dev/sdd bs=2M count=1
用这个方法覆盖硬盘存储分区信息的部分。
这里就用第二块硬盘了。sde硬盘。
[root@localhost test-gsc]# parted /dev/sde
//进入工具
GNU Parted 3.1
Using /dev/sde
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sde: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sde: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
(parted) mklabel gpt //设置分区表为gpt
(parted) print //查看分区情况
(parted) mkpart p1 1M 2G //建立第一个分区 从1M到2G p1 是名字 可以随意
(parted) mkpart primary 2G 3G
(parted) rm 2 //删除2号分区。也就是print看到的Number
(parted) mkpart p2 2G 3G
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sde: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 2000MB 1999MB p1
2 2000MB 3000MB 1000MB p2
(parted)
按q退出
依旧如上:
格式化 挂载。
[root@localhost test-gsc]# ll /dev/sde*
brw-rw----. 1 root disk 8, 64 Oct 21 19:16 /dev/sde
brw-rw----. 1 root disk 8, 65 Oct 21 19:16 /dev/sde1
brw-rw----. 1 root disk 8, 66 Oct 21 19:16 /dev/sde2
[root@localhost test-gsc]# mkfs.xfs /dev/sde1
meta-data=/dev/sde1 isize=512 agcount=4, agsize=121984 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=487936, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost test-gsc]# mkdir /tmp/test-gsc/sde1
[root@localhost test-gsc]# mount /dev/sde1 /tmp/test-gsc/sde1/
[root@localhost test-gsc]# mount |grep /dev/sde
/dev/sde1 on /tmp/test-gsc/sde1 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
完成。
可以再到parted工具里查看一下状态。
Number Start End Size File system Name Flags
1 1049kB 2000MB 1999MB xfs p1
2 2000MB 3000MB 1000MB p2
可以发现p1 的文件系统已将发生改变了。
PS : mkfs.xfs 格式化是对分区操作的。
umount取消挂载,可以写分区也可以写挂载点。
使用gpt分区并且格式化是会出翔UUID和PARTUUID,其中这个UUID是用来描述文件,表示本身的,而PARTUUID则是用于挂载使用的,填写fstab配置文件时要是用PARTUUID来进行。