您的位置:首页 > 其它

简要概述磁盘相关概念

2017-07-31 11:15 916 查看
一。 磁盘物理结构

    磁盘是永久存储数据的物理介质

    内部结构图如下(图片和物理结构引用自http://soysauce93.blog.51cto.com/7589461/1715655):

    






 磁头(head)数:每个盘片一般有上下两面,分别对应1个磁头,共2个磁头,实现数据的存取 (也就是盘片正反面都能存储)
 磁道(track):当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道,从外边缘的0开始        编号,根据磁化方向来存数数据0和1 (判断最外面的一圈就是0号磁道)
柱面(cylinder):不同盘片的相同编号的磁道构成的圆柱面就被称之为柱面,磁盘的柱面数与一个盘面上的磁道数是相等的
扇区(sector):每个磁道都别切分成很多扇形区域,每个磁道的扇区数量相同,每个扇区大小为512字节
圆盘(platter):就是硬盘的盘片,为实现大容量,一般都是多个

    硬盘的容量=圆盘数×磁道数×磁头数×扇区数×512(字节数)

二。 磁盘逻辑结构

   每台计算机拥有多个磁盘 每个磁盘使用前必须分区即定义好文件的组织形式  目前磁盘分区的两种格式为 MBR和GPT 分区是由 逻辑快组成  

每个快都是由1个或者多个扇区组成

  1》MBR(Master Boot Record) 磁盘的开头部分定义分区表 该分区表为 64字节 每个分区的参数为16字节 所以最多能

定义 64/16=4个分区 4个分区在window体现为 window磁盘 盘符(CDEF) Linux体现为几个文件系统(挂载到目录) 四个分区

有时很难满足日常所需 将分区分为 主分区和拓展分区  主分区实际上就是已经确定好的分区盘符 拓展分区是不能直接使用的空间

必须将他拆分成多个独立的逻辑分区 才能使用 这里拆出来的逻辑分区和主分区 对于用户来说都是一样的

   一般在之前的32位系统上 磁盘分区 基本使用MBR 在主分区安装操作系统时 一般会在主分区磁盘下 有个Boot.ini文件 使用BIOS引导

    MBR的缺点:只能存在4个主分区,分区表只有一份 如果损坏磁盘就挂了

 

  2》GPT(GUID分区表)在64上渐渐取代了MBR 每一个分区上都有一个唯一的GUID 可以支持无线的主分区 不再需要拓展分区 GPT会保存

 分区表的多个备份 一旦损坏 使用备份自动还原 在分区安装操作系统 一般使用的是UEFI引导 UEFI系统引导文件会存在一个单独的主分区上

 


window磁盘 可以使用 PartitionMagic等软件

linux上可以使用 fdisk(2T以下分区)或者parted命令(2T以上)

 3》文件系统

   通过分区将不同的磁盘拆分为不同物理盘 不同盘之间互不响应  每一个物理盘 都必须要格式化为特定的文件系统 文件系统表示文件的存储和归档格式

 比如window常用的FAT32和NTFS  linux (EXT2,EXT3,EXT4,XFS)等

    window下 NTFS对比与FAT32优点  通过标准事务日志功能与恢复技术确保卷的一致性。如果系统出现故障,NTFS能够使用日志文件与检查点信息来恢复文件系统的一致性,碎片少、性能佳、安全性强、可压缩NTFS里所有文件、设定权限、配额、支持单个文件大于4GB等

   linux下 centos7.0开始默认文件系统是xfs,centos6是ext4,centos5是ext3,xfs是一种非常优秀的日志文件系统,它是SGI公司设计的。xfs被称为业界最先进的、最具可升级性的文件系统技术

 4》分区常用命令演示

》》fdisk分区命令演示

    通过虚拟机模拟添加磁盘

    虚拟机右键 设置-添加 -磁盘

    


  重新启动虚拟机 后  

   fdisk -l

[root@ha1 ~]# fdisk -l

Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0007d8da

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4812799     2098176   82  Linux swap / Solaris
/dev/sda3         4812800   167772159    81479680   83  Linux

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
两个Disk  分别为  /dev/sda 和 /dev/sdb(新增加的磁盘  为 2G) 

可以看到 sda被分成了三个分区 sdb还没有任何分区  

通过 Sector size (logical/physical): 512 bytes / 512 bytes     知道 扇区的大小为 512字节 明显是MBR分区

                                                                                                           如果扇区的大小为4K 表示是GPT分区

可以看到对应的挂载目录

[root@ha1 ~]# df -T
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3       81439896 3177912  78261984   4% /
devtmpfs          925136       0    925136   0% /dev
tmpfs             934328       0    934328   0% /dev/shm
tmpfs             934328    8788    925540   1% /run
tmpfs             934328       0    934328   0% /sys/fs/cgroup
/dev/sda1         303788  108712    195076  36% /boot
tmpfs             186868       0    186868   0% /run/user/0
开始对新增的/dev/sdb 进去分区 假设分为两个分区

fdisk /dev/sdb

常用命令

p 打印所有的分区

n 新建一个分区

Command (m for help): n
Partition type:
p   primary (0 primary, 0 extended, 4 free)  主分区 自动重建4个
e   extended                                 拓展分区 可以创建逻辑分区
Select (default p): p
Partition number (1-4, default 1):              分区编号 分区命名是 磁盘名+编号 比如sda1
First sector (2048-4194303, default 2048): 0    第一个删除的编号 默认从 2048开始
Value out of range.
First sector (2048-4194303, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): 2100000   结束的扇区 比如最大 4194303/2就是一半空间

Partition 1 of type Linux and of size 1 GiB is set    大概就是1G了

Command (m for help): n                   再次创建一个主分区
Partition type:
p   primary (1 primary, 0 extended, 3 free)
e   extended
Select (default p): p
Partition number (2-4, default 2):
First sector (2100001-4194303, default 2101248): 2100001   从上一次的20000001下一个扇区开始
Last sector, +sectors or +size{K,M,G} (2100001-4194303, default 4194303): 直接回车就是讲所有的剩余空间给第二个分区
Using default value 4194303
Partition 2 of type Linux and of size 1022.6 MiB is set

Command (m for help): n
Partition type:
p   primary (2 primary, 0 extended, 2 free)
e   extended
Select (default p): p
Partition number (3,4, default 3):
No free sectors available     创建第三个分区时 没有剩余空间了
w  保存分区写入磁盘  并且退出 fdisk命令

d  删除输入的分区编号指定的分区
m 帮助命令

o 创建空的dos头 可以显示所有的磁盘大小等信息

l 列表显示所有的分区类型 我这里不支持 比如FAT32 等

t 转换分区的类型为 l列表显示的编号 即可修改分区

g 将磁盘转换为GPT分区格式

分区后的磁盘需要格式化为指定文件系统才能进行文件存储  linux格式化命令:mkfs

查看mkfs支持的文件系统类别

[root@ha1 ~]# whereis mkfs
mkfs: /usr/sbin/mkfs /usr/sbin/mkfs.cramfs /usr/sbin/mkfs.minix /usr/sbin/mkfs.xfs /usr/sbin/mkfs.btrfs /usr/sbin/mkfs.ext2 /usr/sbin/mkfs.ext3 /usr/sbin/mkfs.ext4 /usr/share/man/man8/mkfs.8.gz
明显有mkfx.xfs  mkfx.ext2  mkfx.ext3  mkfx.ext4

执行命令  mkfx.文件系统名  分区名称

[root@ha1 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=256    agcount=4, agsize=131007 blks
=                       sectsz=512   attr=2, projid32bit=1
=                       crc=0        finobt=0
data     =                       bsize=4096   blocks=524027, imaxpct=25
=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


访问分区 必须挂载到目录  如果直接访问

[root@ha1 ~]# cd /dev/sdb1
-bash: cd: /dev/sdb1: Not a directory
[root@ha1 ~]# mkdir /sdb1
[root@ha1 ~]# mount /dev/sdb1 /sdb1
可以直接访问 /sdb1

查看剩余空间和挂载的目录
[root@ha1 sdb1]# df -Thl
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda3      xfs        78G  3.1G   75G   4% /
devtmpfs       devtmpfs  904M     0  904M   0% /dev
tmpfs          tmpfs     913M     0  913M   0% /dev/shm
tmpfs          tmpfs     913M  8.6M  904M   1% /run
tmpfs          tmpfs     913M     0  913M   0% /sys/fs/cgroup
/dev/sda1      xfs       297M  107M  191M  36% /boot
tmpfs          tmpfs     183M     0  183M   0% /run/user/0
/dev/sdb1      xfs       2.0G   33M  2.0G   2% /sdb1
》》parted分区命令演示
parted 磁盘路径 进入parted命令

常用命令

help 显示所有的命令

print 打印当前分区信息

mklabel 分区类型  比如 mklable gpt|msdos 
删除分区  rm 输入分区编号
创建分区 mkpart 输入主分区还是拓展分区 输入文件系统类型 同时输入开始的大小的位置和结束位置的大小

(parted) mkpart
Partition type?  primary/extended? primary
File system type?  [ext2]? ext4
Start?
Start? 0
End? 2100M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start  End     Size    Type     File system  Flags
1      512B   2100MB  2100MB  primary
fdisk查看

[root@ha1 ~]# fdisk -l

Disk /dev/sdb: 3221 MB, 3221225472 bytes, 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00078785

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1     4101562     2050781   83  Linux
/dev/sdb2         4102144     6291455     1094656   83  Linux


格式化分区和挂载 同fdisk方式

》》lvm分区命令演示

  什么是LVM?LVM(Logical Volume Manager)逻辑卷管理 是通过一个抽象的磁盘管理层 来管理物理磁盘或者分区   管理层管理的物理磁盘或者分区对用户

不可见  管理层 可以将这些物理的磁盘分区 进行逻辑拆分为新的分区  这个逻辑分区当容量不足时 lvm可以动态扩容

  图示(图片来源于jb51):

   


概念理解:

1. PV(Physical Volume):物理卷,处于LVM最底层,可以是物理硬盘或者分区。     

2. PE(Physical Extend):物理区域,PV中可以用于分配的最小存储单元,可以在创建PV的时候指定,如1M, 2M, 4M, 8M, 32M, 64M…组成同一VG中所有PV的PE大小应该相同。     

3.VG(Volume Group):卷组,建立在PV之上,可以含有一个到多个PV。    

4. LV(Logical Volume):逻辑卷,建立在VG之上,相当于原来分区的概念。不过大小可以动态改变。

lvm安装

   加载device-mapper模块   modprobe dm_mod

   yum安装  yum install lvm2

环境测试

创建一个VG有多个PV组成

   假设有sdb设备分为两个区  sdb1 sdb2 (parted分区  mkfs格式化)

   PV 就是 sdb1 和sdb2 两个  使用pvcreate创建

[root@ha1 /]# pvcreate /dev/sdb1
WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[root@ha1 /]# pvcreate /dev/sdb2
WARNING: ext4 signature detected on /dev/sdb2 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb2.
Physical volume "/dev/sdb2" successfully created.


   VG 就是 两个pv组成

    将上面两个pv放在同一个VG中 VG就可以逻辑分区了

[root@ha1 /]# vgcreate myvg /dev/sdb1 /dev/sdb2
Volume group "myvg" successfully created
  从VG是从sbd1和sdb2组成的实际物理大小就是sdb1+sdb2大小之和

  开始创建LV

  

[root@ha1 /]# lvcreate -L 300M -n mylv myvg   从myvg的卷组中 分出一个逻辑卷 名称为mylv
Logical volume "mylv" created.
格式化挂载同fdisk

[root@ha1 /]# fdisk -l

Disk /dev/mapper/myvg-mylv: 314 MB, 314572800 bytes, 614400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@ha1 /]# mkfs.ext4 /dev/mapper/myvg-mylv
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
76912 inodes, 307200 blocks
15360 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33947648
38 block groups
8192 blocks per group, 8192 fragments per group
2024 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

[root@ha1 /]# mount /dev/mapper/myvg-mylv /mylv


其他lvm命令

lvremove :删除一个 LV !

vgremove 删除vg

pvremove 删除pv

lvscan  查看所有的逻辑卷

vgscan 查看所有的卷组

pvsan   查看所有的物理卷

lvm 后输入help查看所有命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐