创新路
我们一直在努力

Linux 磁盘格式化、挂载、卸载相关

一、磁盘
1、机械磁盘原理简要说明
图片
一般磁盘都是两面存储数据,两面同一磁道称为一个柱面,对磁盘分区的时候通常是从外道向里进行划分,所以相同角速度下处于越外道的柱面读写速度越快,这也是为何系统******C盘的原因。
0扇区不能划分给任何一个分区,磁盘的分区信息和系统引导程序存储在该扇区中,该扇区即MBR,MBR大小为512byte其中446个字节中存储的是bootloader程序(即引导程序,系统选择、加载等功能),剩余的66个字节中,64个字节存放的是分区信息,一个分区信息占16个字节,这也是为何只能一块MBR盘只能(GPT没研究过,不清楚咯)有4个主分区的原因。
2、磁盘接口
IDE/SCSI/SATA/SAS/SSD
SCSI:自带控制芯片,可以独立完成大部分磁盘访问操作,可以减少CPU上下文切换,大大降低CPU空等的情况
目前很多都是通过DMA芯片协同CPU访问磁盘一定程度上减少CPU上下文切换,不过功能没有SCSI强大。
3、磁盘分区命令说明
基于Linux系统一切皆文件的核心思想,所有设备设备在Linux上都会有对应的文件或者伪文件与之对应,磁盘设置为/dev/sda(如果有多快盘,则为/dev/sd[a-z]),不同系统上命名方式可能有出入,如:centos5.x上为/dev/hd[a-z]。
磁盘的主分区为/dev/sd[a-z][1-4],如果创建了逻辑分区则为/dev/sd[a-z]5+ ,不过要创建逻辑分区,主分区中必须有一个为扩展分区
4、磁盘分区信息查看
fdisk -l /dev/sd[a-z] 如果要看各分区信息可以fdisk -l /dev/sdb*
图片
5、创建分区
创建分区使用 fdisk命令,fdisk几个常用内部选项:
n :添加分区
p :显示分区
d :删除分区
t  :修改分区ID号
l  :列出内核支持的分区ID
w :保存退出
q :不保存退出
m:帮助信息
fdisk /dev/sdb
也可使用 echo创建分区:
图片
创建好分区后******查看一下是否内核已经识别了新的分区:
方法1: ls -l /dev/sdb* 查看是否应有了创建的分区对应的设备文件
图片
方法2:查看/proc/partitions文件中是否有刚创建的分区
图片
一般新磁盘创建分区后内核都能识别到新的分区,如果是使用较久的磁盘可能会出现无法识别的情况这个时候可以多次使用partx和kpartx命令重读磁盘分区表信息,如果确实无法识别就只有重启服务器了T_T~
顺序执行
kpartx -l /dev/sdb   显示可以添加的分区
kpartx -af /dev/sdb 强制重读分区表,并自动添加分区
partx -a /dev/sdb    重读磁盘,并自动添加分区
-l :显示可添加分区
-a :重读分区信息,并自动添加分区
-f :强行添加
6、格式化分区
格式化分区命令有几个,假如要格式化/dev/sdb2为ext4可以使用以下命令实现:
mkfs -t  ext4 /dev/sdb2
mkfs.ext4  /dev/sdb2
mke2fs -t ext4 /dev/sdb
命令说明:
mkfs  -t:指定文件系统初始化分区
备注:该命令本质是调用mkfs.ext[2-4]命令进行的初始化
mkfs.ext2/mkfs.ext3/mkfs.ext4 分别表示初始化为ext2/ext3/ext4文件系统
mke2fs :初始化分区,可以修改其配置文件修改默认设置,配置文件为:/etc/mke2fs.conf
-t :指定文件系统类型
-L label:指定卷标
-b{1024、2048、4096}:指定块大小
-i #:多少个字节指定一个inode
-N #:预留多少个inode
-I #:大写的i ,指定inode的大小
-m #:预留给管理的空间百分比,默认为5
-O:指定分区特性
7、创建交换分区
7.1、创建一个分区并将分区ID修改为82(交换分区对应的ID号),并保存退出
图片
7.2、使用mkswap命令初始化交换分区
图片
mkswap 格式化交换分区
7.3、使用swapon启用交换分区(如果需要开机启动需要写入/etc/fstab文件中)
图片
swapon :
-a :启用所有的交换分区(添加到/etc/fstab中的交换分区,如果没有添加需要制定启用)
-p#:设置交换分区使用优先级(磁盘性能有区别是可用,多个分区等级相同轮换使用)
swapoff:
-a :停用所有交换分区
图片
8、挂载分区
分区挂载使用mount命令
mount [option] [-o options] 设备 挂载点:
命令选项:
-t :文件系统
-n :不更新/etc/mtab文件
-B(–bind) :dir1 dir2 将目录挂载到目录上,使dir2可以访问dir1中的内容
-r :只读挂载
-w:读写挂载
-L label :以卷标指定,也可使用LABEL=“label”
-U UUID :使用UUID挂载,也可使用UUID=“uuid”
-o options :挂载时启动分区特性
async :异步I/O —数据先写到内存一定时间后再由内核统一写到磁盘,断电数据有风险
sync :同步I/O  数据较安全但是系统性能会很差,默认为异步
noatime/atime :是否更新文件访问时间戳(包括文件和目录),如果是频繁被访问的文件建议使用noatime
auto/noauto :是否允许被mount -a自动挂载
dev/nodev :是否可以创建设备文件
diratime/nodiratime :是否更新目录访问时间戳(只限定目录)
exex/noexex :是否允许执行二进制程序
user/nouser :是否允许普通用户挂载
_netdev : 当系统启动通过/etc/fstab文件中自动挂载文件系统时,如果有挂载网络设备,但是该网络设备还未启动时就会一直卡在挂载
这,这个时候这个选项就非常有用.
remount :重新挂载
ro :只读挂载
rw :读写挂载
relatime/norelatime :是否实时更新时间戳
acl 文件访问控制列表
如果没有指定-o表示使用默认选项
图片
挂载点说明:
1、挂载点必须存在
2、挂载点必须为空目录,不然以前的内容会被隐藏
挂载光盘文件:
将光盘文件设备挂载到挂载到一个空目录下即可
图片
mount /dev/dvd /media/cdrom [–t iso9660]
图片
9、查看系统上已挂载分区
方法1、cat /proc/mounts
方法2、cat /etc/mtab
方法3、mount
10、卸载分区
umount 设备|挂载点
只有当预卸载设备没有被使用时才能被成功卸载,如果在使用可以使用fuser查看占用该设备的进程
fuser -v 挂载点
图片
fuser -km 挂载点  强制踢出占用该设备的shell进程
11、删除分区
1、使用fdisk 删除
2、使用dd命令向磁盘mbr中写入数据覆盖分区表信息即可
dd if=/dev/zero of=/dev/sdb bs=510 count=1
dd命令说明:
if:输入文件
of:输出文件
bs:一次读入多大的数据量
count:读取次数
dd if=input_file of=output_file
dd if=input_file of=output_file bs=#[b|k|m|g] count=#
cat /dev/cdrom > /tmp/linux.iso 制作光盘
12、其他磁盘相关命令
12.1、blkid:查看分区的UUID和文件系统
注:当忘记分区的文件系统时可以使用该命令查看
图片
12.2、dumpe2fs:查看超级块信息和各块组是否有碎片
-h:仅显示超级块中的信息
12.3、tune2fs:调整mke2fs的信息
-l:查看超级块中的信息
                -L: 设定卷标
                -m:预留管理员的空间百分比
                -j:如果原来的文件系统为ext2,-j能够将其提升为ext3
                -o:[^]mount-options[,…] 指定默认挂载选项
                -O:[^]feature[,…] 调整分区特性
tune2fs-o 挂载选项 设备   追加特性
tune2fs-o ^设备选项 取消特性
12.4、fsck:文件系统检查
-t :文件系统 设备
-f :强行检查
-a :自动修复错误
-r :交互式修复错误
注:这里的检查是检查文件系统完整性不能检查物理损坏,如:断电导致inode中有信息,但是数据不完整等
12.5、e2fsck:e2文件系统专门的检查工具会自动判断文件系统
-f :强制检测
-t :指定时间
-y :自动确认
客官点个赞呗! (1)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机