首页 > 代码库 > linux 文件系统及磁盘管理

linux 文件系统及磁盘管理

    一个新的磁盘盘需要经过分区、格式化(创建文件系统),挂载之后才能正常使用。关于磁盘的分区表有两种格式:MBR(Master Boot Record)和GPT(GUID Partition Table)

    MBR: 

    也称为主引导扇区,是计算机开机后访问硬盘时必须读取的首个扇区,也就是0柱面0磁头1扇区,MBR由bootload(446字节)、分区表(64字节)、MBR结束标志(2字节)共512字节组成。最大支持2TB的分区。MBR格式的分区表支持3个主分区和1个扩展分区。


    GPT:

    为了支持容量大于2TB的分区,引入了GPT分区表格式,最大支持18EB

    

  1. fdisk : 磁盘分区工具

      fdisk <disk>

        d: 删除一个分区

        l: 列出系统支持的分区类型

        m: 打印帮助

        n: 增加一个新分区 

        p: 打印分区表

        q: 不保存退出

        w: 保存退出

        t: 改变分区ID

    

2.  partprobe(centos 5),kpartx,partx(centos 6):

        partprobe <disk> :    通知OS系统磁盘分区表改变

        partx -a <disk> :       增加磁盘分区或读取所有磁盘分区   

        partx -l <disk>:         列出磁盘所有分区 

        kpartx -af <disk> :    强制增加磁盘分区映射

        kpartx -l <disk> :      列出增加的磁盘分区映射   


3.  mke2fs , mkfs :   格式化磁盘(创建文件系统ext2,ext3,ext4)

        mke2fs的配置文件/etc/mke2fs.conf,使用用此命令加载的默认参数。

        mke2fs = mkfs -t ext2 = mkfs.ext2

        mke2fs:

                -t :  文件系统类型(ext2  |  ext3  |  ext4 )

                -j :  相当于 -t ext3

                -L Label: 设置卷标

                -b ( 1024 | 2048 | 4096): 指定块大小

                -i num: num个字节预留一个inode

                -N num:  直接指定预留多少个inode

                -n:    不创建文件系统,但是显示创建过程中执行的操作

                -I num:    Inode大小

                -m num:  预留管理员的空间的百分比,默认为5

                -U UUID:   使用自定义的UUID

                -c:    在创建文件系统之前,检查磁盘上坏的block

                -F:    强制创建文件系统

                -g:    自定义每个block-group有多少个blocks

                -G:    自定义block-group的数量

                -O [^]feature:    指定分区特性

                        feature:(默认sparse_super,filetype,resize_inode,dir_index,ext_attr)

                            dir_index:    使用b-trees hash加速大目录查询速度。

                            extend:    加速大文件系统访问(large file)

                            filetype:    存储文件类型信息

                            flex_bg:    允许block-group信息放置在block的任意位置

                            has_journal:    创建ext3日志(同-j)

                            journal_dev:    创建外部的ext3日志替代ext2文件系统

                            large_file:    文件系统支持大于2G的文件

                            resize_inode:    为block-group增长提供预留空间

                            sparse_super:    创建包含super-block备份的文件系统

                            uninit_bg:    加速文件系统创建(仅在ext4下支持)

                -q:    用于在脚本中静默执行格式化


      # mke2fs /dev/sdb1

    mke2fs 1.41.12 (17-May-2010)

    warning: 252 blocks unused.


    Filesystem label=

    OS type: Linux

    Block size=4096 (log=2)

    Fragment size=4096 (log=2)

    Stride=0 blocks, Stripe width=0 blocks

    328320 inodes, 1310720 blocks

    65548 blocks (5.00%) reserved for the super user

    First data block=0

    Maximum filesystem blocks=1342177280

    40 block groups

    32768 blocks per group, 32768 fragments per group

    8208 inodes per group

    Superblock backups stored on blocks: 

            32768, 98304, 163840, 229376, 294912, 819200, 884736

    

    Writing inode tables: done                            

    Writing superblocks and filesystem accounting information: done

    

    This filesystem will be automatically checked every 39 mounts or

    180 days, whichever comes first.  Use tune2fs -c or -i to override.



                

4.  e2label

        e2label  <partition>: 查看卷标

        e2label  <partition> Label:  设置定卷标

        # e2label /dev/sdb1 data


5.  blkid 

        blkid <partition>:    查看分区类型和UUID

    # blkid /dev/sdb1

    /dev/sdb1: UUID="85ea6a34-0de2-47e8-83ee-589f79adb88a" TYPE="ext2" 

    


6.  dumpe2fs : 查看文件系统(ext2 , ext3 , ext4)信息

        -h:    仅显示super-block信息 

      #dumpe2fs -h /dev/sdb1

    dumpe2fs 1.41.12 (17-May-2010)

    Usage: dumpe2fs [-bfhixV] [-o superblock=<num>] [-o blocksize=<num>] device

    [root@test ~]# dumpe2fs -h /dev/sdb1

    dumpe2fs 1.41.12 (17-May-2010)

    Filesystem volume name:   <none>

    Last mounted on:          <not available>

    Filesystem UUID:          a9771ea8-9719-4ecf-a6f2-c8b417a4878f

    Filesystem magic number:  0xEF53

    Filesystem revision #:    1 (dynamic)

    Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super     large_file

    Filesystem flags:         signed_directory_hash 

    Default mount options:    (none)

    Filesystem state:         clean

    Errors behavior:          Continue

    Filesystem OS type:       Linux

    Inode count:              328320

    Block count:              1310720

    Reserved block count:     65548

    Free blocks:              1287546

    Free inodes:              328309

    First block:              0

    Block size:               4096

    Fragment size:            4096

    Reserved GDT blocks:      319

    Blocks per group:         32768

    Fragments per group:      32768

    Inodes per group:         8208

    Inode blocks per group:   513

    Filesystem created:       Fri Aug 22 13:35:10 2014

    Last mount time:          n/a

    Last write time:          Fri Aug 22 13:35:11 2014

    Mount count:              0

    Maximum mount count:      20

    Last checked:             Fri Aug 22 13:35:10 2014

    Check interval:           15552000 (6 months)

    Next check after:         Wed Feb 18 13:35:10 2015

    Reserved blocks uid:      0 (user root)

    Reserved blocks gid:      0 (group root)

    First inode:              11

    Inode size:               256

    Required extra isize:     28

    Desired extra isize:      28

    Default directory hash:   half_md4

    Directory Hash Seed:      a46fce3a-c1f4-417c-941b-c23c01a3f555


7. tune2fs:调整文件系统参数(针对ext2,ext3,ext4)

        -f:    强制tune2fs完成操作,即使有错误出现。

        -l:    列出super-block信息

        -L label:    设定卷标

        -m:    预留管理员的空间百分比,默认为5%

        -j:    如果原来的文件系统类型为ext2,可以通过-j提升为ext3

        -o [^]mount-options[...]: 设定其默认挂载选项

            mount-options:(tune2fs支持的mout-options)

                debug:        对文件系统启用debug code.

                bsdgroups:    

                user_xattr:   启用用户定义的扩展属性

                acl:          启用POSIX访问控制列表

                uid16:        禁用32位UID和GID,用于兼容老的内核 

                journal_data:  在启用了日志的分区上,元数据写入日志区优先于数据写入文件系统

                journal_data_ordered: 在启用了日志的分区上,数据写入文件系统优先于元写                                          入日志区

                journal_data_writeback:   在启用了日志的分区上,当元数据写入日志区后,数据                                          可能被写入文件系统,it may allow old data to                                            appear in  files after a crash and journal recovery

                nobarrier:    仅ext4分区支持

                block_validity:  读写文件系统时,额外的检查被执行,仅ext4分区支持

                discard:  仅ext4分区支持

                nodelalloc:   仅ext4分区支持

        -O [^]feature[...]:       调整分区特性,同mke2fs -O选项


8. fsck: 用于检查和修复linux文件系统

    -t:  要检查的文件系统类型

    -A: 尝试检查所有/etc/fstab文件中所有文件系统

    -C:  显示检查和修复进度条

    -M:  不检查已挂载的文件系统

    -N: 不执行,只显示将要做什么

    -P:  当使用了-A时,同时检查根文件系统和其它文件系统

    -R: 当使用了-A时,跳过根文件系统检查

    -a:  自动修复文件系统

    -r:  交互式修复文件系统

    

9. e2fsck: 用于检查ext2,ext3,ext4文件系统

     -f:    强制检查

     -F:    在开始检查之前,刷新分区的buffer cache

     -y:    自动回答yes


10. mount: 挂载文件系统

    -r:    只读挂载

    -w:    读写挂载

    -L:   挂载有些卷标的分区

    -u:    挂载有些uuid的分区

    -t:    挂载的文件系统类型

    -a:    自动挂载所有

    -o options: 指定挂载选项

        async: 异步I/O

        sync:  同步I/O

        atime/noatime: 更新访问时间

        auto/noauto: 可以使用-a选项

        defaults: 默认选项包括(rw,suid,dev,exec,auto,nouser,aysnc,relatime)

        dev/nodev: 允许使用字符和块设备

        diratime/nodiratime: 更新目录inode访问次数

        dirsync:

        exec/noexec: 允许执行二进制文件

        group:   允许普通用户挂载文件系统,如果这个用户属于group

        user/nouser: 允许普通用户挂载文件系统,此选项隐含(noexec,nodev,nosuid)

        users: 允许每个用户挂载文件系统,此选项隐含(noexec,nodev,nosuid)

        iversion/noiversion: 每次inode被修改,i_version域被增加

        mand/nomand: 允许强制锁

        _netdev: 阻止系统尝试挂载网络文件系统,直到系统的网络准备就绪

        nofail: 如果设备不存在,不报告错误

        relatime/norelatime: 类似于atime/noatime

        strictatime/nostrictatime:

        suid/nosuid: 允许设置suid sgid

        owner:  如果用户是设备的owner,允许他挂载文件系统

        remount: 重新挂载文件系统

        ro: 只读挂载

        _rnewdev:和_netdev一样,除了在执行rc.sysinit时通过“fsck -a"检查文件系统

        rw: 读写挂载

    mount执行后的退出状态码:

        0: success

        1: incorrect invocation or permission

        2: system error(out of memory,cannot fork,no more loop devices)

        4: internal mount bug

        8: user interrupt

        16:problems writing or locking /etc/mtab

        32:mount failure

        64:some mount succeeded

    

    umount /dev/sdb1卸载文件系统

    umount /media 

        

11. fuser: 查看占用文件或socket的进程:

    # fuser -v /media

                         USER        PID ACCESS COMMAND

    /media:              root      13156 ..c.. bash

    

    ACCESS列:表示访问此进程的类型

        c: 当前目录

        e: 可执行程序正在执行

        f: 打开文件

        F: 打开文件写模式

        r: root目录

        m: mmap‘ed file or shared library

    # fuser -km /media   杀死占用/media的进程


12. df: 查看文件系统空间使用率

    -h: 以K,M,G形式显示

    -i: 显示inode使用率

    -P:以POSIX格式显示

    # df -h 

    Filesystem                  Size  Used Avail Use% Mounted on

    /dev/mapper/vg_test-lv_root  36G  1.8G   32G   6% /

                                 36G  1.8G   32G   6% /

    tmpfs                       939M     0  939M   0% /dev/shm

    /dev/sda1                   485M   37M  423M   9% /boot

    /dev/sdb1                   5.0G   10M  4.7G   1% /media


13. du: 评估文件文件占用的磁盘空间

    # du -hs /root

    55M     /var


14. 开机自动挂载文件/etc/fstab

    # /etc/fstab

    # Created by anaconda on Wed Jul 23 15:22:36 2014

    #

    # Accessible filesystems, by reference, are maintained under ‘/dev/disk‘

    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

    #

    /dev/mapper/vg_test-lv_root /                       ext4    defaults        1 1

    UUID=590c416b-9d27-4fe1-af01-fc802a7a200c /boot     ext4    defaults        1 2

    /dev/mapper/vg_test-lv_swap swap                    swap    defaults        0 0

    tmpfs                       /dev/shm                tmpfs   defaults        0 0

    devpts                      /dev/pts                devpts  gid=5,mode=620  0 0

    sysfs                       /sys                    sysfs   defaults        0 0

    proc                        /proc                   proc    defaults        0 0

    

    第一列:要挂载的设备(设备文件,卷标,UUID)

    第二列:挂载点

    第三列:文件系统类型

    第四列:挂载选项

    第五列:转储频率

            0:从不备份

            1:每日备份

            2:每隔一日备份

    第六列:自检次序

            0:不自检

            1: 首先自检,通常只被/使用

            2:/自检之后自检

    

    

    

本文出自 “虎虎生威” 博客,请务必保留此出处http://tobeone.blog.51cto.com/817917/1543546

linux 文件系统及磁盘管理