1. Linux磁盘分区基本概念
Linux的磁盘分区至少要有一个根分区(挂载点 / )和一个交换分区(SWAP)。
硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录与分区表信息。就第一个扇区来讲,主引导记录需要占用446字节,分区表为64字节,结束符占用2字节;其中分区表中每记录一个分区信息就需要16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这4个分区就是4个主分区。
现在,问题来了 —— 第一个扇区最多只能创建出4个分区?于是为了解决分区个数不够的问题,可以将第一个扇区的分区表中16字节(原本要写入主分区信息)的空间(称之为扩展分区)拿出来指向另外一个分区。也就是说,扩展分区其实并不是一个真正的分区,而更像是一个占用16字节分区表空间的指针 —— 一个指向另外一个分区的指针。这样一来,用户一般会选择使用3个主分区加1个扩展分区的方法,然后在扩展分区中创建出数个逻辑分区,从而来满足多分区(大于4个)的需求。
图示如下:
2. 设备名
- 编码规则
/dev/xxyn
其中
xx:取值 sd 表示串口硬盘,比如SATA,SCSI,USB,SAN等串口硬盘。
xx:取值 hd 表示并口硬盘,比如IDE硬盘。
xx:取值 vd 表示KVM虚拟硬盘。
y:表示序号,取值a,b,c,d,··· 表示第几块硬盘。
n:表示分区编号,取值1,2,3,4,5,6,··· 而编号1~4表示主分区或者扩展分区,编号5以后代表逻辑分区。
- 例子
/dev/sda2 第一块串口硬盘的第二个主分区
/dev/sdb1 第二块串口硬盘的第一个主分区
/dev/sdb6 第二块串口硬盘的第二个逻辑分区
/dev/sda5 第一块串口硬盘的第一个逻辑分区
3. 磁盘分区
3.1 fdisk /dev/sdb
n 新建分区(描述分区大小:+10G 别忘了“ + ”号)
p 查看分区信息
d 删除分区
m 查看帮助
w 保存并退出
q 退出不保存
其他命令:
[root@node2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
3.2 partx -a /dev/sdb
同步磁盘分区。如果分区可以读写必须使用该命令,否则分区表系统无法识别。当然此时如果重启系统也可以完成磁盘分区的同步。
其他命令:
partprobe 通知内核重新读取硬盘分区表信息
[root@node2 ~]# cat /proc/partitions
major minor #blocks name
11 0 1048575 sr0
8 0 20971520 sda
8 1 1048576 sda1
8 2 19921920 sda2
253 0 17821696 dm-0
253 1 2097152 dm-1
注:上述命令可以查看同步结果。可以忽略如下信息:
BLKPG:Device or resource busy
3.3 mkfs.ext4 /dev/sdb1
格式化磁盘为ext4文件格式。
也可以
mkfs -t ext4 /dev/sdb1
3.4 mkdir /mnt/data
创建空目录作为挂载点。
3.5 mount /dev/sdb1 /mnt/data
卸载挂载点
umount /dev/sdb1
挂载文件的配置
/etc/fstab 可以查找帮助 man 5 fstab
Linux可能存在盘符漂移现象,需在/etc/fstab配置文件中写入UUID。
[root@node2 ~]# blkid 查看磁盘分区的UUID
/dev/sda1: UUID="da7cabb7-e947-4ab0-8152-a3b935975e4e" TYPE="xfs"
/dev/sda2: UUID="H7342u-JN8E-tvoK-uUJD-PBGC-SXwG-gzuVre" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="c1a4bc54-4af1-4a37-8b70-9e1d67907009" TYPE="xfs"
/dev/mapper/centos-swap: UUID="3c60eebf-5cd6-4e2d-aedd-c71cb5fb4e5e" TYPE="swap"
3.6 df -h
查看挂载分区信息
3.7 番外篇
可以使用如下命令以MB显示内存和SWAP分区使用情况
[root@node2 ~]# free -mh
total used free shared buff/cache available
Mem: 750M 94M 538M 6.1M 117M 524M
Swap: 2.0G 0B 2.0G
4. 分区参考
300G硬盘为例
分区/挂载点 | 大小 |
---|---|
/boot | 200M |
swap | 16G,物理内存小于8G,swap可为物理内存的2倍;物理内存大于8G时,swap分区一般取8G |
/ | 80G |
/data | 剩余所有空间 |
5. 常见的文件系统
-
Ext3
一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。它会把整个磁盘的每个写入动作的细节都预先记录下来,以便在发生异常宕机后能回溯追踪到被中断的部分,然后尝试进行修复。 -
Ext4
Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。 -
XFS
一种高性能的日志文件系统,而且是RHEL 7中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有需求。