• 文件系统与分区


    磁盘:


    设备类型:
        块设备:block,磁盘
        字符设备:char,键盘
        
        brw-rw----. 1 root disk  8,   0 Nov  3 09:42 sda
                            主设备号 次设备号
    查看硬盘类型:    
    cat /sys/block/sda/queue/rotational
    0  --表示固态硬盘
    1  --表示机械硬盘

    head:磁头
    track:磁道
    cylinder:柱面
    sector:扇区,512bytes

    寻址方式:


    CHS采用24bit寻址
    前10位表示cyliner(1024),中间8位表示head(255),后6位表示sector(63)
    每扇区512位:
        最大寻址空间8G:1024*255*63*512

    LBA
        ATA-1中定义了28位寻址模式,以每扇区512位来计算,上限为128GiB
        ATA-6规范中采用48位LBA,同样以每扇区512位组计算容量上限为128Petabytes
        
    分区:


    一,分区的好处:
        优化I/O性能
        实现磁盘空间配额限制
        提高修复速度
        隔离系统和程序
        安装多个OS
        采用不同文件系统
    二,分区方式:
    MBR和GPT
        
    分区表备份:
    dd if=/dev/sda of=/data/dpt bs=1 count=66 skip=446 跳过(源)sda的前446个字节,备份后66个字节

    破坏分区表:
    dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510 跳过(目标)sda的前510个字节,只破坏最后2个字节

    还原:
    dd if=/dev/dpt of=/dev/sda ba=1 count=2 skip=64 seek=510 跳过(源)dpt前64字节,(目标)sda前510字节,进行恢复

    hexdump -C -n 512 /dev/sda --查看/dev/sda的前512个字节

    三,分区工具:
        fdisk 用于MBR分区
        gdisk 用于GPT分区
        parted 高级分区操作
        
    新添加磁盘后可以通过该命令扫描磁盘:
        echo '- - -' > /sys/class/scsi_host/host0/scan 或
        echo '- - -' > /sys/class/scsi_host/host2/scan
        
    (1)parted用法:
        select /dev/sdb 选择sdb磁盘
        mklabel gpt|msdos 创建标签,gpt或msdos
        print 看分区信息
        mkpart sdb1 1 200 (默认M),sdb1为分区名称,1位起始,200为结束
        rm 1 删除1分区
        parted –l 列出分区信息
    示例:
        [root@server ~]# parted
        (parted) select /dev/sdb               //选择磁盘sdb
        Using /dev/sdb
        (parted) mklabel gpt                   //将MBR磁盘格式化为GPT
        (parted) mkpart
        Partition name? []?
        File system type? [ext2]?
        Start? 0
        End? 2996G         //0 - 2996GB
        0表示分区的开始  -1表示分区的结尾  意思是划分整个硬盘空间为主分区

    (2)fdisk,gdisk用法:    
    子命令:
        p 分区列表
        t 更改分区类型
        n 创建新分区
        d 删除分区
        v 校验分区
        w 保存并退出
        q 不保存并退出


    四,查看分区:
        1,fdisk -l /dev/sdv
        2,ls /dev/sdb*
        3,cat /proc/partitions 查看内核是否已经识别新的分区
        4,lsblk
        
    五,同步分区表:
    centos5/centos7:    
        partprobe /dev/sdb    centos6使用partprobe会出现问题
        
    centos6:(通知内核重新读取硬盘分区表)
        kpartx -a /dev/sdb -f:force
        partx -a /dev/sdb  --加分区
        partx -d -nr 2-3 /dev/sdb  --删除分区
        
    查看支持的文件系统:
        ll /lib/modules/`uname -r`/kernel/fs
    Linux的虚拟文件系统:VFS

    六,格式化分区:
    创建xfs文件系统
        mkfs.xfs -t FS_TYPE -L 'LABEL' /dev/DEVICE    

    创建ext文件系统
        mke2fs:ext系列文件系统专用管理工具
        -t {ext2|ext3|ext4} 指定文件系统类型
        -b {1024|2048|4096} 指定块大小
        -L ‘LABEL’ 设置卷标
        -j 相当于 -t ext3
        mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
        -i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小
        -N # 指定分区中创建多少个inode
        -I 一个inode记录占用的磁盘空间大小,128---4096
        -m # 默认5%,为管理人员预留空间占总空间的百分比
        -O FEATURE[,...] 启用指定特性
        -O ^FEATURE 关闭指定特性
        
    blkid:块设备属性信息查看
    e2label:管理ext系列文件系统的LABEL
        e2label /dev/sdb1 sdb1-1  修改sdb1的LABEL为sdb1-1
    findfs:查找分区
        findfs LABEL=sdb1-1 查找LABEL为sdb1-1的设备
        findfs UUID=***
    tune2fs:重新设定ext系列文件系统可调整参数的值
        tune2fs -l /dev/sdb1
        -l 查看指定文件系统超级块信息;super block
        -L 'LABEL’ 修改卷标
        -m 修预留给管理员的空间百分比
        -j 将ext2升级为ext3
        -O 文件系统属性启用或禁用, –O ^has_journal
        -o 调整文件系统的默认挂载选项,–o ^acl
        -U UUID 修改UUID号    
    dumpe2fs:显示ext文件系统信息,将磁盘块分组管理
        -h:查看超级块信息,不显示分组信息 
    xfs_info:显示已挂载的 xfs 文件系统信息
        xfs_info mountpoint   
        
    七,挂载文件系统:
        mount /dev/DEVICE MOUNT_POINT
        
        centos6:
        mknod /dev/loop8 -b 7 8  --手动创建loop设备
        vim /boot/grub/grub.conf
        max_loop=100 重启系统会自动生成100个loop设备

        losetup /dev/loop8 /data/disk1  --将shebloop8与文件disk1关联
        losetup -a  --查看关联信息
        mount /dev/loop8 /mnt/disk1

     查看挂载情况
        findmnt MOUNT_POINT|device --finemnt /dev/sdb5
     查看正在访问指定文件系统的进程
        lsof MOUNT_POINT
        fuser -v MOUNT_POINT --可以看到使用设备的用户
     终止所有在正访问指定的文件系统的进程
        fuser -km MOUNT_POINT
       
    八,卸载文件系统
        umount DEVICE/MOUNT_POINT
        uuidgen  --生成UUID

    九,文件挂载配置文件
    /etc/fstab每行定义一个要挂载的文件系统
        1、要挂载的设备或伪文件系统设备文件
            LABEL:LABEL=""
            UUID:UUID=""
            伪文件系统名称:proc, sysfs
        2、挂载点 
        3、文件系统类型:ext4,xfs,iso9660,nfs,none
        4、挂载选项:defaults ,acl,bind
        5、转储频率:0:不做备份 1:每天转储 2:每隔一天转储
        6、fsck检查的文件系统的顺序:允许的数字是0 1 2
            0:不自检
            1:首先自检;一般只有rootfs才用
            2:非rootfs使用

    十,文件系统检测和修复:
    文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”
    注意:一定不要在挂载状态下执行下面命令修复    
    fsck: File System Check
        fsck.FS_TYPE
        fsck -t FS_TYPE
        注意:FS_TYPE 一定要与分区上已经文件类型相同
        -a 自动修复
        -r 交互式修复错误
    e2fsck:ext系列文件专用的检测修复工具
        -y 自动回答为yes
        -f 强制修复
        -p 自动进行安全的修复文件系统问题
    xfs_repair:xfs文件系统专用检测修复工具
        -f 修复文件,而设备
        -n 只检查
        -d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot


    示例1:
    扩展swap空间
    1,在sdb新建分区sdb1,size为2G,类型为82(swap)
        fdisk /dev/sdb
    2,将分区写入特殊签名swap:
        mkswap /dev/sdb1
    3,激活交换空间,将swap信息写入/etc/fstab中
        UUID=***    swap    swap    defsults    0 0
    4,激活swap    
        swapon -a
    5,查看swap信息
        swapon -s
        
    修改swap优先级(有多个分区作为swap空间):
    1,修改/etc/fstab文件中swap行,defaults修改为pri=VALUE,VALUE为优先级
    2,禁用swap
        swapoff -a
    3,激活swap
        swapon -a
    可以指定swap分区0到32767的优先级,值越大优先级越高

    以文件作为swap空间使用:
    1,创建swapfile文件
        dd if=/dev/zero of=/swapfile bs=1M count=2048
    2,将分区写入特殊签名:
        mkswap swapfile
    3,信息写入/etc/fstab中,只能用文件名,不能使用UUID
        /swapfile    swap    swap    defaults    0 0
    4,激活swap
        swapon -a
        
        
    文件夹挂文件夹
    /boot    /mnt/boot    none    bind    0 0
    挂载光盘
    /dev/sro    /mnt/cdrom    iso9660        defaults    0 0

    示例2:
    迁移home到新的分区
    (建议在维护模式,init 1)
    1,新建分区/dev/sda3
        fdisk /dev/sda
    2,同步分区表
        partprobe
    3,创建文件系统mkfs
        mkfs.xfs /dev/sda3
    4,新建一个目录用于存放home数据
        mkdir /mnt/home
    5,将/mnt/home挂载给将来home要使用的分区
        mount /dev/sda3 /mnt/home
    6,将home目录下的数据拷贝到/mnt/home
        cp -a /home/* /mnt/home/
    7,删除home中的数据(生产环境需要观察一段时间,运行无误后再删除)
        rm -rf /home/*
    8,卸载/mnt/home,并挂载home到/dev/sda3
        umount /mnt/home
        mount -a


  • 相关阅读:
    3星|简·雅各布斯《经济的本质》:经济遵循与自然一样的发展规律:分化与组合、多样性、共同发展
    3星|《陈志武金融通识课》:从金融的角度看历史、文化、商业
    2018左其盛差评榜(截至7月6日)
    2018左其盛好书榜(截至7月6日)
    哈佛多是标题党。6本哈佛书点评
    OPENGL画图类库
    Html,Css,Javascript及其他的注释方法详解
    C#画图解决闪烁问题
    C#ShowCursor光标的显示与隐藏
    C#实现GDI+基本图的缩放、拖拽、移动
  • 原文地址:https://www.cnblogs.com/wangyanqiang/p/11790356.html
Copyright © 2020-2023  润新知