• 磁盘分区

    • fdisk : MRB分区工具

    • 用法:

      • fdisk -l : 列出所有设备信息
      • fdisk /dev/sdb : 管理sdb磁盘
      • fdisk 命令:
        p :查看分区列表
        t :更改分区类型
        n :创建新分区
        d :删除分区
        v :校验分区
        u : 转换单位;cylinder:柱面;sector:扇区
        w :保存更改并退出
        q :不保存退出
    • gdisk : GPT分区工具,用法与fdisk基本一致

    • parted : 高级分区操作(操作实时生效)

      • 用法:
        parted [选项]... [设备 [命令 [参数]...]...]
        parted /dev/Device mklabel gpt | msdos : 改变磁盘类型为GPT或MBR
        parted /dev/Device print :显示磁盘分区信息
        parted /dev/Device mkpart primary 1 1000 : 创建分区 1 为分区号;1000为分区大小(默认为M)
        parted /dev/Device rm 1 : 删除第一个分区
        parted -l : 列出所有设备信息
    • 查看内核是否识别了新分区:

      cat /proc/partitions
    • 通知内核重新读取硬盘分区表:

    • CentOS 6 :
      • 新增分区时:
        partx -a /dev/Device
      • 删除分区时:
        partx -d --nr M-N /dev/Device
      • CentOS 7 :
        partprobe
  • mke2fs: ext系列文件系统专用管理工具

    • 配置文件:/etc/mke2fs.conf

      • 选项:
        -t :指定文件系统类型 {ext2 | ext3 | ext4}
        -j :相当于 -t ext3
        mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
        -L label : 指定卷标,
        -b{1024|2028|4096} :指定块大小
        -i n :n个字节给指定一个indone
        -N n : 直接指定创建多少个indone
        -I n :指定inode大小
        -m n :预留给管理员的空间百分比,默认为5%
        -O :指定分区特性
    • e2label /dev/DEVICE :查看卷标


    • e2label /dev/DEVICE Label  直接更改卷标


    • blkid : 查看UUID和TYPE


    • dumpe2fs :查看超级块和是否有碎片

      -h :仅显示超级块中保存的信息
    • tune2fs:调整ext文件系统的参数信息

      -l  : 查看超级块中的信息
      -L : 修改卷标
      -m :预留管理员的空间百分比
      -j  :如果原来的文件系统为ext2,-j 能够将其提升为ext3
      -o :[^]mount-options[,...] 指定默认挂载选项
      -O :[^]feature[,...] 调整分区特性
              tune2fs -o 挂载选项 设备
              tune2fs -o ^设备选项 取消
  • 文件系统检测:

    • fsck:
      -t : 文件类型 设备
      -f : 强行检测
      -a : 自动修复错误
      -r : 交互式修复错误

    • e2fsck : ext系列文件系统专用的检测修复工具
      -y :自动回答为yes
      -f :强行检测


  • 挂载和取消挂载:

    • 查看内核追踪到的已挂载的所有设备:
      cat /proc/mounts
    • 挂载命令:mount

      • mount : 通过查看/etc/fstab文件显示当前以挂载的设备

        mount [options] -o [option] -t 文件类型  设备  挂载目录
        设备:
                (1)设备文件:例如/dev/sr0,/dev/sdb1
                (2)卷标:-L '卷标名'
                (3)UUID:-U 'UUID'
                (4)伪文件系统名称:proc,sysfs
        挂载目录:
                 (1)必须事先存在,尽量使用空目录
      • 选项:

        -t   :指定要挂载设备的文件系统类型
        -r   :readonly,只读挂载
        -w  :读写挂载
        -n   :不更新/etc/mtab,mount不可见
        -a   :自动挂载所有支持自动挂载的设备(设备定义在了/etc/fstab文件中)
        -L   :以卷标名来指定要挂载的设备
        -U  :以UUID来指定要挂载的设备
        -B,--bind :绑定目录到另一个目录上(相当于软链接)
        -o [options]  :(挂载文件系统的选项),多个选项用逗号分隔
                async :异步模式,内存更改时,先保存至buffers中,稍后写入磁盘
                sync : 同步模式,内存更改时,同时写入磁盘
                atime/noatime :是否刷新atime,包含目录和文件(常用于web服务的网页文件)
                diratime/nodiratime :是否刷新目录的atime
                exec/noexec :是否禁止设备上的可执行文件的执行权限
                auto/noauto :是否支持自动挂载,是否支持-a选项
                dev/nodev :是否支持在此文件系统上使用设备文件
                suid/nosuid :是否支持suid和sgid权限
                remount :重新挂载
                ro :只读
                rw :可读可写
                user/nouser :是否允许普通用户挂载此设备,/etc/fstab使用
                acl :启用此文件系统上的acl功能
                loop :使用loop设备(loop:通俗来讲就是把文件当设备使用,例如:windows的分页文件)
                default :相当于rw,suid,dev,exec,auto,nouser,async
    • 卸载:

      • 查看挂载情况:
        findmnt mount_dir | 设备
        例:findmnt /mnt | /etc/sda1

      • 查看正在访问指定文件系统的进程:
        lsof mount_dir
        fuser -v mount_dir

      • 终止所有在正访问指定的文件系统的进程:
        fuser -km mount_dir

      • 卸载/取消挂载:
        umount DEVICE
        umount mount_dir
  • /etc/fstab配置文件 :

    • /etc/fstab每行定义一个要挂载的文件系统。

      UUID=9a1b8ed1-ae7c-4391-98ea-a33ebd18fa7c   /mnt  xfs   defaults  0  0
      设备文件    挂载点   文件系统类型    挂载选项    转储频率   自检次序

      • 设备文件:
          LABEL:LABEL=""
          UUID:UUID=""
      • 伪文件系统名称:proc, sysfs
      • 挂载点:如:/mnt
      • 文件系统类型:xfs,ext4...
      • 挂载选项:
          default :相当于rw,suid,dev,exec,auto,nouser,async
      • 转储频率:
          0:不做备份
          1:每天转储
          2:每隔一天转储
      • 自检次序:
          0:不自检
          1:首先自检;一般只有rootfs才用1
  • 交换分区:swap

    • 交换分区时系统RAM的补充,与windows的分页文件同理
    • swap优先级:

      • 手动指定:0-32767的优先级,值越大优先级越高
      • 系统默认:从-1开始,添加新的swap时优先级减一(默认的优先级永远是负数)
    • 设置swap:
        (1)创建交换分区或者文件
        (2)使用mkswap写入特殊签名
        (3)在/etc/fstab添加相关条目
        (4)使用swapon -a 激活交换空间

    • 启用swap命令:swapon
      swap [option]...[device]
      -a :激活所有的交换分区
      -p :指定优先级
      在/etc/fstab文件中指定:pri=var
    • 禁用:swapoff
  • 工具dd:

    dd if=file  of=file  bs=n  count=n
        if=file :从某个文件读取数据
        of=file :输出到某个文件
        bs=size : block size,指定块大小(ibs=obs)
        ibs=size :一次读取size个byte
        obs=size :一次写size个byte
        cbs=size :一次转化size个byte
        skip=blocks :从开头忽略blocks个ibs大小的块
        seek=blocks :从开头忽略blocks个obs大小的块
        count : 复制多少个bs
        conv=onversion... :用指定参数转换文件
        转换参数:
                ascii :转换ebcdic码为ascii
                ebcdic :转换ascii为ebcdic
                lcase :把大写字符转换为小写
                ucase :把小写转换为大写
                nocreat :不创建输出文件
                noerror :出错时不停止
                notrunc :不截短输出文件
                sync :把输入块填充到ibs个字节,不足的部分用空(NUL)字符补齐
  • 示例:

    • 备份MBR:
      dd if=/dev/sda of=/root/mbr.bak bs=512 count=1
    • 破坏MBR中的bootloader:
      dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
    • 备份磁盘:
      • 将sda整盘备份到sdc:
        dd if=/dev/sda of=/dev/sdc
      • 将sda的数据备份到文件中:
        dd if=/dev/sda of=file
      • 备份sda全盘数据并压缩:
        dd if=/dev/sda | gzip >file.gz
      • 将压缩的备份文件恢复到sdc:
        gzip -dc file.gz |dd of=/dev/sdc
      • 销毁磁盘数据:
        dd if=/dev/urandom of=/dev/sda