11. linux磁盘及文件系统管理

Linux磁盘及文件系统管理

  CPU,RAM

  IO:Disks, Ehtercard

          Disks:持久存储数据

 

 

 Linux磁盘及文件系统管理

  磁盘(disks):持久化存储数据

    接口类型:

      IDE:并口,133MB/s

      SCSI:并口

      SATA:串口6gbps

      SAS:串口,6gbps

      USB:480MB/s

      iops:io per second

    磁盘:机械硬盘,固态

      机械硬盘:

        track:磁道

        sector:扇区,512bytes

        cylinder:柱面

          分区划分基于柱面

Linux哲学思想:一切皆文件

  设备类型:

    块设备:随机访问,数据交换单位是block(块)

    字符设备:线性访问,数据交换单位是“字符”。

  设备文件:

    /dev

     设备文件:关联至设备的驱动程序,设备的访问入口

       设备号:

         主设备号(major):区分设备类型;用于标明设备设备所需要的驱动程序。

         次设备号(minor):区分同种类型下不同设备;是特定设备的访问入口。

       手动创建设备文件:mknod命令

                mknod [OPTION]... NAME TYPE [MAJOR MINOR]

                  -m MODE:创建文件后的设备文件权限

       磁盘命名:

          IDE:dev/hd[a-z]

          SCSI,SATA,USB,SAS:dev/sd[a-z]   

          分区:

            dev/sda[数字] 

              /dev/sda1,...

 

          引用设备的方式:

            设备文件名

            卷标

            UUID

  磁盘分区:

    MBR:0编号的扇区,主引导扇区。

      分为三部分:

        446bytes:bootloader,程序,引导操作系统的程序

        64bytes:分区表,每16bytes标识一个分区,一共只能有4个分区

          4主分区

          3主1扩展

            n个逻辑分区

        2bytes:MBR区域的有效性标识,55AA为有效

       主分区和扩展分区标识:1-4

      逻辑分区:5+

分区管理命令:

  fdisk命令:

    1. 查看磁盘分区信息:

    fdisk -l [-u] [device...] :列出指定磁盘设备上的分区情况

[root@named_server ~]# fdisk -l

Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 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: 0x0009ac89

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   104857566    52427759+  83  Linux

Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 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: 0x1348ce7c

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    20973567    10485760   83  Linux
[root@named_server ~]# 

 

     2. 管理分区

      fdisk device

      fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存种完成,没有直接同步到磁盘,直到使用w命令保存到磁盘才生效。

      常用命令:

        n :创建新分区

        d:删除已有分区

        t:修改分区类型

        w:保存并退出

        q:不保存退出(放弃修改)

        m:查看帮助信息

        p:显示现有分区信息

      注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别。

      确认内核有没有识别:cat/partitions

[root@named_server ~]# cat /proc/partitions 
major minor  #blocks  name

 253        0   52428800 vda
 253        1   52427759 vda1
  11        0      42048 sr0
 253       16  104857600 vdb
 253       17   31457280 vdb1
 253       18   31457280 vdb2
 253       19   31457280 vdb3

 

      通知内核强行重读分区表:

        centos5:partprobe [device]

        centos6;centos7:partx -a /dev/sdb(可能需要执行多次)

                 kpartx -af [device]

       分区创建工具:partend, sfdisk

创建文件系统:

  格式化:

    低级格式化:(分区之前进行,划分磁道)

    高级格式化:(分区之后对分区进行,创建文件系统)

  磁盘分区分为:元数据区和数据区

    元数据区:

      文件元数据:inode(index node)

        大小,权限,属主属组,时间戳, ...

      

      符号链接文件:存储数据指针的空间当中存储的是真实文件的访问

      设备文件:存储数据指针的空间当中存储的是设备号(major, minor)

  vfs:Virtual File System

    Linux的文件系统:ext2,ext3,ext4,xfs,relserfs,btrfs

    光盘:iso9660

    网络文件系统:nfs,cfs

    集群文件系统:gfs2,ocfs2

    内核级分布式文件系统:cefs

    windows文件系统:vfat,ntfs

    交换文件系统:swap

  Linux文件系统管理工具

    创建文件系统工具

      mkfs

        mkfs.ext2;mkfs.ext3;mkfs.ext4;mkfs.xfs;mkfs.vfat;...

    检测及修复文件系统的工具

      fsck

      fsck.ext2;fsck.ext3;fsck.ext4;...

    查看其属性工具

      dumpe2fs;tune2fs

    调整文件系统特性

      tune2fs

链接文件:访问同一个文件的不同路径

  硬链接:指向同一个inode的多个文件路径

    ln 源文件  链接文件

    特性:

      (1) 目录不支持硬链接

      (2) 硬链接不能跨文件系统

      (3) 创建硬链接会增加inode引用技术

  符号链接(软链接):指向一个文件路径的另一个文件路径 

    ln -s  源文件  符号链接文件 

    特性:

      (1) 符号链接与文件是两个各自独立的文件,各有自己的inode;对源文件创建符号链接不会增加引用计数

      (2) 支持对目录创建符号链接,可以跨文件系统

         (3) 删除符号链接文件不影响源文件;但是删除源文件,符号指定的路径将不存在,此时会变成无效链接

      注意:符号链接的文件的大小是其指定的文件的路径字符串的字节数

[root@named_server tmp]# ls
a.txt  test
[root@named_server tmp]# ln a.txt a.txt.bak   //创建硬链接
[root@named_server tmp]# ll
total 4
-rw-r--r-- 2 root root    0 Aug 17 15:53 a.txt    //引用计数为2
-rw-r--r-- 2 root root    0 Aug 17 15:53 a.txt.bak
drwxr-xr-x 2 root root 4096 Aug 17 15:53 test
[root@named_server tmp]# rm -rf a.txt.bak  // 删除源文件不影响链接文件
[root@named_server tmp]# ll
total 4
-rw-r--r-- 1 root root    0 Aug 17 15:53 a.txt
drwxr-xr-x 2 root root 4096 Aug 17 15:53 test
[root@named_server tmp]# 

 

[root@named_server tmp]# ll
total 4
-rw-r--r-- 1 root root    0 Aug 17 15:53 a.txt
-rw-r--r-- 1 root root    0 Aug 17 15:54 stargate.lock
drwxr-xr-x 2 root root 4096 Aug 17 15:53 test
[root@named_server tmp]# ln -s a.txt b.txt  // 创建软连接
[root@named_server tmp]# ll
total 4
-rw-r--r-- 1 root root    0 Aug 17 15:53 a.txt
lrwxrwxrwx 1 root root    5 Aug 17 16:00 b.txt -> a.txt
-rw-r--r-- 1 root root    0 Aug 17 15:54 stargate.lock
drwxr-xr-x 2 root root 4096 Aug 17 15:53 test
[root@named_server tmp]# rm -rf a.txt // 删除源文件
[root@named_server tmp]# ll
total 4
lrwxrwxrwx 1 root root    5 Aug 17 16:00 b.txt -> a.txt  // 损坏链接,无效链接
drwxr-xr-x 2 root root 4096 Aug 17 15:53 test
[root@named_server tmp]# 

 

ext系列文件系统的管理工具:

  mkfs.ext2;mkfs.ext3;mkfs.ext4(建议使用ext4)

  mkfs  -t  ext2  等价于 mkfs.ext2

  ext系列文件系统专用管理工具:mke2fs

    mke2fs [OPTIONS] device

      -t {ext2| ext3| ext4}:指明要创建的文件系统类型

          mkfs  -t  ext2  等价于 mkfs.ext2 等价于 mke2fs -t ext2

      -b {1024|2048|4094}:用于指明文件系统的块大小

      -L LABEL:指明卷标

      -j:创建有日志功能的文件系统ext3

      -i 数字:指明inode与字节的比例;即每多少字节创建一个inode  

    dumpde2fs命令:显示ext系列文件系统的属性信息

      dumpe2fs [-h] device

    fsck:用于文件系统检测工具

      因为进程意外中止或系统崩溃等原因导致操作系统非正常中止时,可能会造成文件损坏;此时,应该检测并修复文件系统;建议离线进行

      

    swap文件系统:

      Linux的交换分区必须是独立的文件系统;

        且文件系统的system id必须为82

      创建swap设备;mkswap命令

        mkswap [OPTIONS] device

          -L LABEL:指明卷标

          -f:强制

文件系统的使用:

  首先要挂载:mount 命令和umount命令

  挂载点:作为一个文件的系统的访问入口

    命令选项:

      -r:只读挂载

      -w:读写挂载

      -n:默认情况下设备挂载或者卸载的操作会同步更新至/etc/mtab文件中,-n用于禁止此特性;

      -t vfstype:      

硬盘的挂载顺序:指明要挂载的设备上的文件系统的类型;多数情况下可省略

    (1)创建分区。

        fdisk /dev/sba

    (2) 初始化分区,创建文件系统

        mkfs.ext4 /dev/sda1

        mkfs.ext4 /dev/sda2  

       (3)创建挂载点

        mkdir data_a data_b

    (4)挂载分区

        mount /dev/sda1  /data_1

        mount /dev/sda2  /data_2

 命令:du -sh:表述显示目录下所有文件的大小

   df -h:查看磁盘分区使用情况

posted @ 2020-07-24 18:47  附庸风雅  阅读(132)  评论(0)    收藏  举报