Linux的磁盘管理

    

1、查看磁盘或者目录的容量

    df:显示已挂载的磁盘信息,包括总容量、使用容量、剩余容量等等,默认单位KB

    -i:显示inode使用情况

    -h:以合适的单位显示(G、M、K)

    -m:以MB为单位显示

    -k:以KB为单位显示


    du:查看某个文件或者目录的大小,如果不加任何选项和参数则表示列出当前目录,包括子目录的大小,单位默认是KB

    -a:表示将全部文件都列出来,包括隐藏文件

    -s:仅显示总计

    -h:以合适的单位显示

    -b:以字节为单位显示

    -k:以KB为单位显示

    -m:以MB为单位显示

    

2、磁盘的分区和格式化(有时候分区完后,分区不存在,需要使用partx -a来更新以下分区)

    fdisk:查看磁盘的使用情况,也可以对磁盘分区

    -l:列出磁盘的分区表信息

    分区:fdisk 设备名

    m:帮助

    d:删除一个分区

    l:列出已有的分区类型

    n:增加一个新的分区

    p:打印分区表信息

    q:退出不保存

    w:写入分区表并退出

    t:更改分区的系统id号(分区类型)

有时候分完区后,在格式化时发现这个还没有分区,可以使用partprobe来刷新,也可以使用partx命令

    

    格式化分区:

我们可以查看Centos下支持哪些文件系统,/etc/filesystems

    有ext4,ext3,ext2,nodev proc(虚拟文件系统),nodev devpts,iso9669(光盘),vfat(就二十windows下的fat32),hfs,hfsplus

    格式化分区命令:mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4

    mke2fs是一个通用的命令,它可以格式化成ext2、ext3、ext4等等

    mke2fs -t [文件类型] [设备名称]

    -b:指定分区是的block大小,4k、2k、1k,默认是4k

    -i:指定inode的大小

    -N:指定inode的数量

    -c:在格式化之前先检测磁盘是否有问题

    -L:预设该分区的标签    (e2lable命令可以查看或者修改分区的标签:e2lable [设备] [标签])

    -j:指定ext3的格式,也可以-t指定

    -t:指定文件系统的格式,可以是ext4、ext3等等

    -m:指定给管理员保留区块的比例,预设为5%,一般格式化时默认bolck(5.00%)reserved for the super user    //意思就是给超级用户预留了一部分空间,作为特殊用途


3、挂载/卸载磁盘

    我们格式化磁盘后,需要挂载后才能使用,外部设备(U盘等)也需要挂载才能使用

mount:将设备或者文件系统挂载到指定的挂载点,才能访问到里面的数据

    -a:加载文件"/etc/fstab"中描述的所有文件系统

    -t:指定挂载的分区类型,默认不指定会默认识别

    -o:指定挂载的分区有那些特性,就是下面介绍到的第四列的mount参数

    -o loop:挂载镜像,或者光盘

    --bind:可以挂载目录

    

    /etc/fstab:这个文件里显示了系统启动时需要挂载的各个分区

        第一列:分区的标识,这里可以写lable(标签)、分区的UUID。也可以写分区名(/dev/sdb)

        第二列:挂载点

        第三列:分区的格式,文件系统

        第四列:mount的一些挂载参数,一般情况下直接写defaults即可

        第五列:这些数字表示是否被 dump备份,1表示备份,0表示不备份

        第六列:这些数字表示开机时是否自检磁盘,1和2都表示检测,0表示不检测,1比2的优先级高

也可以将挂载文件系统写到/etc/rc.d/rc.local里面,也可是实现开机自动挂载,和上面一样

    第四列的mount的挂载参数是什么意思呢?这里我们可以man mount查看帮助文档,找到一行字符为"FILESYSTEM INDEPENDENT MOUNT OPTIONS"的这一行,有很多参数

    async/sync:async表示磁盘和内存不同步,系统每隔一段时间会把内存数据写入到磁盘,而sync则会实时同步内存和磁盘的数据

    auto/noauto:表示开机自动挂载/不自动挂载

    default:表示按照大多数永久文件系统的默认值设置挂载定义,它包含了rw、suid、dev、exec、auto、nousr和sync。

    ro:表示按只读权限挂载

    rw:表示按可读可写权限挂载

    exec/noexec:表示允许/不允许可执行文件执行,如果把根分区挂载为noexec,会导致无法使用系统,甚至连mount命令也无法使用

    user/nouser:表示允许/不允许root以外的其他用户挂在分区

    suid/nosuid:表示允许/不允许分区有suid属性,一般设置为nosuid

    usrquota:表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度

    grquota:表示启动群组的磁盘配额模式。


umount:卸载已经挂载的设备

    -a:卸载掉/etc/mtab中记录的所有文件系统

    -l:强制卸载


有时候我们会遇到某个磁盘A它被挂载后的名字是/dev/sda,我把它拔了,换另一个端口,发现变成/dev/sdb了,这是为什么呢?

    因为如果该磁盘已被挂载使用,那么就会为它分配一个UUID,所以有可能换了端口你使用了其它就UUID号,那么也会显示成其它的磁盘名称

    blkid:显示块设备的属性,包括UUID、LABEL、文件系统类型