一个新的磁盘盘需要经过分区、格式化(创建文件系统),挂载之后才能正常使用。关于磁盘的分区表有两种格式: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:    自动挂载所有

    -n:    不更新/etc/mtab文件

    --bind dir1 dir2: 绑定dir1到dir2,可以从dir2访问dir1的文件

    -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:/自检之后自检

    

15.  dd: convert and copy a file

    dd if=input_file of=output_file

    dd if=input_file of=output_file bs=#[b|k|m|g] count=#


    dd if=/dev/cdrom of=/tmp/centos.iso

    制作ISO文件


    dd if=/dev/sdb of=/tmp/outfile bs=512 count=1

    复制整个硬盘

    

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

    删除磁盘前500个字节


16.  ln: 创建链接文件

        硬链接:

            不能跨分区

            不能对目录创建硬链接

            会改变文件被链接的次数

            与原文件指向同一个inode

        符号链接:

            可以跨分区

            可以和原文件不同一个inode

            可以对目录创建符号链接

            不会改变文件的被链接次数


17.  压缩工具: zip/unzip , gzip/gunzip , bzip2/bunzip2 , xz/unxz

     zip: zip用于压缩文件、节省磁盘空间、把目录打包成.zip文件;对于文本文件压缩比例为2:1到3:1,zip默认使用的压缩算法是deflation

     命令格式:

     zip options archive inpath inpath ...

     archive:压缩之后的目的文件,格式为xxx.zip

     inpath: 目录或是文件路径

     options:

        -r: 递归查找子目录

        -u: 更新archive中已存在的文件,增加新的文件

        -f: 更新archive中已存在的文件,但是不增加新文件

        -d: 删除已存在的archive,创建新的archive文件

        -U: 创建新的archive文件,结合-O选项,复制老的archive文件作为副本

        -z: 增加备注信息

        

     zip结合管道使用:

        find /root/ -name "*.sh" -print | zip -r bash.zip -@ 

        查找/root目录下所有以sh为后缀的文件,归档为bash.zip文件(-@代表inpath)


        zip -r - . | ls -l

        -作为代替archive文件用于将archive文件写到标准输出stdout


        tar cf - . | zip backup -

        -也可以作为inpath,tar备份当前目录,把输出结果传递给zip作归档


        tar cf - . | zip | dd of=/dev/nrst0 obs=16k

        等同于

        tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k

        tar归档当前目录,zip使用tar归档之的文件作为输入,然后把压缩结果写入到磁带


     unzip :解压缩zip格式的文件

        -d: 指定解缩目录

        -l: 列出archive文件中的所有文件清单

        -v: 类似于-l,显示更详细的信息

        -f: 仅解压比磁盘上的文件更新的文件

        -u: 类似于-f,并创建磁盘上没有文件

        -p: 解压文件作为标准输出stdout

        -t: 解压缩文件测试

        -z: 查看压缩文件备注信息


     gzip:压缩文件之后会删除原文件,压缩后的格式为xx.gz

        -c: 压缩文件作为标准输出stdout,可以使用重定向保留原文件

        -d: 相当于gunzip,zcat解压

        -f: 强制压缩和解压

        -l: 查看压缩文件列表

        -q: 静默模式,常用于脚本

        -t: 检查压缩文件的完整性

        -#: 1-9指定压缩比


     bzip2: 压缩文件之后会删除原来的文件,压缩后的格式为xx.bz2

        -c: 压缩或解压缩到标准输出stdout

        -d: 相当于bunzip2,bzcat

        -t: 检查压缩文件的完整性

        -f: 强制覆盖输出文件

        -k:压缩后保留原文件

        -s: 压缩、解压缩、检查完整性时减少内存使用率

        

     xz: 

        -z: 缺省选项,压缩

        -d: 相当于unxz,xzcat解压

        -t: 检查压缩文件完整性

        -l: 查看压缩文件列表

        -k: 压缩后保留原文件

        -c: 压缩或解压到标准输出stdout

        -#: 0-9指定压缩比例


18. 归档工具: tar

    tar命令格式:

    tar [options] [file]

        options:

            -c: 创建归档文件

            -x: 提取归档文件

            -t: 列出归档文件内容

            -C: 改变目录

            -f: 指定归档文件名

            -j: 使用bzip2

            -J:使用xz

            -z: 使用gzip

    

     tar -jcf file.tar.bz2 file 

     把文件file归档成bz2格式

     tar -jxf file.tar.bz2

     展开bz2文件


     tar -Jcf file.tar.xz file

     把文件file归档成xz格式

     tar -Jxf file.tar.xz

     展开xz文件


     tar -zcf file.tar.gz file

     把文件file归档成gz格式

     tar -zxf file.tar.gz

     展开gz文件