一些基础

硬盘接口类型

  • ide 早期家庭电脑 scsi 早期服务器
  • sata 目前家庭电脑 sas 目前服务器
  • raid卡--阵列卡
  • 网卡绑定
  • ABI 应用程序与OS之间的底层接口
  • API 应用程序调用第三方库的接口
  • Windows 磁盘分区方式,不同的方式,BIOS的设置是不同的
  • 硬盘分区格式为MBR格式,启动模式应该为Legacy;
  • 硬盘分区格式为GUID(GPT)格式,启动模式应该为UEFI
  • BIOS+MBR 以前的方式,分区最大支持2T    与UEFI+GPT 是目前最新的方式,硬盘支持容量特别大
  • 硬盘寻址方式与空间大小:由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB 时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则 只能使用LBA寻址方式

设备在Linux的命名方式

SCSI, SATA, SAS, IDE,USB: /dev/sd ?    设备都以/dev/sd开头
虚拟磁盘:/dev/vd 、/dev/xvd ?
不同磁盘标识:a-z,aa,ab… /dev/sda, /dev/sdb, ... ?  第一块磁盘就是a ,第二块就是b.....
同一设备上的不同分区:1,2, ... /dev/sda1, /dev/sda5  第一个分区就是1,第二个分区就是2....

分区类型

MBR:(只支持2T的硬盘分区)

  • 主分区:一块硬盘最多四个,最少一个,安装OS,只有1个是激活主分区
  • 扩展分区:一块硬盘最多一个,不能直接使用,需要划分成更小的逻辑分区
  • 逻辑分区:扩展分区的最小分区单位
  • 在Linux中 MBR分区类型,主分区和扩展分区只能有1-4个,扩展分区从5往后。
  • Master Boot Record
  • 0磁道0扇区:512bytes   446bytes: boot loader   64bytes:分区表,其中每16bytes标识一个分区   2bytes: 55AA

比如 Linux分区方案
/dev/sda 200G
/dev/sda1 mount /boot 1G mount point
/dev/sda2 mount / 100G
/dev/sda3 mount /data 50G
/dev/sda4 extend 49G
/dev/sda5 逻辑分区 swap 4G
有一块200G的硬盘,3个主分区1个扩展分区,扩展分区分了剩余的所有空间,扩展分区中分了4G的逻辑分区给swap,swap分区是Linux的(虚拟内存)没有挂载点

MBR 最前面的512字节中,有MBR分区表,这个表记录了分区的情况

GPT:只支持主分区    uuidgen //生成UUID guid:128位二进制 32位16进制

管理分区

1分区 2格式化(文件系统) 3挂载

gdisk /dev/sdb 类fdisk 的GPT分区工具

fdisk -l [-u] [device...] 查看分区

fdisk /dev/sdb  管理分区

子命令:

  • p  分区列表
  • t  更改分区类型
  • n  创建新分区
  • d  删除分区
  • v  校验分区
  • u  转换单位
  • w  保存并退出
  • q  不保存并退出
  • fdisk -l 磁盘硬盘分区详细情况(专门针对于mbr分区的,管理gpt分区处于试验阶段,不太适配)
  • lsblk 列出块设备
  • echo '- - -' > /sys/class/scsi_host/host2/scan 重新扫描磁盘,添加一块硬盘后,重启之后才可以识别到,这样就不用重启了 host0 host1 host2
  • 有时候磁盘满了需要删文件使磁盘使用率降下来,但是有一些进程会占用它,当你删除之后还是那么大,可以用这个命令立刻让这个文件变成0 >2019-11-08.log

1)使用fdisk创建完分区之后,默认是mbr分区方式,可以通过 fdisk -l 查看,分好区之后,可以把分区删除掉,把分区删掉之后,在通过 fdisk -l 查看分区,就会看到没了分区了,但是还是存在分区类型的,为什么会存在?

就是因为前512字节中存在 55aa标志位,所以他认为你之前分过区了,怎么让硬盘变得跟新的一样呢?

dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510  //把标志位清空

2)  我们通过fdisk 分完区之后,退出的时候要注意看提示信息,一般新的硬盘你分好之后,内存和硬盘都会分好的,你就可以直接用了,但是如果你分的是之前分过的硬盘,那么你退出后,就会有报警,因为你是分好了,但是内存中没有同步到,你用 fdisk –l 可以看到分好的分区(fdisk 是读取物理磁盘真实的情况,而其他的查看分区命令 如lsblk, ls /dev/sda*,cat /proc/partitions,是读取内存中的分区情况)

    同步问题  要么重启 要么下面的命令

centos6

加分区:partx -a /dev/sda

删除分区: partx -d --nr 5-7 /dev/sda

centos5,7

partprobe

Partprobe

3) 有两快硬盘,第一块分区分好了,按照同样的方法把第二块也分一下,

  两块硬盘分区同步,第二块硬盘按照第一块硬盘分区方式同步,本质就是同步了第一块硬盘的MBR的前64个字节(主分区与扩展分区)  逻辑分区同步不了,逻辑分区的分区信息是在EBR里面的,所以可以看出,一块硬盘有没有分区,分区格式是什么,分区情况是什么,都是存在MBR表里面的,下面的命令就是同步了MBR的分区表

    

4)那既然一块硬盘有没有分区本质是看MBR表的,那快速清理一个硬盘的分区,就直接把分区表的字节改一下

    

建立文件系统(格式化)

    mkfs命令:

      (1) mkfs.FS_TYPE /dev/DEVICE

        • ext4
        • xfs
        • btrfs
        • vfat

对于已经存在了文件系统的分区,重新格式化需要加-f选项
    blkid //查看分区的详细信息 文件系统和UUID

Linux和Windows的文件系统类型 不一样~~~

Linux:常用文件格式 ext2 ext3 ext4 xfs fat
Windows:常用文件格式 FAT32, exFAT,NTFS

挂载

  • 挂载方法:mount DEVICE MOUNT_POINT
  • mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
  • 挂载点下原有文件在挂载完成后会被临时隐藏
  • 挂载点目录一般为空  事先存在,建议使用空目录
  • -r   readonly,只读挂载
  • -w   read and write, 读写挂载
  • df -hl 查看挂载情况
  • 一个设备可以挂载到多个目录下,一个目录一次只能挂载一个设备
  • 也支持文件夹,往文件夹上挂   mount  -B /boot /home/newuser/
  • 也可以把文件 往文件夹上挂,但是这个文件需要有文件系统,我们可以创建一个大文件,然后格式化它,然后就可以挂载到文件夹下了,(有点类似于u盘)

# 将做好的文件系统挂载到 newuser 文件夹上

mount /dev/sdb1 /home/newuser/

mount  -o ro  /dev/sdb1 /home/newuser/   ------  mount  -r  /dev/sdb1 /home/newuser/   //两个都一样 只读方式挂载

卸载

  •   umount DEVICE
  •   umount MOUNT_POINT
  •   取消挂载的时候,要退出这个目录,不能再目录里面,自己把自己杀掉?也有可能是其他进程访问了,所以 fuser –km   MOUNT_POINT  所有对这个文件访问的进程都杀掉。
  •   查看挂载情况  findmnt   MOUNT_POINT|devic  查看这个是不是一个挂载点,或者一个设备有没有被挂载

 持久挂载/etc/fstab

        /etc/fstab 就是文件系统挂载表

   写到这个文件中,就可以持久挂载,当然也可以写设备的UUID

   示例: /dev/sdb1 /home/newuser/ ext4 defaults  0 0

写完之后,重新加载  mount  -a

    如果是文件夹挂文件夹,或者挂载光盘呢?

/boot   /mnt/boot    none    bind  0  0

/dev/sr0    /mnt/cdrom   iso9660   defaults  0  0

扩展swap分区

为什么要扩展,swap的大小一般取决于内存的大小,当你物理内存发生变化时,swap也要变化,但是分区怎么变大?都已经分好区了,是没有办法变大的,所以只能扩展

1,先分区,分区的时候注意更改 ID号82

2,创建分区  mkswap  /dev/sdb1  专门的命令创建swap分区

  3,挂载,写在  /etc/fstab 中,仿照之前的swap写,然后swapon -a  重新到 /etc/fstab 加载swap空间

  所以现在就是有两个swap分区,当使用swap时,会先使用哪一个分区呢,这个也可以设置的

使用文件当swap 

dd if=/dev/zero of=/swapfile bs=1M count=2048  创建2G的大文件

 光盘 

  • 在图形环境下自动启动挂载/run/media/<user>/<label>
  • 否则就必须被手工挂载  mount /dev/cdrom  /mnt/
  • 操作光盘:   eject 弹出光盘     eject -t 弹入光盘
  • 创建ISO文件  cp /dev/cdrom  /root/centos.iso
  •        mkisofs  -r  -o  /root/etc.iso /etc   把etc整个目录打包制作成ISO文件
  • 刻录光盘  wodim –v –eject centos.iso

df 分区挂载设备的使用情况

df [OPTION]... [FILE]...

  • -H 以10为单位
  • -T  显示文件系统类型
  • -h human-readable
  • -i   inodes instead of blocks
  • -P  以Posix兼容的格式输出  格式不跑偏

du查看目录大小

du [OPTION]... DIR

  • -h  human-readable
  • -s   summary
  • --max-depth=#   指定最大目录层级

什么都不加  du  -/boot  列出目录下所有文件的大小 以K为单位

dd 命令convert and copy a file

用法:     

  • dd if=/PATH/FROM/SRC of=/PATH/TO/DEST  bs=# count=#
  • if=file   从所命名文件读取而不是从标准输入
  • of=file   写到所命名的文件而不是到标准输出
  • ibs=size     一次读size个byte
  • obs=size        一次写size个byte
  • bs=size    block size, 指定块大小(既是是ibs也是obs)
  • cbs=size         一次转化size个byte
  • skip=blocks    从开头忽略blocks个ibs大小的块
  • seek=blocks   从开头忽略blocks个obs大小的块
  • count=n         复制n个bs

  命令实例

备份MBR

dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破坏MBR中的bootloader

dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读 取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开 始的位置,替换128Bytes,实现如下

dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

备份:

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将无法挂载,创建和拷贝操作无法执行

linux磁盘管理1-分区格式化挂载,swap,df,du,dd的更多相关文章

  1. linux磁盘管理与分区 转载

    原文:http://zhengjianglong.leanote.com/post/linux%E7%A3%81%E7%9B%98%E5%88%86%E5%8C%BA 一.基础知识 一块磁盘可以分为多 ...

  2. Linux 磁盘管理及分区

    硬盘结构和基础知识  扇区(Sector)为最小的物理储存单位,每个扇区为512 bytes,将扇区组成一个圆就是磁道(track),不同磁盘的相同磁道组成磁柱(Cylinder),磁柱是分区(par ...

  3. Linux 磁盘管理(分区、创建文件系统、挂载)

    Linux设备文件可以分为两类 b : 按块为单位,随机访问设备(块设备文件)  如:硬盘 c : 按字符为单位,线性设备(字符设备文件)  如:键盘 设备文件位于/dev下 主设备号(major n ...

  4. Linux 磁盘管理

    Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...

  5. Linux 磁盘管理,Linux vi/vim

    一.Linux 磁盘管理 Linux磁盘管理好坏直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 ...

  6. 九、Linux 磁盘管理

    Linux 磁盘管理 Linux磁盘管理好坏直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fd ...

  7. 吴裕雄--天生自然Linux操作系统:Linux 磁盘管理

    Linux磁盘管理好坏直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分区 ...

  8. 【Linux】linux磁盘管理

    在服务器管理中,我们会关心硬盘用了多少,还有多少剩余空间,哪些文件占用空间最大等等.以便我们在合适的时机为服务器添加硬盘分区以及管理磁盘文件等操作,让磁盘的利用率最大化,现在我们看下linux系统中和 ...

  9. Linux 磁盘管理(df fu fdisk mkfs mount)

    Linux 磁盘管理 Linux磁盘管理好坏直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df : 列出文件系统的整体磁盘使用量 du : 检查磁盘空间使用 ...

随机推荐

  1. Atcoder Beginner Contest153E(完全背包)

    完全背包,价值取题意代价的最小值 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ],b ...

  2. 【PAT甲级】1108 Finding Average (20分)

    题意: 输入一个正整数N(<=100),接着输入一行N组字符串,表示一个数字,如果这个数字大于1000或者小于1000或者小数点后超过两位或者压根不是数字均为非法,计算合法数字的平均数. tri ...

  3. linux shell seq命令详解

    seq: squeue  是一个序列的缩写,主要用来输出序列化的东西 seq常见命令参数 用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 ...

  4. Xcode 内存泄露检查出现:nil returned from a method that is expected to return a non-null value iOS 解决方案。

    在 使用 Xcode 检查内存泄露时(cmd+shift+B)运行,出现了一个警告:nil returned from a method that is expected to return a no ...

  5. jmeter实现一次登录,多次业务请求(不同线程组间共享cookie和变量)

    实现目的 很多时候,在进行性能测试时,需要先登录,然后再对需求的事务进行相关性能测试,此时的登录操作,并不在本次性能测试的范围内,所以我们只需要登录一次,然后获取登录成功后的cookie等,并将coo ...

  6. 解密国内BAT等大厂前端技术体系-美团点评之上篇(长文建议收藏)

    引言 进入2019年,大前端技术生态似乎进入到了一个相对稳定的环境,React在2013年发布至今已经6年时间了,Vue 1.0在2015年发布,至今也有4年时间了. 整个业界在前端框架不断迭代中,也 ...

  7. Kmp算法浅谈

    Kmp算法浅谈 一.Kmp算法思想 在主串和模式串进行匹配时,利用next数组不改变主串的匹配指针而是改变模式串的匹配指针,减少大量的重复匹配时间.在Kmp算法中,next数组的构建是整个Kmp算法的 ...

  8. VS Code的git配置

    最近打算使用VS Code作为python的编辑器,这里记录一下VS Code中git的配置方法 因为vscode中git只是使用本地的git,所以本地必须先安装git才行. 1.git的安装 git ...

  9. 《实战Java高并发程序设计》读书笔记三

    第三章 JDK并发包 1.同步控制 重入锁:重入锁使用java.util.concurrent.locks.ReentrantLock类来实现,这种锁可以反复使用所以叫重入锁. 重入锁和synchro ...

  10. Python(三)enumerate函数

    原文链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177932 ...