Linux磁盘管理(分区,格式化,文件系统、VFS、mount、fstab)

Linux系统中数据存储在磁盘中,磁盘在冯诺依曼体系中属于输入输出外部存储对象,保存着重要的企业数据,对Linux系统中的磁盘管理尤其需要熟练掌握,由于企业目前使用的主流存储设备还是硬盘,所以这里只叙述硬盘的组织结构;

1.分区:

   (1)低级格式化:

      硬盘在出厂的时候厂家会做一次分区格式化,主要是划分磁道和的固定大小的扇区,这就是所谓的低级格式化,由厂商完成;


   (2)分区作用:

      厂家做完低级格式化后,整个磁盘是一个完成完整的物理边界,直接使用当发生故障后,要修复的范围是整个磁盘,同时在整个磁盘上实现对文件系统的管理效率是很低下的,尤其是大空间量的磁盘管理更加困难;可以通过划分分区,划分多个空间作为独立管理对象,在一个相对较小独立的空间中,即提高了故障修复速度,同时也提高了数据管理效率;

   (3)分区视角:

      通过上面的说明可以看出分区是磁盘空间的逻辑边界;

 

   (4)分区类型:

      MBR:主引导记录

      这种分区方式通过MBR记录各分区表的信息,开机引导操作系统的方式以及磁盘分区是否可以;具体如下

      MBR:总大小512个字节,不参与分区空间划分,记录在磁盘的最开始处;

      boot loader:引导加载器,前446byts;

      分区表:总大小64bytes,16bytes标识一个分区;所以最多四个分区;

      MBR分区类型:可以最多四个主分区或者三个主分区和一个扩展分区;

      GPT:GUID(globals unique identfiers)

      根据MBR划分主分区的数量限制,满足不了更大磁盘空间管理,所以有了GPT磁盘分区方式,GPT突破了传统可以最大划分128个分区,使用的是64位;分区结构如下:

      Protective MBR:GPT分区保护,防止不能识别GPT分区的从而破坏GPT分区数据;

      EFI:GPT头

      分区表

      GPT分区

      备份分区

   (5)分区工具:

      1.查看系统磁盘设备工具:要想管理,首先要知道系统有哪些磁盘可用;方式如下:

        lsblk:查看系统磁盘设备情况

[root@xia7 ~]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0  200G  0 disk 
├─sda1          8:1    0  488M  0 part /boot
├─sda2          8:2    0   40G  0 part /
├─sda3          8:3    0   20G  0 part /usr
├─sda4          8:4    0    1K  0 part 
└─sda5          8:5    0    2G  0 part [SWAP]
sdb             8:16   0  100G  0 disk 
├─sdb1          8:17   0   10G  0 part 
├─sdb2          8:18   0   10G  0 part 
└─sdb3          8:19   0   20G  0 part /tmp/mnt

      

        cat /proc/partitions :查看系统识别的设备信息

[root@xia7 ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0  209715200 sda
   8        1     499712 sda1
   8        2   41943040 sda2
   8        3   20971520 sda3
   8        4          1 sda4
   8        5    2098176 sda5
   8       32   20971520 sdc
   8       33   20970496 sdc1
   8       16  104857600 sdb
   8       17   10485760 sdb1
   8       18   10485760 sdb2
   8       19   20971520 sdb3
   8       48   20971520 sdd
   8       49   20970496 sdd1
  11        0    7587840 sr0
   8       64   20971520 sde
   8       65   20970496 sde1
   8       80   20971520 sdf
   8       81   20970496 sdf1
 253        0   73400320 dm-0

        ls -l /dev/sd* :查看系统读取的设备

[root@xia7 ~]# ls -l /dev/sd*
brw-rw---- 1 root disk 8,  0 Aug 30 20:25 /dev/sda
brw-rw---- 1 root disk 8,  1 Aug 30 20:25 /dev/sda1
brw-rw---- 1 root disk 8,  2 Aug 30 20:25 /dev/sda2
brw-rw---- 1 root disk 8,  3 Aug 30 20:25 /dev/sda3
brw-rw---- 1 root disk 8,  4 Aug 30 20:25 /dev/sda4
brw-rw---- 1 root disk 8,  5 Aug 30 20:25 /dev/sda5
brw-rw---- 1 root disk 8, 16 Aug 31 09:45 /dev/sdb
brw-rw---- 1 root disk 8, 17 Aug 31 09:45 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Aug 31 09:45 /dev/sdb2
brw-rw---- 1 root disk 8, 19 Aug 31 09:45 /dev/sdb3

        fdisk -l :查看设备详细信息

[root@xia7 ~]# fdisk -l
Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 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 label type: dos
Disk identifier: 0x000f1359
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1001471      499712   83  Linux
/dev/sda2         1001472    84887551    41943040   83  Linux
/dev/sda3        84887552   126830591    20971520   83  Linux
/dev/sda4       126830592   419430399   146299904    5  Extended
/dev/sda5       126834688   131031039     2098176   82  Linux swap / Solaris
Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0xa573c896
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   8e  Linux LVM

   (6)分区命令fdisk

      语法格式:fdisk -l device

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
Command (m for help):

      常用选项解释说明:

       m:查看帮助菜单

       p:查看分区信息

       n:创建分区:其中有子命令  

         e:创建扩展分区

         p:创建主分区:

       t:改变其他分区类型;默认为Linux分区

           l|L :可以查看创建的分区的类型

       d:删除分区;需要指定分区编号,一个默认直接删除;

       o:转换磁盘类型为msdos也就是MBR分区

       w:保存修改退出

       q:不保存修改退出


     gdisk工具:专门创建GPT分区命令,使用格式跟fdisk命令使用类似,这里不再介绍;

  

   (7)系统重新读取修改配置命令:

       让系统读取设备命令

        partprobe [device]


        partx -a device 

       

       让系统删除已经改变的分区

        partx -d device 

     

   (8)高级分区parted命令:

       这是一个实时生效的非交互式操作命令,实现分区管理

      语法格式:

          parted [device] [command] [argument]

      常用选项:

          mklabel gpt|msdos :设置磁盘分区类型

          print :查看指定磁盘分区信息;

          mkpart parimary 分区编号 分区大小 :创建分区类型指定编号及大小;

          rm 分区编号:删除第几个分区

          -l :查看所有磁盘信息

文件系统

    文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。

    从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。

    文件系统类型:

    这里主要简述常用的Linux系统支持的文件系统类型;

        ext系列:ext2,ext3,ext4

        xfs

        btrfs

        reiserfs

        光盘:iso9660

     上面除了ext2不支持journal日志功能,其他都持续日志功能,同时支持日志的方式也有所不同,这些方式分别有自己特性,不过总的区别是文件安全和性能之间的取舍;


VFS

    Linux系统能够支持众多的文件系统并存是因为Linux采用了虚拟文件系统(VFS)

    VFS工作原理:

    磁盘属于硬件,文件系统是Linux内核kernel的功能,能够真正操作硬盘(硬件)是Linux内核,硬件功能由系统调用systemcall提供,文件操作有open(),read(),write(),close(),create(),delete(),每个文件系统对文件的组织管理是不同的,说明调用方式也有所不同,也就是说管理文件系统的程序要想实现对不同文件系统中的文件操作,必须要把对所有文件系统的操作方式写到程序中,这就势必造成程序显得十分臃肿,为了解决这种现象,Linux

内核通过VFS来磨合多种差异,因为只要让VFS知道对每个文件系统的文件操作方式就行,以一个统一的接口提供给上层跟文件管理操作相关的程序,这就是Linux能够支持众多文件系统的原因;

     查看当前内核支持的文件系统:

       cat /proc/filesystems

[root@xia7 ~]# cat /proc/filesystems 
nodevsysfs
nodevrootfs
nodevbdev
nodevproc
nodevcgroup
nodevcpuset
nodevtmpfs
nodevdevtmpfs
nodevdebugfs
nodevsecurityfs
nodevsockfs
nodevpipefs
nodevanon_inodefs
nodevconfigfs
nodevdevpts
nodevramfs
nodevhugetlbfs
nodevautofs
nodevpstore
nodevmqueue
xfs
nodevrpc_pipefs
nodevnfsd
ext3
ext2
ext4


   

创建文件系统:

      mkfs命令工具:

      语法

         mkfs.filesystem_type /dev/device 

         mkfs [option] /dev/device

      常用选项:

         -t:指定文件系统类型

         -L:指定LABEL,卷标

         -i:inode

         -N:创建多少个inode

         -m:预留空间百分比,默认%5,留个系统管理员可操作空间;

   

     mke2fs:创建ext系列文件系统命令工具:

     语法格式:

          mke2fs [option]…/dev/device

     常用选项:

         -j:创建ext3相当于-t ext3 

         -t:创建ext文件系统类型

         -L:LABEL

         -m:预留空间百分比,默认%5,留个系统管理员可操作空间;

         -b:指定block的大小,1024,2048,4096

 

   查看分区文件系统信息:

       blkid命令:

       语法格式:

    blkid [option] /dev/device

[root@xia7 ~]# blkid 
/dev/sda1: UUID="385fe9f8-1da7-427c-8796-a43a39ea3908" TYPE="xfs" 
/dev/sda2: UUID="0af6d0c7-d33b-4807-85c1-eb43f2abd6a0" TYPE="xfs" 
/dev/sda3: UUID="8c33aaa4-511b-443d-b6f8-ef18fc432f48" TYPE="xfs" 
/dev/sda5: UUID="6cfe3bb8-08ff-450a-957e-dba4ba41ab09" TYPE="swap" 
/dev/sdb1: UUID="b5feec83-8838-4be8-9dbd-a7e63de2c699" TYPE="ext4" 
/dev/sdb2: UUID="aee25a1d-1e43-4b33-9a88-625e7d8a2bf6" TYPE="ext4" 
/dev/sdb3: UUID="60134f39-d392-4f35-a9ef-1eb63db73b0c" TYPE="ext4" 
/dev/sdd1: UUID="tKcKfd-l4zR-Z930-hyKP-szq8-eLae-usPI4l" TYPE="LVM2_member" 
/dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/myvg/mylv: UUID="ec682d89-d8dc-4f96-8d59-ba30f1b8a6f6" TYPE="ext4"

       e2label命令:管理ext系列文件系统卷标命令

       语法格式:

           e2label [option] /dev/device

[root@xia7 ~]# e2label /dev/sdb3 mydate1
[root@xia7 ~]# e2label /dev/sdb3
mydate1
[root@xia7 ~]#

       tune2fs命令:调整ext系列文件系统属性命令

       语法格式:

           tune2fs [option]… /dev/device

       常用选项:

            -o:acl

           -o:^acl

           -L:LABEL

           -l:查看设备详细属性

[root@xia7 ~]# tune2fs -o acl /dev/sdb3
tune2fs 1.42.9 (28-Dec-2013)
[root@xia7 ~]# tune2fs -l /dev/sdb3
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   mydate1
Last mounted on:          <not available>
Filesystem UUID:          60134f39-d392-4f35-a9ef-1eb63db73b0c
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue

       

       findfs :根据分区的UUID和LABEL查分区

       findfs [option] LABEL=

       findfs [option] UUID=

[root@xia7 ~]# findfs LABEL=mydate1
/dev/sdb3

       uuidgen 生成UUID命令

[root@xia7 ~]# uuidgen 
4dee18b8-d127-4210-9173-7e8dd02c2e3e

       dumpe2fs:查看ext系列文件系统详细信息 

       语法格式:

            dumpe2fs [option] /dev/device


文件系统修复工具:

       fsck:修复文件系统命令:

       语法格式:

            fsck.filesystem_type /dev/device

            fsck [option] /dev/device

       常用选项:

           -r:交互式修复

           -a:自动修复

           -t:指定文件系统类型

[root@xia7 ~]# fsck.ext4 /dev/sdb2
e2fsck 1.42.9 (28-Dec-2013)
mydatedb: clean, 11/655360 files, 83137/2621440 blocks
[root@xia7 ~]#

        e2fsck:修复ext系列文件系统命令:

         语法格式:

         e2fsck option [device]

         常用选项:

            -p:查看文件系统是否正常

            -f:强制检查

            -y:自动修复

         

文件系统挂载mount

    linux的其他分区文件系统要想使用必须关联至rootfs根文件系统目录下,作为其他分区文件系统的访问入口,关联的目录称为挂载点,关联过程称为挂载,需要使用的命令工具是mount,关机重启时会失效,要想永久有效,需要写入到配置文件/etc/fstab;

    mount:挂载命令:

    语法格式

          mount [option][-o[option]…] 挂载设备 挂载点(目录)

    挂载设备

         设备名

         UUID="UUID"

          LABEL="label"

    挂载点

        注意挂载目录必须事先存在,同时确认挂载目录中没有其他文件,否则挂载成功会隐藏文件

    常用选项:

        -a:自动挂载/etc/fstab文件中的配置

        -n:挂载成功后不把配置信息写入/etc/mtab文件中;

        -t:指定挂载设备类型

        -r:只读挂载

        -w:读写挂载

        -o:这个选项有很多其他子命令,列出常用选项

             remount:重新挂载

             ro:只读挂载

             rw:读写挂载

             sync/nosync:磁盘写入数据方式,同步还是异步;

             suid/nosuid:是否启用suid、sgid特殊权限位;

             –bind:简写-B,可以挂载目录

/etc/fstab配置文件语法格式

fstab.png

   

 

 

     

   

   

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

(1)
xiashixiangxiashixiang
上一篇 2016-09-02
下一篇 2016-09-02

相关推荐

  • FHS文件系统共能介绍

    FHS文件系统共能介绍   FHS,即File Hierarchy Standard,文件层级标准。多数Linux系统下的文件管理采用此种文件组织形式,它定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。   这中组织是一种倒树状结构,所有的文件与目录都是由根目录”/”开始,然后…

    Linux干货 2016-10-18
  • 最简单的Linux系统——更加深入了解Linux启动过程

    自制一个最简单的Linux: 1、有一个新的磁盘,并创建分区 2、挂载分区,创建目录 3、拷贝内核文件 4、创建MBR和grub.conf文件 5、创建/etc/fstab文件,设置开机自动挂载 6、拷贝一个bash程序 7、卸载分区,以新磁盘重启系统

    Linux干货 2016-09-11
  • linux终端类型

    人机交互界面:GUI、CLI GUI: gnome:c,gtk kde:c++,qt CLI: bash,zsh,sh,csh,ksh 不同CLI间跳转:alt+f1\f2\f3\f4   终端类型: 物理终端、控制台终端:/dev/console,控制台console 计算机显示器通常被称为控制台终端(Console) 虚拟终端:/dev/tty…

    Linux干货 2016-10-14
  • 小白学习Linux系统一周总结

         告别平凡,安定而又没什么前途的工作,我选择了报了门热门的计算机课程--python运维开发。我不知道为什么一开始就学Linux系统,我早预料到这是一个艰难的开始,还好我不是完全没有基础,以前有学过iOS开发。看到着终端中的“\”表示根目录,我轻微有点亲切感,不像第一次看到终端时的恐惧。我总结这周的学习感受,希…

    Linux干货 2017-09-04
  • 一个简单小例子来说一下Rescue营救模式

    昨天不小心将/lib64下的一个动态库文件libc.so.6(很多命令都依赖的)给移动到了/root下,然后除了一些内部命令可用外,其余命令都不能用了,然后就想着看看重启可不可以修复,结果重启后就再也开不了机了,心想着这可咋整,要不用最快的方式进行快照恢复吧,结果老师就说了,不能使用快照,让我们使用Rescue营救模式进行恢复,然后在恢复的过程中就发现一个问…

    Linux干货 2017-08-21
  • 用PHP编写Hadoop的MapReduce程序

    Hadoop流 虽然Hadoop是用java写的,但是Hadoop提供了Hadoop流,Hadoop流提供一个API, 允许用户使用任何语言编写map函数和reduce函数.Hadoop流动关键是,它使用UNIX标准流作为程序与Hadoop之间的接口。因此,任何程序只要可以从标准输入流中读取数据,并且可以把数据写入标准输出流中,那么就可以通过Hadoop流使…

    Linux干货 2015-04-13