Linux下:磁盘管理和文件系统管理

一、 磁盘基础知识
本章学习之前需要了解以下几点:
  ?强调: Linux里面一切皆文件。
  ?I/O Ports即I/O设备地址,用来标识硬件对应的设备地址,来让操作系统以及cpu使用。
  ?注意: CPU的核数不一定就是越多越好,由于CPU协调之间的问题,性能可能不升反降。

1、 设备文件
  ①、什么是设备文件
    设备文件会关联至一个设备驱动,进而能够跟与之对应的硬件设备进行通信
  ②、设备文件分类:
    ?块设备:block。存取单位"快"。典型代表:磁盘
    ?字符设备:char,存取单位"字符"。典型代表键盘

  ③、设备文件路径:

    # /dev/dev_file

  ④、设备号码标识:
    主设备号:major number,标识设备类型
    次设备号:minor number,标识同一类设备号下的不同设备

[[email protected] dev]# ls -l /dev/ | grep "sda"
lrwxrwxrwx. 1 root root           4 May 23 16:37 root -> sda3
brw-rw----. 1 root disk      8,   0 May 29 05:40 sda    【注意:这是同一设备类型,所以主设备号都是8,由于是同一设备类型下的不同设备,所以次设备号不同,且sdade的次设备号是0】
brw-rw----. 1 root disk      8,   1 May 23 16:37 sda1
brw-rw----. 1 root disk      8,   2 May 23 16:37 sda2
brw-rw----. 1 root disk      8,   3 May 23 16:37 sda3

  ⑤、硬盘接口类型
    接口速率而非硬件设备速率,同一个接口不同的硬盘速率不同

   并行(实现数据串行工作,类似双向两车道,但是之间有数据干扰)

     IDE:133MB/s

     SCSI:640MB/s

   串口(实现数据串行工作,类型单向四车道)

       SATA3:6Gbps(需要除以8来得到实际速率)

     SAS:6Gbps

     USB:480MB/s

    单位(rpm): rotations per minute

  ⑥、磁盘设备的设备文件命名

    命名格式: /dev/DEV_FILE

    不同的主设备命名方法: /dev/sd#
      【注意:#代表a-z】
      如:

       · IDE::/dev/hd

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

    

    同一主设备不同的分区命名:
      【直接使用数字区分】
       如:/dev/sda /dev/sda2 /dev/sda2 /dev/sda3

2、机械式硬盘【这一部分写出来主要是了解作用:要了解什么是磁道、扇区、柱面】

  机械硬盘主要由以下几部分组成:机械手臂(Boom),磁头(Head),转轴(Spindle),盘片(Platter)组成,在实际应用中又将盘片分成了磁道(Track),扇区(Sector)和柱面(Cylinder)

  

     

在实际应用中又将盘片分成了磁道(Track),扇区(Sector)和柱面(Cylinder)

       

                       

3、分区原理知识点

  前言:机械式硬盘是按柱面分区的

  

  ①、0磁道0扇区

    在传统的系统上,当我们启动计算机的时候,默认的最开始会读取0磁道0扇区的数据,其大小是512bytes

    它不属于任何分区,用来标识我们创建的分区信息等

    0磁道0扇区的大小不会算在分区里面

446bytes: boot loader 主引导记录
64bytes: 分区表
16bytes: 标识一个分区      【所以一个机械硬盘最多只能够分4个主分区,或者3个主分区+扩展分区(N个逻辑分区)】
2bytes: 55AA用来标识结尾

实战演练:(要知道 "dd"命令是干什么的)

# 备份MBR
dd if=/dev/sda1 of=/root/mbr bs=512 count=1

# 恢复MBR:
dd if=/root/mbr of=/dev/sda1 bs=512 count=1

# 恢复分区表:
dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66
  注:mbr大小512 所以bs=512 count=1 bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置

4、磁盘分区管理工具:【fdisk 、parted 、sfdisk

  本篇文章主要是讲解fdisk进行磁盘分区操作

  fdisk 管理分区的前提条件:最多只能够管理15个分区

  语法格式2: fdisk [-l, -u] [device]

    参数说明:如果不带参数的话,直接进行分区

           -l:显示当前系统分区情况;后面如果带了具体的那个分区的话,就显示那个分区结构

           -u:对磁盘进行分区操作

 

在使用fdisk命令的时候注意:# fdisk -u /dev/sda    【正确】
# fdisk -u /dev/sda1    【错误】

 在分区操作上:以下是子命令管理操作

     p: print, 显示已有分区;

n: new, 创建        【在分区的时候注意:因为必须保留1-4这4个数字给主分区和扩展分区使用,所以逻辑分区的数字必须从5开始】

d: delete, 删除

w: write, 写入磁盘并退出

q: quit, 放弃更新并退出

m: 获取帮助

l: 列表所分区id

t: 调整分区id

分区保存退出之后还要进行以下几步操作才行

  ①、查看内核是否已经识别分区命令:

    # cat /proc/partaions

  ②、如果内核没有识别,则通知内核重新读取磁盘分区表   

    方法一:
      # partx [-a,-n] /dev/DEVICE
       -a:读取全部全部分区表
       -n:读取指定的分区表

    方法二:
      #kpartx [-a,-f] /dev/DEVICE
       -a:读取全部全部分区表
       -f:强制读取分区表 【注意:这种方法不建议使用,如果上面的读取方法不行的话,最后才使用这种方法】

    方法三: 【注意:这个方法只适用于centos5.x系列】
      # partprobe [/dev/DEVICE]

   ③、做了上面几步之后,如果想使用当前分区的磁盘的话,还需要格式化磁盘

      

案例分析:

[[email protected] ~]# fdisk -l    【查看当前系统里面的所有分区情况】
  
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006ac8d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26         113      694272   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             113        1306     9585664   83  Linux
[[email protected] ~]# fdisk -u /dev/sda      【在磁盘sda上面创建新的分区】

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
         switch off the mode (command ‘c‘).

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e          【扩展分区】
Selected partition 4
First sector (63-20971519, default 63):
Using default value 63
Last sector, +sectors or +size{K,M,G} (63-2047, default 2047): 1000

Command (m for help): p    【查看分区信息】

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006ac8d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2          411648     1800191      694272   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3         1800192    20971519     9585664   83  Linux
/dev/sda4              63        1000         469    5  Extended
Partition 4 does not end on cylinder boundary.

Partition table entries are not in disk order

Command (m for help): w    【保存分区信息并退出】
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[[email protected] ~]# cat /proc/partitions   【查看内核是否已经识别了分区,这里内核没有识别分区】
major minor  #blocks  name

   8        0   10485760 sda
   8        1     204800 sda1
   8        2     694272 sda2
   8        3    9585664 sda3
[[email protected] ~]# partx -a /dev/sda    【通知内核重新读取磁盘分区信息】
BLKPG: Device or resource busy
error adding partition 1
BLKPG: Device or resource busy
error adding partition 2
BLKPG: Device or resource busy
error adding partition 3
[[email protected] ~]# cat /proc/partitions   【再次查看,内核已经识别了分区】
major minor  #blocks  name

   8        0   10485760 sda
   8        1     204800 sda1
   8        2     694272 sda2
   8        3    9585664 sda3
   8        4        469 sda4

5、文件系统管理操作

  1)文件系统类型介绍:

  linux文件系统类型:ext2、ext3、ext4、xfs 【btfrs、reiserfs、jfs、swap(交换分区)、光盘(iso9660)】
  swap: 交换分区

  windows: fat32 、utfs
  unix: FFS、UFS、JFS2
  网络文件系统:NFS、CIFS
  集群文件系统:GFS2、OCFS2
  分布式文件系统:ceph

  根据其是否支持"journal"功能,又分为
   日志文件系统:ext3,ext4,xfs,...
   非日子文件系统:ext2,vfat

  文件系统的组成部分:

内核中的模块:ext4, xfs, vfat

用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat  【其实是一一对应的】

  Linux的虚拟文件系统:VFS------linux系统上可同时使用多种文件系统类型,最终都统一成VFS来进行管理,

             使用cat /proc/filesystems命令来查看系统支持的文件系统类型,

             lsmod命令能查看已装载的模块

2)创建文件系统(格式化):

  mkfs命令:  

  语法1: mkfs.FS_TYPE  /dev/DEVICE

  语法2:mkfs -t  FS_TYPE  /dev/DEVICE   [上面一个可以说成是下面这个的简写]

      FS_TYPE 选项:

        ext4、xfs、btrfs、vfat

      共同参数:

        -L # : 设定卷标名为#

案例详解:

[[email protected] ~]# mkfs.ext4 -L "myname" /dev/sda4  【创建文件系统的同时指定卷标】
mke2fs 1.41.12 (17-May-2010)
Filesystem label=myname
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
64 inodes, 468 blocks
23 blocks (4.91%) reserved for the super user
First data block=1
Maximum filesystem blocks=524288
1 block group
8192 blocks per group, 8192 fragments per group
64 inodes per group

Writing inode tables: done                            

Filesystem too small for a journal
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[[email protected] ~]# blkid /dev/sda4    【查看文件系统类型】
/dev/sda4: LABEL="myname" UUID="0f2e4652-15aa-4589-8c3f-225f73b0c74d" TYPE="ext4"
[[email protected] ~]# 

3)文件系统专用管理工具:

  mke2fs命令 【是ext系列文件系统专用管理工具】

    语法:mke2fs [OPTIONS] /dev/DEVICE

        参数:

        -t: (ext2\ext3\ext4)
        -b:指定block大小,不指定的话默认(1024.2048.4096)
        -L: 指定卷标
        -j: 相当于 -t ext3

        -i # : 为数据空间中没多少个字节创建一个inode;ci大小不应该小雨block大小
        -n # : 为数据空间创建多少个inode
        -m # : 为管理人员预留的空间占据百分比;默认百分之5的空间
        -O FEATURE[,...] : 启用指定特性
        -O ^FEATURE[,...]: 关闭指定特性

    举例:mke2fs -b 2048 -m 3 -L MYDATA /dev/sda4

4)创建交换分区

  命令:mkswap

    使用命令的前提:必须先调整其分区的ID为82 (使用fdisk 里面的 "t" 选项实现)

    命令格式: mkswap [OPTIONS] ... DEVICE

      参数: -L : "LABLE"

5)其他常用工具

  blkid命令 :快设备属性信息查看

    语法: blkid [OPTIONS]... [/dev/DEVICE]

      参数:

       -L:根据指定的LABLE来查找对于的设备

       -U:根据指定设备的UUID来查找对于的设备
    

    【注意:如果前面跟了参数的话,是根据指定参数来查找设备文件,后面路径不要写(写了也没有用);
      如果前面不给参数的话,是查看设备文件的UUID和LABEL等,后面就必须写上是哪个设备文件】  

[[email protected] ~]# blkid /dev/sda4     【查看设备文件属性信息】
/dev/sda4: LABEL="lable" UUID="d33ffdae-f171-492e-b3d5-6099dcbe5856" TYPE="ext4"
[[email protected] ~]# blkid -L lable  【根据设备文件的LABLE,找到该设备文件】
/dev/sda4
[[email protected] ~]#blkid -U "d33ffdae-f171-492e-b3d5-6099dcbe5856"   【根据设备文件的UUID,找到该设备文件】

Blkid 命令的用法

  e2lable命令:管理ext系列文件系统的LABLE

    语法: e2lable [LABLE]  DEVICE

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

    参数:
     -l:查看文件系统的超级块信息:super block
     -L ‘LABLE‘ : 修改卷标
     -j: 将 ext2 升级为ext3 (相当于 "-t ext3")
     -m # : 为管理人员预留的空间占据百分比;默认百分之5的空间
     -O FEATURE[,...] : 启用指定特性
     -O ^FEATURE[,...] 关闭指定特性
      tune2fs -O has_journal /dev/sda5, 会把原先的ext2文件系统改为ext3,
      tune2fs -O ^has_journal /dev/sda5 禁用此属性
     -o:调整文件系统的默认挂载选项,用法和上面一样,关于属性名可以man tune2fs来查看,
      例如tune2fs -o ^acl /dev/sda5 #禁用默认挂载选项的acl功能
     -U UUID : 修改UUID号;UUID但是随机 生成的,要修改的场景不多

    

    dumpe2fs命令

    -h:  查看超级快信息

    举例:  dumpe2fs  /dev/sda4 会详细的显示文件系统信息,或者说是布局信息,比如分组情况,块信息,inode位置等

  

6)文件系统的检测工具(常用于异常关机导致文件系统出错的情况):

    注意事项:无论是异常关机还是正常关机,开机时不要进行文件自动检测,最好是开机后进行文件手动检测

    

    

原文地址:https://www.cnblogs.com/l75790/p/9131525.html

时间: 2024-10-14 01:13:59

Linux下:磁盘管理和文件系统管理的相关文章

Linux系统磁盘管理及文件系统管理中各类命令使用

一.复习上次内容 二.总结整理磁盘管理及文件系统管理中设计的各种命令的使用,并附注一定的示例: 1.mkfs命令使用 mkfs.type -t /dev/sda... mkfs -t ext2 = mkfs.ext2 mkfs -t ext3 = mkfs.ext3 2.mke2fs命令:管理ext系列文件系统 mke2fs [OPTION]...DEVICE -t:指定格式化格式{ext2|ext3|ext4} -b BLOCK_SIZE:指定块大小,默认4096k,也可指定1024或2048

linux下磁盘管理机制--RAID

RAID(Redundant Array Of Independent Disks):独立磁盘冗余阵列.RAID的最初出现的目的是为了解决中小型企业因经费原因使用不起SCSCI硬盘,而不得不使用像IDE较廉价的磁盘情况下,将多块IDE磁盘通过某种机制组合起来,使得IDE磁盘在一定程度上提高读写性能的一种机制.当然,现在也可以将SCSCI类的磁盘也可以做成RAID来提高磁盘的读写性能. 一.RAID的级别 RAID机制通过级别来RAID级别来定义磁盘的组合方式.常见的级别有:RAID0,RAID1

磁盘管理及文件系统管理中各种命令的使用

磁盘管理及文件系统管理中各种命令的使用 (fdisk.mkfs.mount.umount)命令 fdisk命令 fdisk进行硬盘分区从实质上说就是对硬盘的一种格式化.当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即MasterBootRecord,MBR)和引导记录备份的存放位置.而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过之后的高级格式化,即Format命令来实现.用一个形象的比喻,分区就好比在一张白纸上画一个大方框.而格式化好比在方框里打上格子.安

linux下磁盘管理机制--LVM

当我们用传统分区方法使用磁盘时,当出现分区大小不够用的时候,通常只能添加添加一个更大的磁盘,重新创建分区来扩展空间.但是,这样只能是将原来的磁盘下线,换上新的磁盘,在将原始数据写入,在实际的生产过程中是不允许的.此时就需要使用逻辑卷LVM这种磁盘分区管理了. 逻辑卷是将硬盘空间重新"分割"成大小相等的块(PE)组成的PV放到一个容器(VG)中,当需要可以随时向这个容器中取出这样的块,来实现动态调整磁盘空间大小.当然新添加的块不会改变原来的文件系统,而且原磁盘也不用下线. 下面说明逻辑卷

Linux磁盘管理及文件系统管理中命令的使用

1.磁盘管理工具fdisk的使用: 最多支持在一块硬盘上的15个分区: 分区管理子命令: p: 显示磁盘信息 n: 创建一个5G的主分区 d: 删除分区 t: 修改分区ID l: 列出所有支持ID类型 w: 保存退出 q: 放弃修改并退出 m: 获取帮助 创建完成之后,查看内核是否已经识别新的分区: # cat /proc/partitions 如果没有识别到新建分区可使用以下三个命令让内核重读磁盘分区表: CentOS 5: partprobe [DEVICE] CentOS 6,7: par

Linux磁盘管理和文件系统管理

一.磁盘基本知 1.磁盘分类 机械式硬盘 固态硬盘 2.磁盘接口类型: IDE:在Linux下文件名为/dev/hd[a-d],最高速率可达133MBytes SCSI:在Linux下文件名为/dev/sd[a-z],最高速率可达640MBytes SATA:在Linux下文件名为/dev/sd[a-z],最高速率可达6Gbps SAS:在Linux下文件名为/dev/sd[a-z],最高速率可达6Gbps USB:在Linux下文件名为/dev/sd[a-z],最高速率可达480MBytes

磁盘管理和文件系统管理

linux磁盘管理 现在市面上硬盘主要为两种:机械式硬盘  和固态硬盘(SSD) 机械式硬盘 同心圆划分成多个track磁道,每个磁道上有一定数量的扇区(secotr),每个盘面上编号相同的磁道组成了柱面(cylinder) 每个扇区的大小为512bytes MBR模式下0磁道上0扇区为master boot record主引导扇区 前446bytes:存放了bootloafer引导加载器,启动磁盘中的操作系统 接着的64bytes:存放磁盘中的文件系统分区表,每16bytes标识一个分区,所以

磁盘管理及文件系统管理

一 Linux磁盘管理 识别硬盘 /dev/sd# 标记不同的硬盘设备 /dev/sd[a-] 标记同一设备上的不同分区  /dev/sd[a-z][1-]   设备文件 特殊文件  设备号   major,minor   major 设备类型   minor 同一类型下的不同设备    块设备   标识为b 随机访问设备 字符设备 标记为c 线性设备  GPT  分区,分隔存储空间为多个小的空间,每个空间可独立使用文件系统  分区工具   fdisk  parted  sfdisk     f

磁盘管理和文件系统管理(1)

Linux磁盘管理 硬盘: 机械式硬盘5400,7200,10000转/分 SSD 机械式: track磁道 sector: 512bytes cylinder柱面: 分区的基本单位: MBR:Master Boot Record,0扇区0磁道 512bytes 446: bootloader引导加载器 64: filesystem allocation table 16字节: 标识一个分区(最多4个主分区) 2:55AA 磁盘接口类型: IDE (ATA):133MB/s,/dev/hd(ce