一。 磁盘物理结构
磁盘是永久存储数据的物理介质
内部结构图如下(图片和物理结构引用自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查看所有命令