Linux学习之二十四(硬盘管理及文件系统管理:fdisk/mke2fs/tune2fs)

来源:互联网 发布:快典网藏头诗软件 编辑:程序博客网 时间:2024/06/05 05:42
磁盘管理:
    机械式硬盘:U盘、光盘、软盘、硬盘、磁带
    
    低级格式化:硬盘出厂所做
    Partition:分区
        分区是为了文件系统
    MBR;Master Boot Record主引导记录(0磁道0扇区的512byte)
        Main Boot Record
        446byte:BootLooder,引导记录
        64byte:只能标示4个分区
            16byte:标示一个分区
        2byte:Magic Number魔数,用来标记MBR是否有效
    1、创建链接:
        ln [-s -v] SRC(源文件)  DEST(链接文件)
            -s:创建符号链接
            -sv:创建符号链接并显示源文件和链接文件名称
            (1)硬链接:
                1、只能对文件创建,不能对目录进行链接;
                2、不能跨文件系统;
                3、创建硬链接会增加文件被链接的次数;
                4、文件ID号相同
                例:[root@Ourlab backup]# ln abc test/abc2
                    [root@Ourlab backup]# ls -l
                    总计 60
                    -rw-r--r--  1 root root     0 05-02 23:33 a
                    -rwxr-xr-x+ 2 root root 26815 05-07 23:14 abc
                    [root@Ourlab backup]# ls -i
                    162083 a  162088 abc  162084 b  162085 c  162082 inittab  162087 test
                    [root@Ourlab backup]# ls -i ./test
                    162088 abc2

            (2)符号链接:
                1、可应用于目录;
                2、可以跨文件系统;
                3、不会增加被链接文件的链接次数;
                4、其大小为指定的路径所包含的字符个数;
                例:[root@Ourlab backup]# ls -li
                    总计 60
                    162083 -rw-r--r--  1 root root     0 05-02 23:33 a
                    162088 -rwxr-xr-x  1 root root 26815 05-07 23:38 abc
                    [root@Ourlab backup]# ls -li ./test
                    总计 4
                    162086 lrwxrwxrwx  1 root root 11 05-07 23:47 abc2 -> /backup/abc

    2、du:显示目录下可以属主具备执行权限的每个文件的大小;
        例:[root@Ourlab ~]# du /backup
            12    /backup/test
            72    /backup
        -s:显示目录整体大小;
        -h:单位换算
    3、-df:显示整个磁盘分区
        例:[root@Ourlab ~]# df
            文件系统               1K-块        已用     可用 已用% 挂载点
            /dev/sda2              9920624   2848284   6560272  31% /
            /dev/sda3              2972268     70800   2748048   3% /home
            /dev/sda1               988088     23636    913448   3% /boot
            tmpfs                   257416         0    257416   0% /dev/shm
        -h:单位换算
            例:[root@Ourlab ~]# df -h
                文件系统              容量  已用 可用 已用% 挂载点
                /dev/sda2             9.5G  2.8G  6.3G  31% /
                /dev/sda3             2.9G   70M  2.7G   3% /home
                /dev/sda1             965M   24M  893M   3% /boot
                tmpfs                 252M     0  252M   0% /dev/shm
        -i:显示每个磁盘分区ID
        -P:不进行换行显示
    
    4、设备文件:
        b:按块为单位,随机访问的设备,如:硬盘;
        c:按字符为单位,线性设备,如:键盘;
    5、/dev
        主设备号(major number)
            标识设备类型
        次设备号(minor number)
            标识同一种类型中不同设备
    6、mknod:创建块或字符特殊文件
        mknod [OPTION]... NAME TYPE [MAJOR MINOR]
        例:[root@Ourlab ~]# mknod mydev c 66 0
            [root@Ourlab ~]# ls -l
            crw-r--r-- 1 root root 66, 0 05-08 22:16 mydev
        -m:指定文件权限
            例:[root@Ourlab ~]# mknod -m 640 mydev2 c 66 1
                [root@Ourlab ~]# ls -l
                crw-r----- 1 root root 66, 1 05-08 22:18 mydev2
    7、硬盘设备的设备文件名:
        IDE,ATA:以hd开头
        SATA:以sd开头
        SCSI:以sd开头
        USB:以sd开头
        同一种类型下的硬盘用a,b,c...来区别同一种类型下的不同设备
        IDE:
            第一个IDE口:主、从
                /dev/hda, /dev/hdb
            第二个IDE口:主、从
                /dev/hdc, /dev/hdd
    8、fdisk:查看当前系识别了几块硬盘:
        fdisk:Linux分区表操纵器
        fdisk -l [/dev/to/some_device_file]
            例:查看系统上所有磁盘分区
                [root@Ourlab ~]# fdisk -l
                Disk /dev/sda: 128.8 GB, 128849018880 bytes
                255 heads, 63 sectors/track, 15665 cylinders
                Units = cylinders of 16065 * 512 = 8225280 bytes

                    Device    Boot      Start         End      Blocks   Id  System
                    /dev/sda1   *           1         127     1020096   83  Linux
                    /dev/sda2             128        1402    10241437+  83  Linux
                    /dev/sda3            1403        1784     3068415   83  Linux
                    /dev/sda4            1785       15665   111499132+   5  Extended
                    /dev/sda5            1785        1911     1020096   82  Linux swap / Solaris
            例:查看指定分区
                [root@Ourlab ~]# fdisk -l /dev/sda1
                Disk /dev/sda1: 1044 MB, 1044578304 bytes
                255 heads, 63 sectors/track, 126 cylinders
                Units = cylinders of 16065 * 512 = 8225280 bytes
                Disk /dev/sda1 doesn't contain a valid partition table
    9、管理磁盘分区:
        (1)fdisk /dev/sda
            p:显示当前硬件的分区,包括没保存的改动
            n:创建新分区
                e:扩展分区
                p:主分区
            d:删除一个分区
            w:保存退出
            q:不保存退出
            t:修改分区类型
                L:显示所支持的所有类型;#与t搭配使用#
            l:显示所支持的所有类型
            
        (2)查看当前内核上识别了哪些分区:
            cat /proc/partitions
        (3)partprobe:通知内核重读硬盘分区表    
        
    10、文件系统管理:
        (1)cat /proc/filesystems:查看当前内核所支持文件系统类型
        (2)mkfs:make file system
            -t FSTYPE 指定分区类型
                mkfs -t ext2 = mkfs.ext2
                    例:[root@Ourlab ~]# mkfs -t ext2 /dev/sda5
                mkfs -t ext3 = mkfs.ext3
    11、专门管理ext系列文件;
        (1)mke2fs:默认创建ext2类型文件系统
                例:[root@Ourlab ~]# mke2fs /dev/sda5
            -j:创建ext3类型文件系统
                例:[root@Ourlab ~]# mke2fs -j /dev/sda5
            -b BLOCK_SIZE:指定块大小,默认为4096,可用取值1024、2048或4096;
                例:[root@Ourlab ~]# mke2fs -b 2048 /dev/sda5
            -L LABEL:指定分区卷标;
                例:[root@Ourlab ~]# mke2fs -L MYDATA /dev/sda5
            -m #:指定预留给超级用户的块数百分比
                例:[root@Ourlab ~]# mke2fs -m 2 /dev/sda5
            -i #:用于指定为多少字节的空间创建一个inode,默认为8192:这里给出的数值应该为块大小的2^n倍;
                例:[root@Ourlab ~]# mke2fs -i 4096 /dev/sda5
            -N:指定inode个数;
            -F:强制创建文件系统;
            -E:指定额外的文件系统属性;
    12、blkid:查询或查看磁盘设备的相关属性
        UUID
        TYPE
        LABEL
        例:[root@Ourlab ~]# blkid /dev/sda5
            /dev/sda5: UUID="1211aeb1-710b-4c33-8c6f-28b41bc74fbd" TYPE="ext2"
    13、e2label:用于查看或定义卷标
        e2label 设备文件 卷标:设定卷标
            例:[root@Ourlab ~]# e2label /dev/sda5 HELLODATA
                [root@Ourlab ~]# e2label /dev/sda5
                HELLODATA
    14、tune2fs:调整文件系统的相关属性
        -j: 不损害原有数据,将ext2升级为ext3;
            例:[root@Ourlab ~]# tune2fs -j /dev/sda5
        -L LABEL:设定或修改卷标;
            例:[root@Ourlab ~]# tune2fs -L MYDATA /dev/sda5
        -m #:调整预留百分比;
            例:[root@Ourlab ~]# tune2fs -m 5 /dev/sda5
        -r #:指定预留块数;
            例:
        -o:设定默认挂载选项;
            acl:指定挂载的选项具备acl
        -c #:指定挂载次数达到#次后进行自检,0或1表示关闭此功能;
        -i #:每挂载使用多少天后进行自检,0或-1表示关闭此功能;
        -l:显示超级块中的信息;
    13、dumpe2fs:显示文件属性信息
        -h:只显示超级块中的信息
    14、fsck:检查并修复Linux文件系统
        -t FSTYPE:指定文件系统类型
        -a:自动修复
    15、e2fsck:专用于修复ext2、ext3文件系统
        -f:强制检查;
        -p:自动修复;
            例:[root@Ourlab ~]# e2fsck -f -p /dev/sda5
        
    16、挂载:将新的文件系统关联至当前根文件系统
    17、卸载:将某文件系统与当前根文件系统的关联关系予以移除;

        (1)mount:挂载
            mount 设备[卷标或UUID] 挂载点
                1)设备:
                    设备文件:/dev/sda5
                        例:[root@Ourlab ~]# mkdir /mnt/test
                            [root@Ourlab ~]# mount /dev/sda5 /mnt/test
                            [root@Ourlab ~]# cd /mnt/test
                            [root@Ourlab test]# ls
                            lost+found
                    卷标:LABEL=""
                    UUID: UUID=""
                2)挂载点:目录
                要求:
                    1、此目录没有被其它进程使用;
                    2、目录得事先存在;
                    3、目录中的原有的文件将会暂时隐藏;
        (2)mount:显示当前系统已经挂载的设备及挂载点;
        (3)mount [options] [-o options] DEVICE MOUNT_POINT
            -a:表示挂载/etc/fstab文件中定义的所有文件系统
            -n:默认情况下,mount命令每挂载一个设备,都会把挂载的设备信息保存至/etc/mtab文件;
               使用-n选项意味着挂载设备时,不把信息写入此文件;
                例:[root@Ourlab ~]# mount -n /dev/sda5 /mnt/test
            -t FSTYPE:指定正则挂载设备上的文件系统的类型,不使用此选项时,mount会调用blkid命令获取对应文件系统的类型;
            -r:只读挂载,挂载光盘时常用此选项;
            -w:读写挂载
            
            -o:指定额外的挂载选项,也即指定文件系统启用的属性
                remount:重新挂载当前文件系统
                -ro:挂载为只读
                    例:[root@Ourlab ~]# mount -o remount,ro /dev/sda5
                -rw:挂载为读写
                    
    18、挂载完成后,要通过挂载点访问对应文件系统上的文件:

    19、umount:卸载某文件系统
        用法:umount 设备
                例:[root@Ourlab ~]# umount /dev/sda5
              umount 挂载点
                例:[root@Ourlab ~]# umount /mnt/test
              
        卸载注意事项:
            1、挂载的设备没有进程使用;    
    20、cat /proc/filesystems:查看当前内核所支持文件系统类型    

课后练习:
1、创建一个2G的分区/dev/sda8,文件系统为ext2,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的8%;挂载至/backup目录,
要求使用卷标进行挂载,且在挂载时启动此文件系统上的acl功能;
    # mke2fs -L DATA -b 1024 -m 8  /dev/sda8

    # mount -o acl LABEL=DATA /backup
    或
    # tune2fs -o acl /dev/sda7
    # mount LABEL=DATA /backup            
2、将此文件系统的超级块中的信息中包含了block和inode的行保存至/tmp/partition.txt中;                
    [root@Ourlab ~]# tune2fs -l /dev/sda8 | egrep -i "block|inode" >> /tmp/partition.txt
3、复制/etc目录中的所有文件至此文件系统;而后调整此文件系统类型为ext3,要求不能损坏已经复制而来的文件;
    [root@Ourlab ~]# cp -r /etc/* ./backup
    [root@Ourlab ~]# tune2fs -j /dev/sda8
4、调整其预留百分比为3%;
    [root@Ourlab ~]# tune2fs -m 3 /dev/sda8
5、以重新挂载的方式挂载此文件系统为不更新访问时间戳,并验正其效果;
    [root@Ourlab ~]# stat ./backup
    [root@Ourlab ~]# mount -o remount,noatime /backup
6、对此文件系统强行做一次检测;
    [root@Ourlab ~]# e2fsck -f /dev/sda8
7、删除复制而来的所有文件,并将此文件系统重新挂载为同步(sync);而后再次复制/etc目录中的所有文件至此挂载点,体验其性能变化;
    # rm -rf ./backup/*
    # mount -o remount,sync ./backup
    # cp -r /etc/* ./backup

1、swap分区(交换分区)

    (1)虚拟内存
        free:查看内存空间
            -m:单位换算
    (2)fdisk命令中,调整分区类型为82(即swap)

    (3)创建交换分区:
        mkswap /dev/sda#
            -L LABEL:指定卷标名
            
    (4)挂载交换分区:
        swapon /dev/sda# :启用交换分区
            -a:启用所有的定义在/etc/fstab文件中的交换设备
        swapoff /dev/sda# :关闭交换分区
            例:利用磁盘剩余的空间,创建swap分区
            [root@Ourlab ~]# fdisk /dev/sda    /需要调整分区类型为82(即swap)/
            [root@Ourlab ~]# mkswap /dev/sda8
            [root@Ourlab ~]# swapon /dev/sda8
    
    (5)回环设备:
        loopback,使用软件来模拟实现硬件
        
    (6)创建一个镜像文件,120G
    
        1)dd命令:
            if=数据来源
            of=数据存储目标
            bs=数据块大小
            count=bs数
                例1:#dd if=/dev/sda of=/mnt/usb/mbr.backup bs=512 count=1
                例2:利用已有的分区空间,增加swap分区空间;
                [root@Ourlab ~]# dd if=/dev/zero of=/var/swapfile bs=1M count=512
                [root@Ourlab ~]# mkswap /var/swapfile
                [root@Ourlab ~]# swapon /var/swapfile
                [root@Ourlab ~]# free -m
            seek=#:创建数据文件时,跳过的空间大小
                例:[root@Ourlab ~]# dd if=/dev/zero of=/var/swapfile2 seek=1023 bs=1M count=1
                    1+0 records in
                    1+0 records out
                    1048576 bytes (1.0 MB) copied, 0.00565885 seconds, 185 MB/s
                    [root@Ourlab ~]# du -sh /var/swapfile2   /查看真实空间大小为:1.1M/                    
                    1.1M    /var/swapfile2
                    [root@Ourlab ~]# ls -lh /var/swapfile2    /虚假空间:前1023M跳过/
                    -rw-r--r-- 1 root root 1.0G 05-20 22:47 /var/swapfile2
            
    (7)mount命令,可以挂载iso镜像;
        mount  DEVICE MOUNT_POINT
            -o loop :挂载本地回环设备
                例:#mount -o loop /root/rhci-5.8-1.iso /media  /挂载本地镜像文件/
2、文件系统的配置文件/etc/fstab
    OS在初始化时,会自动挂载此文件中定义的每一个文件系统
    /etc/fstab文件结构:
        第一个字段:要挂载的设备
        第二个字段:挂载点(挂载位置)
        第三个字段:文件系统类型
        第四个字段:挂载选项(默认defaults)
        第五个字段:转储频率(每多少天做一次完全备份;0表示不做备份;1表示每一天备份一次;2表示每两天备份一次)
        第六个字段:文件系统检测次序(只有根为1;1表示首先检测;0表示不检测;2表示1(即根)检测完后检测,可以同时多个出现)
            例:[root@Ourlab ~]# cat /etc/fstab
                LABEL=/                 /                       ext3    defaults        1 1
                LABEL=/home             /home                   ext3    defaults        1 2
                LABEL=/boot             /boot                   ext3    defaults        1 2
                tmpfs                   /dev/shm                tmpfs   defaults        0 0
                LABEL=SWAP-sda5         swap                    swap    defaults        0 0

        mount -a :挂载所有的定义在/etc/fstab文件中的交换设备

3、文件挂载成功的信息都会在/etc/mtab文件中;
    mount -n DEVICE MOUNT_POINT:文件挂载成功信息不在/etc/mtab文件中保存;

4、fuser:验证进程正在使用的文件或套接字文件
    -v:查看某文件上正在运行的进程
    -k:
    -m:
    fuser -km MOUNT_POINT:终止正在访问此挂载点的所有进程
    
练习:
1、创建一个1G的分区,文件系统为ext3,卷标为MYDATA2,块大小为1024,预留管理空间为磁盘分区的3%
要求开机后可以自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用;
[root@Ourlab ~]# fdisk /dev/sda
[root@Ourlab ~]# mke2fs -j -L MYDATA2 -m 3 -b 1024 /dev/sda7
[root@Ourlab ~]# vim /etc/fstab
LABEL=MYDATA2            /data                   ext3    defaults    0 0
2、创建一个本地回环文件/var/swaptemp/swapfile来用于swap,要求大小为512M,卷标为SWAP-FILE,且开机自动启用此交换设备;
[root@Ourlab ~]# mkdir /var/swaptemp
[root@Ourlab ~]# dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512
[root@Ourlab ~]# vim /etc/fstab
/var/swaptemp/swapfile   swap                   swap     defaults       0 0
3、上述第一问,如何让其自动挂载的同时启用ACL功能;
[root@Ourlab ~]# vim /etc/fstab
LABEL=MYDATA2            /data                   ext3    defaults,acl    0 0
原创粉丝点击