zoukankan      html  css  js  c++  java
  • 磁盘管理命令应用

    两种分区方式:MBR,GPT
    MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T       32位 差不多2T    2的32次方除以二
    如何分区:按柱面
    0磁道0扇区:512bytes
          446bytes: boot loader  关于计算机启动的一些内容 主引导程序
          64bytes:主分区表   
          16bytes: 标识一个分区
         2bytes: 55AA   分区的存在,55aa   16进制数
    4个主分区;3主分区+1扩展(N个逻辑分区)

    echo '- - -' >/sys/class/scsi_host/host2/scan                                                   刷新新插入的硬盘硬盘

    EBR(512字节)  是扩展分区最前面得一点空白区域,每个逻辑分区前面都有
    MBR (512字节) 是主分区最前面的一点空白区域

    fdisk -l /dev/sda    查看磁盘上的真正的分区表

    lsblk   查看内存中的分区表

    parted /dev/sdb   mkpart primay 1 1000    mkpart是创建分区的意思
    parted /dev/sda print    查看 分区

    parted /dev/sda   rm 1  删除分区   慎用

    gdisk /dev/sdb 类fdisk 的GPT分区工具   比parted好用
    fdisk -l [-u] [device...] 查看分区
    fdisk /dev/sdb 管理分区
     子命令:
     p 分区列表
    t 更改分区类型
     n 创建新分区
    d 删除分区
     v 校验分区
    u 转换单位
    w 保存并退出
     q 不保存并退出

    partx -a /dev/sda  更新分区,新创建分区的时候更新分区的命令     ,这个命令只有在centos6上面好使
    partx -d --nr 6-7 /dev/sda    更新分区,删除后磁盘用的更新 6-7 代表两个新创建的分区
         
    partprobe    在centos5和7上面 同步磁盘。

    tune2fs -l  /dev/sdb3     增加日志功能  增加特性

    mount   加分区名字    需要挂在的名字               挂载
    在挂载之前要先确定这个挂载点是否是一个目录
    umount    取消挂载



    一个扇区是512字节    一圈是6位2的6次方,也就是64个扇区
    有10个位的圈

    dd if=/dev/zero of=/dev/sda bs=1 count=64 skip=446 seek=446  删除其中的64个字节,跳过后面的446个字节

    查看磁盘分区有四种方式
    1. ls /dev/sd*    看设备名
    2. cat /proc/partitions  看内存
    3. lsblk   看内存
    4. fdisk /dev/sda -l  看磁盘


    fdisk 创建MBR分区
     gdisk 创建GPT分区
     parted 高级分区操作
     partprobe-重新设置内存中的内核分区表版本



    dd if=/dev/zero of=/dev/sdb bs=1 count=512   创建磁盘
    parted /dev/sdb mklabel gpt  更改成 GPT 格式
    parted /dev/sdb print
    fdisk /dev/sdb print -l   查看磁盘


    parted /dev/sdb mklabel msdos   这个是把磁盘全删了,不存在转换问题mklabel msdos

    mke2fs  /dev/sdb3    意思就是把sdb3的分区格式改成文件系统ext2的格式     也可以这么写mkfs.ext2   或者mkfs -t ext2
    上面的命令如果加上  -j   就多了个日志功能也就从ext2 变成了ext3 文件系统了
    tune2fs -o ^has_journal /dev/sdb5     是去除日志功能

    cat /etc/mtab    可以查看已经挂载的文件
    cat /proc/mounts    这个查看挂载点更全面一些
    findmut /文件目录可查看是不是挂载点



    blkid   检查分区是否更改正确

    挂载方法:mount DEVICE MOUNT_POINT
    mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
     mount [-fnrsvw] [-t vfstype] [-o options] device dir     
     在挂载的时候,如果在这个目录里面是无法取消挂载的,要退出需要取消挂载的目录才可以进行取消挂载。
    device:指明要挂载的设备;
    (1) 设备文件:例如/dev/sda5
    (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'
    (3) UUID, -U 'UUID':例如
    mount -U "0c50523c-43f1-45e7-85c0-a126711d406e"  /mnt/sdb2    这是通过UUID来挂载分区路径
    (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
    dir:挂载点
    事先存在;建议使用空目录
    进程正在使用中的设备无法被卸载


    fuser -v 加上挂载名字可以查看当前目录是哪个用户在访问。
    fuser -km 加上挂载名字可以直接强行的踢走目前正在访问的用户
    w 可查看正在登陆的用户的ID端口 ,用 echo Please get out > /dev加上那个用户登录的TTY可以向那个用户发出信息
    findmnt /app/   这个命令可查看目录是不是挂载点

    -t vsftype:指定要挂载的设备上的文件系统类型
     -r: readonly,只读挂载
     -w: read and write, 读写挂载
     -n: 不更新/etc/mtab,mount不可见
     -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
     -L 'LABEL': 以卷标指定挂载设备
    -U 'UUID': 以UUID指定要挂载的设备
     -B, --bind: 绑定目录到另一个目录上
     查看内核追踪到的已挂载的所有设备
    cat /proc/mounts

    -o options:(挂载文件系统的选项),多个选项使用逗号分隔
    async:异步模式
    sync:同步模式,内存更改时,同时写磁盘
    atime/noatime:包含目录和文件
    diratime/nodiratime:目录的访问时间戳
    auto/noauto:是否支持自动挂载,是否支持-a选项
    exec/noexec:是否支持将文件系统上运行应用程序
    dev/nodev:是否支持在此文件系统上使用设备文件
    suid/nosuid:是否支持suid和sgid权限
    remount:重新挂载     用 mount -o remount,跟上ro或者是rw 加上文件或者目录,就可以不用取消挂载给文件设置权限,万一有用户在访问这个文件的时候不方便。
    ro:只读
    rw:读写
    user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
    acl:启用此文件系统上的acl功能        如果分区块上这个acl权限没有启用   setfacl -m u:lixiaozi:w lost+found/      一些加权限的命令都无法使用。 tune2fs -o acl /dev/sdb2  这个命令是给sdb2 增加上了acl权限   tune2fs -l /dev/sdb2   查看有没有加上acl权限
    tune2fs -o ^acl /dev/sdb2   取消acl权限命令
    loop: 使用loop设备      在centos6 上面用到 -o loop  在centos7上面用不到

    使用文件做分区:[root@centos69 app]#dd if=/dev/zero of=partfile bs=1G count=1
    [root@centos69 app]#dd if=/dev/zero of=partfile bs=1M count=1024
    上面这两条命令都是可以的但是用1M创建文件创建的速度快点
    mkfs.ext4 partfile    给这个文件设置一个文件系统。
    blkid partfile    查看文件系统
    mkdir /mnt/part    创建需要挂载的目录
    mount /app/partfile  /mnt/part  挂载会提示要加 -o loop 命令。
    mount /app/partfile  /mnt/part -o loop   就可以挂载了


    uuidgen 加分区可更改分区uuid
    tune2fs  -U  加上UUID号  输入分区名   可更改分区UUID

    1 创建分区
    fdisk t 82

    2 文件系统
    mkswap /dev/sdd1  -L SWAP_SDD1

    3 配置文件
    vim /etc/fstab
    UUID=2979b3c4-c0c5-44b1-bf21-a213f90d80a0 swap swap pri=10      0 0

    4 生效
    swapon -a      更新在fstab 里面加的特殊命令
    mount -a  更新在fstab 里面加的普通命令
    swapon -s  查看

    5 删除 swap
    1)swapoff /dev/sdd1    先禁用swap
    2)vim /etc/fstab   修改fstab文件
    最后去fdisk 里去删除磁盘  fdisk /dev/sdd 删除分区

    eject  弹出磁盘
    eject -t    弹入磁盘


    dd命令:convert and copy a file
     用法:
    dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
    bs=#:block size, 复制单元大小
    count=#:复制多少个bs
     of=file 写到所命名的文件而不是到标准输出
    if=file 从所命名文件读取而不是从标准输入
    bs=size 指定块大小(既是是ibs也是obs)
    ibs=size 一次读size个byte
    obs=size 一次写size个byte
    cbs=size 一次转化size个byte
    skip=blocks 从开头忽略blocks个ibs大小的块
    seek=blocks 从开头忽略blocks个obs大小的块
    count=n 只拷贝n个记录
    conv=conversion[,conversion...] 用指定的参数转换文件
     转换参数:
     ascii 转换 EBCDIC 为 ASCII
     ebcdic 转换 ASCII 为 EBCDIC
     lcase 把大写字符转换为小写字符
     ucase 把小写字符转换为大写字符
     nocreat 不创建输出文件
     noerror 出错时不停止
     notrunc 不截短输出文件
     
     cp /etc/fstab  /mnt/usb   把U盘中的文件复制到虚拟中去的时候,显示成功了但是很有可能还没有复制完成,只是这些东西还在缓存内存中。这时候用sync命令输入三遍在拔出U盘...sync 是强迫吧缓存中的数据写入磁盘.
     sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐

    实验:迁移/Home到新独立分区
    1 建立新分区
    2 建立文件系统
    3 mkdir /mnt/home
    mount /dev/sda6 /mnt/home
    4 cp /home/* /mnt/home -av
    5 tar cvf  /app/home.tar /home
    scp remote
    6 init 1 断开网络,在远程不要执行
    7 rm -rf /home/*
    8 vim /etc/fstab
    UUID=b0421d9a-8072-4be5-9526-070535ac0a8e /home  ext4   defaults 0 0
    9 mount -a
    umount /mnt/home
    10 init 5 还到原有模式


    备份:
    dd if=/dev/sdx of=/dev/sdy
    将本地的/dev/sdx整盘备份到/dev/sdy
    dd if=/dev/sdx of=/path/to/image
    将/dev/sdx全盘数据备份到指定路径的image文件
    dd if=/dev/sdx | gzip >/path/to/image.gz
    备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径
     恢复:
    dd if=/path/to/image of=/dev/sdx
    将备份文件恢复到指定盘
    gzip -dc /path/to/image.gz | dd of=/dev/sdx
    将压缩的备份文件恢复到指定盘
    拷贝内存资料到硬盘
    dd if=/dev/mem of=/root/mem.bin bs=1024
    将内存里的数据拷贝到root目录下的mem.bin文件
    从光盘拷贝iso镜像
    dd if=/dev/cdrom of=/root/cd.iso
    拷贝光盘数据到root文件夹下,并保存为cd.iso文件
    销毁磁盘数据
    dd if=/dev/urandom of=/dev/sda1
    利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据
    ,执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作
    无法执行
    测试硬盘写速度
    dd if=/dev/zero of=/root/1Gb.file bs=1024
    count=1000000
     测试硬盘读速度
    dd if=/root/1Gb.file bs=64k | dd of=/dev/null
    修复硬盘
    dd if=/dev/sda of=/dev/sda
    当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会
    产生消磁点。当磁头读到这些区域时会遇到困难,并可能
    导致I/O错误。当这种情况影响到硬盘的第一个扇区时,
    可能导致硬盘报废。上边的命令有可能使这些数据起死回
    生,且这个过程是安全高效的

    实验:实现配额
    1 启用配额功能
    vim /etc/fstab
    UUID=b0421d9a-8072-4be5-9526-070535ac0a8e /home  ext4   usrquota,grpquota  0 0
    2 创建配额数据库
    quotacheck -cug
    3 启用数据库
    quotaon   /home
    4 指用户的空间限制
    edquota   wang
    Disk quotas for user wang (uid 500):
      Filesystem                   blocks       soft       hard     inodes     soft     hard
      /dev/sda6                      1164       800000      1000000        159        162        165
    5 测试

    /dev/md0  ext4 /mnt/raid
    1G chunk 512K

    实验:创建LV
    pvcreate /dev/sd{a5,b1}
    vgcreate vg0 /dev/sd{a5,b1}
    lvcreate -n lv0 -L 10G vg0
    mkfs.ext4 /dev/vg0/lv0
    mount


    实验:扩展LV
    lvextend -l +100%FREE  /dev/vg0/lv0
    resize2fs  /dev/vg0/lv0  extN
    xfs_growfs /mnt/lv0   xfs
    或者
    lvextend  -r -l +100%free  /dev/vg0/lv0


    实验:缩减LV
    umount /mnt/lv0
    fsck -f /dev/vg0/lv0
    resize2fs  /dev/vg0/lv0 8G
    lvreduce -L 8G /dev/vg0/lv0
    mount -a


    实验:删除PV
    vgdisplay 看可用空间,大于pv的空间
    pvmove  /dev/sdc
    vgreduce vg0 /dev/sdc
    pvremove /dev/sdc

    实验:迁移LV到新主机
    1 确认VG名和目标主机不同
    vgrename vg1 vg100
    lvrename lv2 lv100
    vgdisplay
    pvs

    2 umount /mnt/lv2
    vgchange -an /dev/vg100/lv100
    vgexport vg100

    3 拆除,在新主机接入

    4
    lvs;vgs
    vgimport vg100
    vgchange -ay vg100
    mount /dev/vg100/lv100 /mnt

    快照里面是空的,只是在快照之后有什么文件被修改后,原来没有被修改的文件会自动的存入快照中。这样就可以恢复快照,而且比备份省空间
    做快照:需要逻辑卷
    lvcreate -n lv0-snapshot  -L  1G  -s  -p  r /dev/vg0/lv0          lv0-snapshot  给这个文件做快照的名字            L是快照大小的意思       s是快照的意思      -p  r    是权限     /dev/vg0/lv0 给哪个文件做快照

    修改快照:
    mkdir /mnt/snap          mount /dev/vg0/lv0   /mnt/snap     挂载

    取消原来所有的挂载才能还原快照。
    lvconvert --merge /dev/vg0/lv0-snapshot     还原原来的系统,还原原来的所有状态。

    lvremove  /dev/vg0/lv0-snapshot    删除快照,删除之前要先取消所有挂载。


    RAID  如果原来磁盘坏了,更改磁盘之后要同步这个RAID     resize2fs /dev/md0    这个命令只能应用于ext系列。
    xfs系列要用   xfs_growfs  /dev/md0

  • 相关阅读:
    Go语言核心36讲(Go语言进阶技术四)--学习笔记
    Go语言核心36讲(Go语言进阶技术三)--学习笔记
    Go语言核心36讲(Go语言进阶技术二)--学习笔记
    Go语言核心36讲(Go语言进阶技术一)--学习笔记
    Go语言核心36讲(Go语言基础知识六)--学习笔记
    Go语言核心36讲(Go语言基础知识五)--学习笔记
    Go语言核心36讲(Go语言基础知识四)--学习笔记
    Go语言核心36讲(Go语言基础知识三)--学习笔记
    Go语言核心36讲(Go语言基础知识二)--学习笔记
    Qt之如何创建并显示一个柱状图
  • 原文地址:https://www.cnblogs.com/lmf1110/p/8026145.html
Copyright © 2011-2022 走看看