linux磁盘管理

Nov 14, 2016


一. 查看磁盘分区使用状况

    df  
        -l  只显示本地磁盘的(默认)  
        -a  显示所有文件系统的磁盘使用情况(包括0字节分区,往往0字节分区的数目还是比较多的)  
        
        -T  显示每个分区采用了什么文件系统  
        //  比如 /usr挂载点对应的分区 是ext4还是ext3  
        
        -h  以1024进制,用最合适的单位来表示大小  
        -H  以1000进制,用最合适的单位来表示大小  
        //  当不指定这两种参数的时候,默认显示的单位是KB  
        
        -t  指定只显示哪种文件系统(比如ext4)的分区  
        -x  指定不显示哪种文件系统(比如ext3)的分区  

二. 统计文件大小

    du  
        -b  以字节为单位  
        -k  以KB为单位  
        -m  以MB为单位  
        //  不指定单位的时候,默认是以KB为单位的  
        //  指定单位的时候,会可能有四舍五入的误差  
        
        -h  以1024进制,用最合适的单位来表示大小  
        -H  以1000进制,用最合适的单位来表示大小  
        //  注意,用 -b或-k或-m的时候,所有的文件都是一个单位  
        //  注意,用 -h或-H的时候,每个文件显示的单位可能是不一样的,它会对每个文件都按照最合适的单位来显示 
        
        -s  指定统计目标  
        //  不指定该参数的话,默认是统计当前目录  

三. 主分区 & 扩展分区 & 逻辑分区

    1. 主分区 + 扩展分区 的总数不能超过4个  
    2. 扩展分区要么没有,要么只有一个  
    3. 扩展分区不能直接存储数据,必须在扩展分区的内部创建逻辑分区,才能存储数据  
    
    sudo fdisk -l  
    
        查看磁盘情况,例如我的结果的一部分是 :  
        
        Device     Boot      Start        End    Sectors   Size Id Type  
        /dev/sda1             2048  127999999  127997952    61G 83 Linux  
        /dev/sda2  *     128000000  130000895    2000896   977M 83 Linux  
        /dev/sda3        130000896  138000383    7999488   3.8G 82 Linux swap / Solaris  
        /dev/sda4        138002430 1305999359 1167996930   557G  5 Extended  
        /dev/sda5        138002432  650000383  511997952 244.1G 83 Linux  
        /dev/sda6        650002432 1162000383  511997952 244.1G 83 Linux  
        /dev/sda7       1162002432 1290000383  127997952    61G 83 Linux  
        /dev/sda8       1290002432 1297999871    7997440   3.8G 83 Linux  
        /dev/sda9       1298001920 1305999359    7997440   3.8G 83 Linux  
        
        // 可见,这是第一块磁盘(sda)的9个分区的情况  
        // 其中,sda1~sda4 是主分区&扩展分区  
        // 其中,sda5~sda9 是逻辑分区  
        // sda1,sda2,sda3是主分区, sda4是扩展分区, 且sda2是boot启动区  
        
        // fdisk -l 与 df -Th 命令结合着看 :  
        //     就可以知道我有哪些分区  
        //     每个分区是主分区,还是扩展分区,还是逻辑分区  
        //     每个分区对应哪个目录(即挂载点),各自的大小是多少  

四. 服务器添加新磁盘

    目标 : 加入 /dev/sdb 这块新硬盘  
    
    步骤 :  
    
    df -T -h   
        // 查看当前系统中有哪些分区,以及各分区的文件系统的类型  
        // 从返回结果可知当前的 /目录 的文件系统类型是ext4  
    
    sudo mkfs.ext4 /dev/sdb  
        // 把/dev/sdb这块硬盘格式化为ext4格式  
        // (我要在 /mydata 挂载硬盘,所以格式要和 /目录 保持一致)  
    
    sudo fdisk /dev/sdb  
        // 输入 m 查看帮助     
        // 我们先来创建一个主分区 :  
            输入 n 新建分区  
            输入 p 表明要创建的是主分区  
            输入 这个分区的编号是(我这里输入1)  
                (注意,主分区和扩展分区加起来最多4个,且编号为1~4)  
            输入 这个新分区的起始扇区位置(直接回车,使用默认值就行了)  
            输入 这个新分区的结束扇区位置
                (键入数值,该数值减去刚才的起始位置就是你这个新分区的容量)  
                (我们这里输入 +20G,表示从该分区的起始位置往后20G才是终结位置,即给该分区分配20G的空间)  
                (在这之后,还可以继续用 n p 来创建新的主分区)  
        // 我们再来创建一个扩展分区  
            输入 n 继续创建下一个分区  
            输入 e 创建一个扩展分区  
            输入 这个扩展分区的编号(我这里输入2)  
            输入 这个扩展分区的起始扇区位置(我这里输入系统提示的默认值)  
            输入 这个扩展分区的结束扇区位置(我这里输入系统提示的默认值)  
        // 我们再来创建逻辑分区(因为扩展分区并不能直接存储数据,需要在它内部创建逻辑分区)  
            输入 n 创建分区(可以看到现在只能创建主分区和逻辑分区了,因为扩展分区最多只有一个,且已经在上一步中被创建过了)  
            输入 l 创建一个逻辑分区  \
            输入 这个逻辑分区的编号(从5开始,因为1~4是给主分区和扩展分区用的)  
            输入 这个逻辑分区的起始扇区位置  
            输入 这个逻辑分区的终止扇区位置     
        // 输入 p 查看当前这块/dev/sdb磁盘的分区计划  
        // 最后输入 w 把上述制定的分区计划写入分区表  
            (注意,fdisk工具,只能给硬盘做MBR模式的分区)   
        // 例如,最后,我为/dev/sdb这块新硬盘的分区方案为 :  
            /dev/sdb1    主分区             编号=1    大小20G  
            /dev/sdb2    扩展分区            编号=2    大小40G  
            /dev/sdb5    逻辑分区(从属于扩展分区)   编号=5    大小10G  
            /dev/sdb6    逻辑分区(从属于扩展分区)   编号=6    大小30G  
    
    mkdir /mydata  
    mkdir /mydata/pA  
    mkdir /mydata/pB  
    mkdir /mydata/pC  
        // 新建空目录用来挂载硬盘  
        // 其中, /mydata/pA 作为 /dev/sdb1 的挂载点  
        // 其中, /mydata/pB 作为 /dev/sdb5 的挂载点  
        // 其中, /mydata/pC 作为 /dev/sdb6 的挂载点  
        // 注意, 扩展分区不需要挂载点,因为扩展分区并不存储数据,而是它下面的若干逻辑分区需要各自的挂载点  
    
    sudo mount -t ext4 /dev/sdb1 /mydata/pA  
    sudo mount -t ext4 /dev/sdb5 /mydata/pB  
    sudo mount -t ext4 /dev/sdb6 /mydata/pC  
        // 进行挂载
        // 注意,mount命令是临时生效,如果想要永久生效,需要编辑 /etc/fstab  
    
    sudo vi /etc/fstab  
        // 添加 :  
        // /dev/sdb1    /mydata/pA    ext4    defaults    0    1  
        // /dev/sdb5    /mydata/pB    ext4    defaults    0    1  
        // /dev/sdb6    /mydata/pC    ext4    defaults    0    1  
    
    sudo shutdown -r now  
        // 重启  
    
    sudo fdisk -l  
        // 再次查看磁盘情况(有/dev/sdb1之类的就说明成功了)  

五. 如何给硬盘添加swap分区

    dd if=/dev/zero of=/var/swap bs=1M count=256
    mkswap /var/swap
    swapon /var/swap
        // 以 root 身份,创建swap分区,大小是256M,并挂载在 /var/swap 目录下
        
    vi /etc/fstab
        // 添加一行 /var/swap     swap    swap    defaults    0   0
        
    vi /etc/rc.d/rc.local
        // 将其中的 swapoff -a 注释掉
        
    shutdown -r now
        // 重启,使得swap分区生效