文件系统与分区

Posted wangyanqiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件系统与分区相关的知识,希望对你有一定的参考价值。

磁盘:


设备类型:
    块设备: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


以上是关于文件系统与分区的主要内容,如果未能解决你的问题,请参考以下文章

磁盘分区:格式化与挂载文件系统

linux 分区与文件系统是啥关系?

磁盘与文件系统实验

linux Centos下磁盘分区及文件系统创建与挂载

linux Centos下磁盘分区及文件系统创建与挂载

linux的磁盘管理与文件系统