详解linux磁盘管理

                       磁盘管理

设备文件

1. I/O portsI/O设备地址

2. 一切皆文件,open(),read(),write(),close(),对设备的操作也都是通     过这些底层函数进行的进行操作的

设备类型

       1. 块设备:block 存取单位“块”磁盘,(数据在磁盘中以块进行  存储的,它是零散          的随机存储)

       2. 字符设备:char 存取单位“字符”,键盘

blob.png

解释/etc/dev 目录下,用ls -l 显示该目录下的详细信息会看到用b c来标识的文件,该文件是字符设备还是块设备

设备文件

设备文件关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

设备号码:主设备号  次设备号

     主设备号,标识设备类型(比如硬盘,光盘,终端等)

     次设备号:标识同一类型下的不同设备(不同分区它的次设备编号也不                同)

 /dev/vda 是虚拟磁盘,不是真实的磁盘

   如下图

blob.png

硬盘接口和类型

       并行:

IDE133MB/s     SCSI640MB/s

串口:

SATA : 6GPs

SAS : 6Gps    注意  这两个单位是b

USB: 480MB/s 注意   这个单位是B

   思考:为什么串口的速度会那个快,并发接口每个针脚之间存在磁干扰,  并且没有错误修复,如果出现错误,会反复进行重传,这样它比串口的速度就会慢很多

       rpm:在硬盘中指的是转速每分钟,rotations  per  minute

 设备文件

磁盘设备的设备文件命名/dev/DEV_FILE

IDE: /dev/hd(而在os7上这种接口的命令已经统一改为/dev/sd

 SCSI, SATA, SAS, USB:  /dev/sd

 不同设备:再用a-z字母进行区分/dev/sda/dev/sdb /dev/sdc/。如 果26个字符还不够           标识的话,那么就用/dev/sdaa  /dev/sdab  ……进行标识

       同一设备上的不同分区:可以用数字进行表示122…..

/dev/sda1, /dev/sda5

磁盘存储术语

blob.png

head :磁头  256个磁头

track :磁道  1024 个磁道

cylinder: 柱面  1024

secotr: 扇区,512bytes   63个扇区

总的容量为:512*63*1024*256  

扇区*扇区个数*磁道数*磁头(或者盘面)

 

磁盘的结构:

磁盘   磁臂  、磁头、  扇区 磁道 、电机、盘片

遵循CHS标准,及柱面,磁头,扇区,磁盘管理的三围

fdisk -l 来显示

blob.png

早其的时候是以整个柱面进行划分的,同一个柱面不能相互被两个分区占用,

一个柱面是8兆,所以分区大小应该是8兆的整数倍

 而在os7上是以扇区进行定义分区大小的

blob.png

blob.png

显示磁盘大小 df   -h命令

fdisk是一个磁盘的管理工具

如果想让os7显示以柱面为分区单位那么就得用

fdisk  -l  -u=cylinders

 

磁盘分区:

为什么要分区?

优化I/O 性能  如:对文件进行操作时无需对整个磁盘进行操作,而是针对某个磁盘。

实现磁盘空间配额限制 如:可以限制磁盘空间

隔离系统和程序  如:/boot分区

安装多个OS   如:一块硬盘上可以格式话成多个文件系统

提高修复速度  如:果某个磁盘某个位置有问题,不需要进行全         盘进行搜素修复,而是针对某个分区进行修复

分区

分区的方式有两种:MBR    GPT

MBR:主引导记录master boot record 使用32位表示扇区数量,因 为232次方为4G 而一个扇区的大小是512个字节,所以总大小为2T

通常是柱面进行分区的

    0磁道0扇区:512字节

446位:是与系统加载有关

系统加载

还有更早的lilo  只是引导机器

os6的有grub

os7而现在普遍用的grub2,还可以做一些加密和修复功能

64字节:分区表

16字节标识一个分区:因此只能表示4个分区

用来标识磁盘从第几个柱面开始,到第几个柱面结束来表示一个分区

最后两位:标识位55AA

如果没有这个55AA的标志位,会表示这个磁盘上没有分区表,表示为一个裸盘,同时也是一个分区表的结束标识位

  4个主分区 或者3个主分区和一个扩展分区+逻辑分区,其中逻辑分 区可以有多个

blob.png

MBR硬盘分区结构图

blob.png

其中分区表中16字节

第一字节  引导标志80表示活动分区,活动区域表示引导操作系统00表示非活动区域

第二字节  表示磁头号

第三字节和第四字节  第三字节低6为表示的是扇区号高两位和第四位表示的是柱面编号分区开始点

第五位  分区类型,0表示未使用分区

第六位  磁头号

第七字节和第八字节   第七位低6位表示扇区,高2位和第八个字节表示柱面号,

后四个字节表示分区开始LBA,就是把前面的

最后四字节表示分区结束LBA  逻辑寻址方式,是把chs模式转变成线性一维寻址方式

 

扩展分区

扩展分区0号扇区

扩展分区(446字节)全为零

分区表项同逻辑分区一样

但是每个逻辑分区前面都有一个零扇区

blob.png

     中间的那个提示表示的是分区一,没有以一个完整的柱面作为一个整分区

      如果不想看那个信息可以用

      fdisk -lc

blob.png

linux中也支持以扇区为表示的显示分区信息

fdisk -lcu

blob.png

如何产看磁盘的分区表的二进制呢

hexdump  -C -n 512 /dev/sda

blob.png

备份分区表,但不是备份硬盘数据,备份的只是分区表

dd  if=/dev/sda  of=/root/mbr bs=1 count=512

blob.png

恢复分区表

dd if=/root/mbr   of=/dev/sdb

blob.png

注意扩展分区里面的逻辑分区备份不回来的,因为扩展分区中逻辑分区是保存在零扇区的,而不是硬盘的零扇区,逻辑分区不在mbr中存储

blob.png

dd if=/dev/zero  of=/dev/sdb bs=1  count=446

blob.png

如何生效刚加入的硬盘,

1重启

2.用命令:echo – – –>/sys/class/scsi_host/host2/scan

注意两个横线直接是有空格的

blob.png

GRT分区

支持128个分区,使用64位支持8Z512byte/block)和64Z

使用128UUiD表示磁盘和分区GPT

分区表自动备份在头和尾两份,并没有CRC校验位

UEFI(统一扩展固件接口)硬件支持GPT是操作系统使操作系统启动

如果不用GPT做引导,只是存数据,这样有没有有硬件支持都无所谓

blob.png

LBA0内是存放伪MBR,及protection MBR

因为很多分区工具只识别MBR分区方式,如果没有这个分区表会以为这是一个裸磁盘,这时候系统会提示设备为空,其实里面可能是有数据的,这样可能会造成数据的丢失

保护MBR的作用就是提示,就是提示上面有分区,不要轻易分区

防止老的分区工具破坏gpt分区

前面是分区表,后面是分区,最后面是备份分区表

列出块设备:lsblk

创建分区使用

fdisk创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15个分区

gdisk创建GPT分区

parted 高级分区操作(创建、复制、调整大小等等)他是非交互的因次操作比较危险慎用

partprobe  同步置内存分区表

查看分区的三种方式

第一种:lsblk

blob.png

第二种:ll /dev/sd*

blob.png

第三种:cat /proc/partitions

blob.png

查看正在生效的设备,所谓生效就是加载到内存中

fdisk其实也能管理gpt格式的分区但是不长用,也不推荐用

要管理gpt有一个专门的工具进行管理gdisk

fdisk分区时一定注意是对磁盘进行分区,而不是对分区进行分区

fdisk  /dev/sdb   

而不是 对分区进行进行分区,当然对分区进行在分区也不是是不可以只是不能分,这是会显示一个p的标识表示里面一个分区

在查看分区表中显示的块大小是以1k为大小的

解决添加分区后没有同步的问题

partx -a /dev/sda

partprobe 只有os6上不会生效

删除分区同步

partx -d –nr 7-8 /dev/sda   n是分区号

查看正在生效的设备,所谓生效就是加载到内存中

fdisk其实也能管理gpt格式的分区但是不长用,也不推荐用

要管理gpt有一个专门的工具进行管理gdisk

fdisk分区时一定注意是对磁盘进行分区,而不是对分区进行分区

fdisk  /dev/sdb   

而不是 对分区进行进行分区,当然对分区进行在分区也不是是不可以只是不能分,这是会显示一个p的标识表示里面一个分区

在查看分区表中显示的块大小是以1k为大小的

解决添加分区后没有同步的问题

partx -a /dev/sda

partprobe 只有os6上不会生效

删除分区同步

partx -d –nr 7-8 /dev/sda   n是分区号

parted 的操作都是实时生效的,小心使用

v    用法:parted [ 选项]… [备 设备 [令 命令 [ 参数]…]…]

parted /dev/sdb mklabel     gpt|msdos 创建gpt方式或是mbr方式分区

parted /dev/sdb print 打印分区列表

parted /dev/sdb mkpart primary 1 200 创建分区,

parted /dev/sdb rm 1 删除分区

parted -l

文件系统

文件系统:是操作系统用于明确存储设备或分区上的文件的方

法和数据结构;即在存储设备上组织文件的方法。操作系统

中负责管理和存储文件信息的软件结构称为文件管理系统,

简称文件系统。

          从系统角度来看,文件系统是对文件存储设备的空间进行组

织和分配,负责文件存储并对存入的文件进行保护和检索的

系统。具体地说,它负责为用户建立文件,存入、读出、修

改、转储文件,控制文件的存取,安全控制,日志,压缩,

加密等

文件系统类型 Linux 文件系统: ext2, ext3, ext4, xfs SGI , btrfsOracle , reiserfs, jfs AIX , swap

swap: 交换分区

光盘:iso9660

Windows fat32, ntfs

Unix: FFS fast , UFS unix , JFS2

网络文件系统:NFS, CIFSwindows的文件共享)

集群文件系统:GFS2, OCFS2 oracle) )

分布式文件系统:ceph, moosefs, mogilefs, glusterfs,红帽的数据同步

Lustre

RAW :未经处理或者未经格式化产生的文件系统,分完区,没有进行任何操作,

文件系统分类

根据其是否支持"journal" 功能:

日志型文件系统: ext3, ext4, xfs, …

非日志型文件系统: ext2, vfat

文件系统的组成部分

内核中的模块ext4, xfs, vfat

用户空间的管理工具mkfs.ext4, mkfs.xfs,mkfs.vfat

v Linux 的虚拟文件系统:VFS

查前支持的文件系统:cat /proc/filesystems

lsmod可以查看系统支持的安装模块

blob.png

上图的数字表示的引用的次数

查看系统所支持的文件系统

blob.png

autofs自动挂载,只有一访问/misc/cd就会触发这个命令

创建文件系统

mkfs.ext4  /dev/sdb1 一旦创建就会自动创建一个UUID

UUID来唯一标识一个分区标识

查看文件的大小du 命令

ext4文件系统中最小的单位是1k 2k 4k

用命令tune2fs  -l  /dev/sda |grep size

blob.png

blob.png

在一个分区中,通常会有超块来记录组的元信息,包括:里面分了几个组每个组是从第几个块到第几个组结束,块大小,在格式话的时候超级开的大自动已经完成了备份,

一个组的大小通常是8192

用命令dumpe2fs   /dev/sdb1

blob.png

查看文件类型

blkid

blob.png

用卷标进行查找blkid -L 卷标名

blkid  -U  uuid=dedjggj

如何生成随机生成uuidgen

 

如何去掉日志功能和添加日志功能

tune2fs  -O   ^has_journal  /dev/sda5

tune2fs  -O   has_journal   /dev/sda5

blob.png

只有挂载才能查看用df命令查看

mkfs 命令:

(1) # mkfs.FS_TYPE /dev/DEVICE

ext4

xfs

btrfs

vfat

(2) # mkfs -t FS_TYPE /dev/DEVICE

-L 'LABEL': 设定卷标

e2label  /dev/sdb1  /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

文件系统标签

tune2fs :重新设定ext 系列文件系统可调整参数的值

-l :查看指定文件系统超级块信息;super block

-L 'LABEL' :修改卷标

-m # :修预留给管理员的空间百分比

-j: ext2 升级为ext3

-O: 文件系统属性启用或禁用, O ^has_journal

-o: 调整文件系统的默认挂载选项,o ^acl

-U UUID: 修改UUID 号;

v dumpe2fs: :

-h查看超级块信息(分组信息),分区用分组管理

mount  -o  acl  /dev/sdb   /mnt/sdb3 mount来加载acl

tune2fs  -o acl


blob.png

然后用fsck命令修复

 常发生于死机或者非正常关机之后

v 挂载为文件系统标记为“dirty” ”

v fsck: File System Check

fsck.FS_TYPE

fsck -t FS_TYPE

-a: 自动修复错误

-r: 交互式修复错误

v 注意: FS_TYPE 一定要与分区上已经文件类型相同;

v e2fsck ext 系列文件专用的检测修复工具

-y :自动回答为yes

-f :强制修复

挂载mount

挂载: 将额外文件系统与根文件系统某现存的目录建立起关联

关系,进而使得此目录做为其它文件访问入口的行为

v 卸载:为 为 解除此关联关系的 过程

v 把设备关联挂载点:mount Point

mount 卸载时:可使用设备,也可以使用挂载点

umount

v 挂载点下原有文件在挂载完成后会被临时隐藏

v 挂载点目录一般为空

 mount 命令挂载文件系统

 挂载方法:mount DEVICE MOUNT_POINT

v mount :通过查看/etc/mtab 文件显示当前已挂载的所有设备

v 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 :挂载点

事先存在;建议使用空目录

进程正在使用中的设备无法被卸载

mount常用命令选项

 -t vsftype :指定要挂载的设备上的文件系统类型

v -r: readonly ,只读挂载

v -w: read and write, 读写挂载

v -n: 不更新/etc/mtab ,相当于#mount

v -a :自动挂载所有支持自动挂载的设备( 定义在了/etc/fstab

文件中,且挂载选项中有auto 功能)

v -L 'LABEL': 以卷标指定挂载设备

v -U 'UUID': UUID 指定要挂载的设备

v -B, –bind: 绑定目录到另一个目录上

v 查看内核追踪到的已挂载的所有设备:

cat /proc/mounts

mount常用命令选项

-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 功能

v Defaults :相当于rw, suid, dev, exec, auto, nouser, async

卸载命令和/etc/fstab

查看挂载情况:

#findmnt MOUNT_POINT

v 查看正在访问指定文件系统的进程:

#lsof MOUNT_POINT

#fuser -v MOUNT_POINT

v 终止所有在正访问指定的文件系统的进程:

# fuser -km MOUNT_POINT

v 卸载:

# umount DEVICE

# umount MOUNT_POINT

配置文件系统体系

v 被 被mount fsck 和其它程序使用

v 系统重启时保留文件系统体系

v 可以在设备栏使用文件系统卷标

v 使用mount -a 命令挂载/etc/fstab 中的所有文件系统

原创文章,作者:yywan1314,如若转载,请注明出处:http://www.178linux.com/40362

(0)
yywan1314yywan1314
上一篇 2016-08-29
下一篇 2016-08-29

相关推荐

  • Linux-raid的工作原理与管理

    本章内容:        1、RAID详细描述        2、mdadm 工具        3、创建raid        4、磁盘阵列的管理 RAID描述:     &nb…

    2017-06-24
  • corosync v2 + pacemaker + crmsh 实现mariadb高可用

    高可用mariadb拓扑图 一、设计前提     1、时间同步 # ntpdate 172.16.0.1 或者 # chronyc sources     2、所有的主机对应的IP地址解析可以正常工作, 主机名要与命令#uname -n 所得的结果一致   &…

    Linux干货 2014-08-13
  • rsync+inotify实现实时同步案例

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,…

    Linux干货 2016-10-30
  • 正则表达式30分钟入门教程

    来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial。 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了如果有问题,再到这里来提出. 一些要说的话: 如果你没有正则表达式的基础,请跟着教程“一步步来”。请不要大概地扫两眼就说看不懂——以这种态度我写成什么样你也看不…

    2015-03-12
  • netstat

    netstat命令 netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等 1 常用选项: -a :(all)显示所有选项,默认不显示LISTEN相关 -t :(tcp)仅显示tcp相关选项 -u :(…

    Linux干货 2017-05-07
  • phpMyAdmin安装部署

    phpMyAdmin安装部署 phpMyAdmin 是一个用PHP编写的软件工具,可以通过web方式控制和操作MySQL数据库。通过phpMyAdmin 可以完全对数据库进行操作,例如建立、复制和删除数据等等。如果使用合适的工具,MySQL数据库的管理就会变得相当简单。应用 MySQL 命令行方式需要对 MySQL 知识非常熟悉,对SQL语言也是同样的道理。…

    2017-06-13

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-29 15:36

    文章对磁盘的基础知识总结的较为全面,内容完整,但是对于纯理论的东西,我们要尽量做到清晰化,也就是说明确定义,并通过查找资料来进行描述,而不是简单的列一些关键字,这是不好的,需要作者多加注意。