磁盘管理
Linux中哲学思想:Linux一切皆文件,所有访问磁盘设备就如同访问一个文件一样,因此要想使用需要一个文件接口
如何向设备中输入数据?
首先将设备在系统上映射成一个文件,在此文件上进行读写操作就相当于对设备进行读写,对程序而言首先是打开一个文件open(),然后执行read()或者write(),最后关闭文件closed()
设备分类
块设备:Block ,存取单位为块
字符设备:char ,存取单位为字符
设备文件:关联至一个设备驱动程序,进而能够跟与之对应的硬件设备尽心通信
设备文件和设备的对应关系:一个设备文件只能被一个设备关联,如果一个设备文件关联两个设备文件,第一个设备的内容将会被第二个设备内容覆盖
设备号码:每个设备在内核集中都是靠设备号进行标识
设备号分类:主设备号:major number 用于标识不同设备
次设备号:minor numbei 用于标识统一类型下的不同设备
查看设备号:
其中8为主设备号,0、1、2…为次设备号
设备名称:不同的硬盘接口会显示不同的设备名称
并行:
IDE :理论传输速度133MB/s
scsi:传输速度640MB/s
串口:
sata:6Gbps
sas:6Gbps
usb:480MB/s
硬盘转速:rpm 5400rpm /每分钟转动5400转
IDE:
centos5以前在显示名称:/dev/hd
centos6、7以后设备名称为/dev/sd
SCSI, SATA, SAS, USB: /dev/sd
不同设备: a- z
/dev/sda, /dev/sdb, …
同一设备上的不同分区: 1,2, …
/dev/sda1, /dev/sda5
虚拟机磁盘:
/dev/vd
硬盘结构:
组成:盘片(双面读写)、轴、马达、磁头、机械臂
磁盘存储专业术语
磁道 track:每个盘片被分成N个同心圆,每个同心圆称为磁道,使用来真正存储数据的
扇区 sector:每个磁道按512个字节为单位等分,被划分的区域叫做扇区
柱面 cylinder:每次盘片都是双面读写的的,每个盘片上相同位置都会有一个相同的编号,所谓的相同的编号的磁道称为柱面
磁盘分区
为什么要进行磁盘分区:
1、优化I/o性能
2、实现磁盘的配额限制管理
3、提高修复速度
4、隔离系统和程序
5、安装多个操作系统
磁盘分区方式:
MBR 和GPT
MBR :master boot record ,使用32表示扇区数,最大不能超过2TB
MBR:存储在0磁道,0扇区中前512字节
0-446字节:存储boot loader ,引导加载
446-510:存储分区表,每16字节存贮一个分区表,这也是为什么一个磁盘只能分4个主分区或3个主分区和一个扩展分区的原因
后2个字节:存储有效信息55aa表示有效
MBR分区图
查看MBR内容:
为了防止MBR被破坏,系统无法正常启动,需要备份MBR ,备份方法如下
恢复MBR dd if=/testdir/Mbr of=/dev/sda bs=1 count=512
注意:扩展分区中的逻辑分区不能备份,因逻辑分区保存在扩展分区中,并非MBR中
GPT分区
GPT:GUID patition table 支持128个分区,使用 64位,支持8Z( 512Byte/block ) 64Z ( 4096Byte/block)
使用 128位UUID 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI (统一扩展固件接口 )硬件支持GPT
uuidgen :create a new UUID value ,每个磁盘在
创建分区命令
fdisk
使用格式
fdisk [-uc] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device
常用选项:-l:列出分区表
-u:指定分区显示格式,默认是扇区显示 -u=cylinder 则为以柱面显示分区信息
-c:指定显示是否已dos显示,默认不以dos显示,dos格式要求分区中整个儿柱面必须在一个分区中,否则会提示错误
fdisk /dev/sda :对硬盘sda进行分区,fdisk是交互式命令,在进行分区时有好多的子命令
m:列出帮助
d:删除分区
n:添加分区,
p:打印分区信息
w:保存分区信息退出
q:不保存退出
t:转换分区格式
l:累出分区类型
开始分区啦!
1、fdisk /dev/sdb :注意,当磁盘中已经有扩展分区了,再添加分区不显示扩展分区选项e,只能添加主分区和l(逻辑分区)
2,选择分区类型l逻辑分区,p主分区,扩展分区
3w:保存退出
显示系统下的生效的设备(内存中已经识别的设备):
lsblk
ll /dev/sd*
cat /proc/partitions
有时候增加的分区不能及时加载到内存,需要手动让内核重新读取分区表,以下有三种方法
1、partx -a /dev/sdb
-d 从内存中将分区信息删除
-l:列出分区信息
partx -a -n|–nr 2:3 只重新加载2和3分区
partx -d –rn 2:3 从内存中将2 3分区删除
2、kpart -a /dev/sdb
3、partrpobe /dev/sdb 不适用于centos6版本
磁盘管管理工具2
parted
显示磁盘分区信息:parted /dev/sdb print
显示所有磁盘信息:parted -l
删除第一个分区:parted /dev/sdb rm 1
创建分区 :part /dev/sdb mkpart primary 1(分区其实位置) 1024(结束位置)
改变磁盘分区格式:parted /dev/sdb mklabel gpt|msdos gpt:GPT分区格式 msdos :MBR分区格式
GPT分区工具gdisk
需要先将分区表定义成GPT分区格式
parted /dev/sdb mklabel gpt ,其余的和fdisk类似
文件系统
定义:文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构
称为文件管理系统,简称文件系统。
从系统角度来看,文件系统是对文件存储设备的空间进行组 织和分配,负责文件存储并对存入的文件进行保护和检索的
系统。具体地说,它负责为用户建立文件,存入、读出、修 改、转储文件,控制文件的存取,安全控制,日志,压缩,
加密等。
文件系统分类:
Linux文件系统: ext2, ext3, ext4, xfs( SGI) , btrfs(
Oracle) , reiserfs, jfs( AIX) , swap
swap: 交换分区
光盘: iso9660
Windows: fat32(优盘中格式在Linux中显示为vfat), ntfs
Unix: FFS( fast) , UFS( unix) , JFS2
网络文件系统: NFS, CIFS
集群文件系统: GFS2, OCFS2( oracle)
分布式文件系统: ceph, moosefs, mogilefs, glusterfs,Lustre
RAW:未经处理或者未经格式化产生的文件系统
Linux系统能实现不同文件系统共存,和一切接文件色的思想是利用了虚拟文件系统(VFS)
查看系统中支持的文件系统:cat /proc/fielsystem
创建文件系统命令三种方法:其实是等价的只是写法不同
一、 mkfs.file_Type /dev/sdb1
fiel_Type:种类ext4 ext3 xfs ext2 vfat 等
二、mkfs -t /dev/sdb
-t:指定文件类型
-L '/mnt/sdb1' 设定卷标,相当于起了个别名
三、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
– m #: 默认5%,为管理人员预留空间占总空间的百分比
– O FEATURE[,…]:启用指定特性
– O ^FEATURE:关闭指定特性
使用块设备的三种方法
1、使用UUID (推荐使用方法,应为uuid固定,并且唯一)2、使用卷标也就是mkfs -L指定的 3、使用设备名称/dev/sdb2
查看块设备信息命令:
blkid [option] [设备名]
-U 通过UUID找到指定的设备
-L通过卷标找到指定的设备
_ueditor_page_break_tag__ueditor_page_break_tag_
管理ext类型设备卷标
e2lable /dev/sdb2 '/mnt/sdb2'
通过lable(卷标)或者、UUID查找设备
findfs UUID=uuid号
findfs LABLE='lable名'
重新设定ext系列文件的属性
tune2fs
– l:查看指定文件系统超级块信息; super block
– L 'LABEL':修改卷标
– m #:修预留给管理员的空间百分比,有些空间只能管理员使用,普通用户不能使用
– j: 将ext2升级为ext3
– O: 文件系统属性启用或禁用 , –O ^has_journal
– o: 调整文件系统的默认挂载选项, –o ^acl
– U UUID: 修改UUID号;
dumpe2fs:
– h:查看超级块信息 =tune2fs -l
dumpe2fs /dec/sdb2 查看分区用分组管理,信息更详细
块:文件最小存储单位,块大小分类1024 2048 4096 格式化时可以改变
超级块:用于存储文件系统的控制信息的数据结构。描述文件系统的状态、文件系统类型、大小、区块数、索引节 点数等,存放于磁盘的特定扇区中
文件系统修复
当用tune2fs查看文件系统超级块信息时 filesystem state:记录了文件系统状态,当状态为not clean 时说明文件系统异常
可用fsck对其进行修复或者常发生于死机或者非正常关机之后挂载为文件系统标记为“ dirty”
fsck: File System Check
fsck.FS_TYPE
fsck – t FS_TYPE
– a: 自动修复错误
– r: 交互式修复错误
注意: FS_TYPE一定要与分区上已经文件类型相同;
e2fsck: ext系列文件专用的检测修复工具
– y:自动回答为yes
– f:强制修复
挂载
定义:挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
卸载:为解除此关联关系的过程
注意:挂载的文件一般为空,如果不为空挂载完成后原有的文件会被隐藏
mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
使用格式:
mount device mount_point
mount /dev/sdb2 /mnt/sdb2
mount [- fnrsvw] [- t vfstype] [- o options] device dir
device:指明要挂载的设备;
(1) 设备文件:例如/dev/sda5
(2) 卷标: – L 'LABEL', 例如 – L 'MYDATA'
(3) UUID, – U 'UUID':例如 – U '0c50523c- 43f1 -45e7- 85c0- a126711d406e'
(4) 伪文件系统名称: proc, sysfs, devtmpfs, configfs
dir:挂载点
事先存在;建议使用空目录
进程正在使用中的设备无法被卸载
选项:
-t vsftype:指定要挂载的设备上的文件系统类型
– r: readonly,只读挂载
– w: read and write, 读写挂载
– n: 不更新/etc/mtab,相当于#mount
– a:自动挂载所有支持自动挂载的设备(定义在了 /etc/fstab文件中,且挂载选项中有auto功能)
– L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备
– B, — bind: 绑定目录到另一个目录上
查看内核追踪到的已挂载的所有设备:
cat /proc/mounts :软链接文件,链接到/proc/myself/mounts
/etc/mtab软链接到/pro/mounts
– o options: (挂载文件系统的选项),多个选项使用逗号分隔
async:异步模式
sync:同步模式,内存更改时,同时写磁盘
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持- a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:不否支持suid和sgid权限
remount:重新挂载
ro:只读
rw: 读写
user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载
acl:启用此文件系统上的acl功能,默认centos中自己添加的设备不自动开启此功能
Defaults:相当于rw, suid, dev, exec, auto, nouser, async
卸载
卸载之前查看挂载情况
findmnt /dev/sdb |findmnt
查看正在访问文件系统的进程,当进程占用时系统是无法卸载文件系统的
lsof mount_point
fuser -v mount_point
终止所有正在访问的文件系统的进程
fuser -km mount_point
卸载
umount mount_point
umount device
将设备考到普通文件
mknod 文件名 b(设备类型) 要拷贝设备主编号 要拷贝设备的次编号
原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/40056
评论列表(1条)
看完博客会对1磁盘管理有一个概览性的认识,但在逻辑表达的组织上显得略微混乱,如果能再优化下逻辑规划会更让人印象深刻