磁盘基础知识

简介:

新加硬盘识别   (磁盘设备名是不稳定的 在生产中有关磁盘的配置文件 需注意)

[root@centos6 httpd-2.4.27]#echo '- - -'>/sys/class/scsi_host/host2/scan

块设备:block,存取单位,磁盘       随机读写        /dev/sda

字符设备:char,存取单位字符,键盘  顺序读写     /dev/zero  /dev/null

设备号码:

主设备号major number, 标识设备类型

次设备号minor number, 标识同一类型下的不同设备

[root@centos6 httpd-2.4.27]#ll /dev/sd*

brw-rw----. 1 root disk 8,  0 Aug  1 21:14 /dev/sda

brw-rw----. 1 root disk 8, 1 Aug  1 21:14 /dev/sda1

[root@centos6 httpd-2.4.27]#ll /dev/zero

crw-rw-rw-. 1 root root 1, 5 Aug  1 21:14 /dev/zero

[root@centos6 httpd-2.4.27]#cp -a /dev/sda /app           

[root@centos6 httpd-2.4.27]#ll /app/sda

brw-rw----. 1 root disk 80 Aug  1 21:14 /app/sda           cp -a 复制设备保留全属性

[[root@centos6 httpd-2.4.27]#mknod /app/sda1 b 8 1     app下创建与/dev/sda1相同的块设备

[root@centos6 httpd-2.4.27]#ll /app

total 4

 

brw-rw----. 1 root disk 8, 0 Aug  1 21:14 sda

brw-r--r--. 1 root root 8, 1 Aug  2 19:18 sda1              设备号相同 但权限发生改变

[root@centos6 httpd-2.4.27]#mkdir /mnt/sda1

[root@centos6 httpd-2.4.27]#mount /app/sda1 /mnt/sda1         

[root@centos6 httpd-2.4.27]#df

Filesystem     1K-blocks    Used Available Use% Mounted on

/dev/sda2       50264772 4227636  43477136   9% /

tmpfs             953640     228    953412   1% /dev/shm

/dev/sda3        9948012   22476   9413536   1% /app

/dev/sda1         999320   40128    906764   5% /boot

/dev/sr0         3878870 3878870         0 100% /media/CentOS_6.9_Final

/app/sda1         999320   40128    906764   5% /mnt/sda1

[root@centos6 httpd-2.4.27]#cd /mnt/sda1

[root@centos6 sda1]#ls

config-2.6.32-696.el6.x86_64  initramfs-2.6.32-696.el6.x86_64.img    symvers-2.6.32-696.el6.x86_64.gz

efi                           initrd-2.6.32-696.el6.x86_64kdump.img  System.map-2.6.32-696.el6.x86_64

grub                          lost+found                             vmlinuz-2.6.32-696.el6.x86_64

[root@centos6 sda1]#cd /boot

[root@centos6 boot]#ls

config-2.6.32-696.el6.x86_64  initramfs-2.6.32-696.el6.x86_64.img    symvers-2.6.32-696.el6.x86_64.gz

efi                           initrd-2.6.32-696.el6.x86_64kdump.img  System.map-2.6.32-696.el6.x86_64

grub                          lost+found 

/app/sda1 /dev/sda1为相同设备号 为同一设备 它们的挂载点/mnt/sda1  /boot访问内容相同

[root@centos6 boot]#umount /mnt/sda1           取消挂载

 

CHS Ü 采用24bit位寻址 Ü 其中前10位表示cylinder,中间8位表示head,后面6位表示 sector Ü 最大寻址空间8GB

LBAlogical block addressing Ü LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址 Ü LBA采用48bit位寻址 Ü 最大寻址空间128PB

磁盘容量大于大概8GB时,则只能使用LBA寻址方式

 

两种分区方式:MBRGPT

MBR  使用32位表示扇区 数,分区不超过2T

v0磁道0扇区就叫MBR

512bytes            446bytes: boot loader 

                              启动计算机和出错信息   MBR+BIOS 操作系统启动

                              64bytes:分区表 重要

                      存的是硬盘的分区情况  16bytes标识一个分区 最多4 只有一个活动分区

                              2bytes: 55AA   重要

                              表示磁盘是有分区的

v4个主分区;3主分区+1扩展(N个逻辑分区)

 

 GPT

 使用128UUID(Universally Unique Identifier) 表示磁盘 和分区

GPT分区表自动备份在头和尾两份,并有CRC校验位 v

UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动    GPT+UEFI 操作系统启动

EFI部分又可以分为5个区域:MBR保护区(MBR兼容)EFI信息区(GPT头部)、分区表、GPT分区、备份区域

MBR+BIOS sda  + gpt sdb  (MBR保护区与MBR兼容)

 

管理分区

v 列出块设备 • lsblk

创建分区使用:

 • fdisk 创建MBR分区

 • gdisk 创建GPT分区

 • parted 高级分区操作

parted命令

parted的操作都是实时生效的,小心使用

用法:parted [选项]... [设备 [命令 [参数]...]...]

 parted /dev/sdb mklabel gpt|msdos    指明分区方式

 parted /dev/sdb print             显示硬盘分区信息

parted /dev/sdb mkpart primary 1 200 (默认M  创建分区

 parted /dev/sdb rm 1   删除分区 

parted -l 查看分区类型

 

[root@centos6 ~]#lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sr0     11:0    1  3.7G  0 rom  /media/CentOS_6.9_Final

sda      8:0    0  200G  0 disk

├─sda1   8:1    0    1G  0 part /boot

├─sda2   8:2    0 48.8G  0 part /

├─sda3   8:3    0  9.8G  0 part /app

├─sda4   8:4    0    1K  0 part

└─sda5   8:5    0    2G  0 part [SWAP]

sdb      8:16   0   20G  0 disk

sdc      8:32   0   30G  0 disk

sdd      8:48   0   40G  0 disk

sde      8:64   0   50G  0 disk

[root@centos6 ~]#hexdump -c -n 512 /dev/sdb                        sdb512个字节   5a为为空的 未分区

0000000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0

*

0000200

[root@centos6 ~]#parted /dev/sdb mklabel gpt

[root@centos6 ~]#hexdump -C -n 512 /dev/sdb

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

*

000001c0  01 00 ee fe ff ff 01 00  00 00 ff ff 7f 02 00 00  |................|

000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

*

000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|    55 aaMBR保护区  MBR兼容

[root@centos6 ~]#parted /dev/sdb print

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

 

Number  Start  End  Size  File system  Name  Flags

[root@centos6 ~]#parted /dev/sdb mkpart primary 1 1024

[root@centos6 ~]#parted /dev/sdb print

Number  Start   End     Size    File system  Name     Flags

 1      1049kB  1024MB  1023MB               primary

 

[root@centos6 ~]#parted /dev/sdb mklabel msdos

[root@centos6 ~]#parted /dev/sdb print

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

 

Number  Start  End  Size  Type  File system  Flags

由于表结构不同 gpt msdosMPR)转换为破坏性转换  禁止该操作

[root@centos6 ~]#parted /dev/sdb mkpart primary 1 1024

[root@centos6 ~]#parted /dev/sdb mkpart primary 1025 3045

[root@centos6 ~]#parted /dev/sdb print

Number  Start   End     Size    Type     File system  Flags

[root@centos6 ~]#parted /dev/sdb print

 1      1049kB  1024MB  1023MB  primary

 2      1025MB  3045MB  2020MB  primary

[root@centos6 ~]#parted /dev/sdb rm 2

 

分区工具fdiskgdisk

gdisk 处理gpt分区

               gdisk|fdisk /dev/sda 管理分区如创建等     在创建分区切勿操作如 gdisk|fidsk /dev/sda1 错误操作

[root@centos6 ~]#dd if=/dev/zero of=/dev/sdb bs=1 count=512

[root@centos6 ~]#gdisk -l /dev/sdb

Number  Start (sector)    End (sector)  Size       Code  Name

   1            2048         2000895   976.0 MiB   8300  Linux filesystem

   2         2000896         6291456   2.0 GiB     8300  Linux filesystem

   3         6293504        16779263   5.0 GiB     8300  Linux filesystem

对于gpt分区 破坏文件的分区表  由于gpt存在备份区域 所以无影响

对于MBR分区 如果一个磁盘已经分区 破坏分区表 分区会被破坏  已分区变为未分区磁盘

[root@centos6 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=512

清空/dev/sda 磁盘分区表  破坏引导启动 破坏分区   生产中切勿此操作

 

[root@centos7 ~]$dd if=/dev/sdb of=/dev/sdc bs=1 count=512

sdc分区与同sdb分区相同 因为分区表一样  使其分区大小 分区类型相同

 

同步分区表

 

    分区表在磁盘的mbr分区以及内存中  /dev/sdd为例

           parted /dev/sdd print ; gdisk|fdisk -l /dev/sdd   查看磁盘的分区表

  lsblk  ; ls /dev/sdd*; cat /etc/partitions 查看保存在内存中分区表

     

 将磁盘分区同步到内存中

CentOS 57: 使用partprobe

  partprobe [/dev/DEVICE]

  partprobe /dev/sdd

Centos6: 

对新增分区  partx -a /dev/DEVICE

kpartx -a /dev/DEVICE -f: force

 对删除分区用 (对比磁盘内存分区表 进行删除)partx -d --nr M-N /dev/DEVICE

 

工具dd 写入磁盘

/dev/zero------文件代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。

/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶

 

备份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

 

v 备份 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压缩,保存到指定路径 v

v恢复 dd if=/path/to/image of=/dev/sdx 将备份文件恢复到指定盘

  gzip -dc /path/to/image.gz | dd of=/dev/sdx 将压缩的备份文件恢复到指定盘

 

v修复硬盘

dd if=/dev/sda of=/dev/sda 当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会 产生消磁点。当磁头读到这些区域时会遇到困难,并可能 导致I/O错误。当这种情况影响到硬盘的第一个扇区时, 可能导致硬盘报废。上边的命令有可能使这些数据起死回 ,且这个过程是安全高效的

 



本文转自 工运搬运维 51CTO博客,原文链接:http://blog.51cto.com/13157015/2044481,如需转载请自行联系原作者

相关文章
|
7月前
|
存储 缓存 算法
【自己动手画CPU】存储系统设计
博文“【自己动手画CPU】存储系统设计”探讨了在自制 CPU 中存储系统的设计。存储系统是计算机中至关重要的组成部分,负责存储和检索数据。文章介绍了在 DIY CPU 中实现存储系统的关键考虑因素,包括存储器的类型、存储器与 CPU 的连接方式以及数据存取的速度和效率。通过深入探讨存储系统的设计原理和实现方式,读者可以更好地理解计算机内部结构,并且为自己动手设计和构建 CPU 提供了有益的指导和启发。
186 0
【自己动手画CPU】存储系统设计
|
2月前
|
存储
硬盘碎片整理的原理是什么?
硬盘碎片整理的原理是什么?
120 4
|
2月前
|
存储 固态存储 算法
硬盘碎片整理的作用
硬盘碎片整理的作用
184 5
|
7月前
|
存储 缓存 Windows
探秘磁盘的奥秘:物理结构、缓存和虚拟内存的作用
本文介绍了磁盘的物理结构、磁盘缓存和虚拟内存的重要性,并解释了它们在计算机系统中的作用。了解磁盘的物理结构可以帮助我们更好地理解数据的存储和访问过程,从而进行系统优化和性能提升。磁盘缓存和虚拟内存则能够提高数据读取速度和运行程序的能力。深入了解这些知识,将为您的计算机系统带来更好的性能和效率。
316 1
|
存储 编译器 C++
深度剖析数据在内存中的存储(下)(适合初学者)
深度剖析数据在内存中的存储(下)(适合初学者)
97 0
深度剖析数据在内存中的存储(下)(适合初学者)
|
存储 程序员 编译器
【C/C++知识点】程序内存分区
【C/C++知识点】程序内存分区
122 0
|
存储
数据在内存中的存储【下篇】
数据在内存中的存储【下篇】
86 0
|
存储 监控 NoSQL
内存基础知识
内存基础知识
151 0
内存基础知识
|
存储 机器学习/深度学习 编译器
【C进阶】第十篇——数据在内存中的存储
【C进阶】第十篇——数据在内存中的存储
【C进阶】第十篇——数据在内存中的存储
|
存储
硬盘是什么?工作原理是什么?底层原理是什么?
硬盘是什么?工作原理是什么?底层原理是什么?
821 0