在学习linux过程中,磁盘管理是我们必经过的一个坎,如果磁盘规划的合理的话,方便我们以后日常管理,减少了我们不必要的麻烦。下面通过这几方面给大家详细介绍。
一、磁盘分类
二、分区的类型
三、管理文件系统
四、修复分区的命令
(1)机械硬盘和固态硬盘
机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤。
固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致。
两者的区别:
1.相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍。
2.相较于SSD,HDD在价格、容量、使用寿命上占有绝对优势。
由于两个各有各的好处,所以SSD不能取代HHD。
注意:硬盘有价,数据物价。
磁盘存储术语:
head
cylinder
sector
规律:
1、磁头等于盘面的数量;
2、每个磁面的大小等于512*sectors*tracks
3、一个cylinder等于512*sectors*head
CHS
采用24bit位寻址
其中前10位表示cylinder,中间8位表示head,后面6位表示sector。
最大寻址空间8GB
LBA(logical block addressing)成CHS格式完成磁盘具体寻址
LBA采用48个bit位寻址
最大寻址空间128PB
由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式。
(2)硬盘接口
并行
IDE 133MB/S
SCSI 640MB/S
串行
SAS 4Gbps
SATA 6Gbps
USB 480MB/s
注意:磁盘名称是不稳定的,在挂载时建议使用UUID。
(3)设备文件
在linux中一切皆文件,所以在文件中把设备抽象成文件。关联至一个设备驱动文件,进而能够跟与之对应硬件设备进行通信。
设备类型:
块设备: 例如 /dev/sd*
字符设备: 例如 /dev/zero
不同设备的命令:a-z
同一设备的不同标识:1,2....
mknod命令可以创建设备文件。
示例:[root@localhost/app]#mknod /app/zero2 c 1 5
设备号分为
主设备号:major number ,标识设备类型。
次设备号:minor number,标识同一类型的不同设备。
(4)磁盘分区好处
1、优化I/O性能
2、实现磁盘空间配额限制
3、提高修复速度
4、隔离系统和程序
5、安装多个OS
6、采用不同的文件系统
分区类型分为MBR 和GPT两种。
MBR:Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T。每个MBR最小为512bytes。
446bytes boot loader 它负责从活动分区中装载,并运行系统引导程序。
64bytes 分区表 分区表(DPT,Disk Partition Table)含4个分区项,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
2bytes 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志。 55AA 每个占4位。
划分分区
(1)4个主分区
(2)3个主分区+一个扩展分区(扩展分区可以有多个逻辑分区)
注意:linux和windows中都可以对整个硬盘进行格式化。
》 GPT分区:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)。使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位。UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动。
EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域
uuidgen生成随机的uuid号。
[root@localhost/app]#uuidgen
6bfd961f-244d-4665-b7f5-27e923565c52
(1)文件系统概念
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志(记录对数据操作的过程),压缩,加密等。
查看支持的文件系统
[root@localhost/app]#cat /lib/modules/2.6.32-696.el6.x86_64/kernel/fs/
autofs4/ cramfs/ ext3/ gfs2/ mbcache.ko squashfs/
btrfs/ dlm/ ext4/ jbd/ nfs/ ubifs/
cachefiles/ ecryptfs/ fat/ jbd2/ nfs_common/ udf/
cifs/ exportfs/ fscache/ jffs2/ nfsd/ xfs/
configfs/ ext2/ fuse/ lockd/ nls/
(2)文件系统类型
Linux文件系统:ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
光盘:iso9660
Windows:FAT32, exFAT,NTFS
Unix: FFS(fast), UFS(unix), JFS2
网络文件系统:NFS, CIFS
集群文件系统:GFS2, OCFS2(oracle)
分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未经处理或者未经格式化产生的文件系统
(3)文件系统分类
根据其是否支持"journal(日志)"功能:
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat
文件系统的组成部分:
内核中的模块:ext4, xfs, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虚拟文件系统:VFS
查当前支持的文件系统:cat /proc/filesystems
fdisk - manipulate disk partition table
usage:fdisk -l [-u] [device…]
-l DEVICE :列出设备分区信息
子命令:
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存并退出
q 不保存并退出
示例:
[root@centos7 ~]# fdisk -l #显示分区信息
[root@centos7 ~]# fdisk -l /dev/sda #显示此设备的分区信息
[root@centos7 ~]# lsblk #查看所有设备
[root@centos7 ~]# fdisk /dev/sdb #对此设备进行分区
Command (m for help): m #显示帮助信息
Command (m for help): 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-419430399, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399): +5G
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): w #保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
示例2备份MBR
[root@centos7 ~]# dd if=/dev/sdb1 of=sdb1mbr bs=1 count=512
注意:1、如果磁盘分区损坏可以恢复,把MBR备份至别的主机上去,但是恢复只能恢复元数据,不能恢复数据。删除逻辑分区,直接把扩展分区都删除。
2、如果分区时,遇到一个小空间,有可能此前创建指定起始位置的原因,造成再一次分区报错,磁盘空间不够。可以直接跳过此此位置,创建。
3、删除分区时,可以使用命令lsblk查看,但是并不能删除直接查看,需要使用sync命令同步到磁盘中,再使用命令查看。
查看分区表方法
1、cat /proc/partitions
2、lsblk
3、fdisk -l
注意:1、分区表不能同步,使用不同的命令得到的结果可能不同。
识别新添加的分区
partx -a /dev/DEVICE
-a 识别新添加的分区
示例:partx -a /dev/sda
-d 识别删除的分区
-n, --nr M:N
-r, --raw
示例:
partx -d -nr 6 /dev/sda
注意:centos6中使用partprobe命令不能同步,在其他系统中可以使用。
创建文件系统
mkfs命令:build a Linux file system
-t fstype 指定文件类型 ext2 ext3 ext4
-L ‘LABEL’ :设定卷标
e2label管理卷标的命令
e2label DEVICE LABEL
示例:
[root@centos7 ~]# mkfs -t ext4 /dev/sdb1 #格式化文件系统
[root@centos7 ~]# mkfs -t ext3 -L “nihao” /dev/sdb2 #格式化并创建卷标
mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096} -L ‘LABEL’
-j: 相当于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
-N #:指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128—4096
-m #: 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,…]:启用指定特性 -O ^FEATURE:关闭指定特性
示例:
[root@centos7 ~]# mke2fs -t ext2 /dev/sdb3 #格式化文件系统
[root@centos7 ~]# mke2fs -b 1024 -j /dev/sdb5 #格式化文件系统并制定block大小。
tune2fs :adjust tunable filesystem parameters on ext2/ext3/ext4
filesystems
-l:查看指定文件系统超级块信息;super block
-L ‘LABEL’:修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
-c:max_mounts_count
-O: 文件系统属性启用或禁用
–O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUI号
示例:
[root@localhost/app]#tune2fs -l /dev/sda6 #查看超级块信息
[root@localhost/app]#tune2fs -L "bak" /dev/sda6 #修改卷标
[root@localhost/app]#tune2fs -m 5 /dev/sda6 #修改给管理员预留百分比
[root@localhost/app]#tune2fs -c 10 -c 10 /dev/sda5 触发文件系统检测
[root@localhost/app]#tune2fs -o acl /dev/sda6 #修改默认挂载选项
dumpe2fs命令: dump ext2/ext3/ext4 filesystem information
-h:查看超级块信息,不显示分组信息
示例
[root@localhost~]#dumpe2fs -h /dev/sda1 =tune2fs -l /dev/sda6 #查看超级块信息
[root@localhost~]#dumpe2fs /dev/sda1
注意:文件系统中又备份的超级块,如果一个破坏了,可以恢复元数据,里面的数据是恢复不了。
blkid [OPTION]... [DEVICE] 查看块设备属性信息
-U UUID: 根据指定的UUID来查找对应的设备
-L LABEL:根据指定的LABEL来查找对应的设备
示例:
[root@centos7 ~]# blkid -U "c4351214-ea8f-44e1-b35a-c7bac63a0e43" #根据uuid查找设备
/dev/sda1
[root@centos7 ~]# blkid -L "nihao" #根据别名查找设备
/dev/sdb2
示例:文件可以创建文件系统
在CentOS6上
[root@localhost/app]#dd if=/dev/sda6 of=/app/file5 bs=1M count=200 #生成文件
[root@localhost/app]#blkid /app/file5 #查看文件参数
/app/file5: LABEL="bankup" UUID="24b953fb-baba-4f67-a818-8a0ec7b3bd3e" TYPE="ext2"
[root@localhost/app]#mount -o loop /app/file5 /app/file1/ #挂载文件
注意:在CentOS6系统上,需要-o loop 调用一个设备文件/dev/loop* ,在CentOS7上不需要使用-o loop,会自动生成/dev/loop*设备。
示例:创建loop设备
[root@localhost/app]#mknod /app/file6 b 7 8 #创建
[root@localhost/app]#ll /app/file6 #查看
brw-r--r--. 1 root root 7, 8 Jul 14 07:03 /app/file6
这样做并不能让文件挂载时调用这个设备,使用losetup命令
[root@localhost/app]#losetup /app/file6 /app/tfile7
也可以修改配置文件,/etc/grub.conf 在kernel这行最后添加 quiet max_loop=100
小结:
查看文件系统的命令
`[root@localhost/app]#blkid
[root@localhost/app]#lsblk -f`
df命令只能查看挂载的设备文件
findfs - Find a filesystem by label or UUID
usage: findfs LABEL=label
findfs UUID=uuid
示例:
[root@localhost/app]#findfs UUID="09e31e4d-81e9-4108-8264-612a7ec0c334"
/dev/sda2
[root@localhost/app]#findfs LABEL=bankup
/dev/sda6
fsck:check and repair a Linux file system
-p: 自动修复错误
-r: 交互式修复错误
注意:修复时一定要把文件系统卸载掉修复。
示例:
[root@localhost~]#fsck /dev/sda6
e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复