磁盘结构
盘片:硬盘有多个盘片,每盘片有2面(正反两面)
磁头:每面一个磁头,并不是只有一个磁头,磁头也不会碰到盘面,磁头等于盘片数量
硬盘的数据结构
扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大) 存放数据的最小单位 512字节
磁道:同一盘片不同半径的同心圆
柱面:不同盘片相同半径构成的圆(柱面和磁道数量相同)
不难看出读取速度还是外面快一点
一个扇区 512 字节
硬盘存储容量
硬盘存储容量=磁头数(8个2进制)×磁道(柱面)数×每道扇区数(6个二进制)×每扇区字节数
1柱面=512 * 扇区数/磁头数×磁道=51263255=7.84M
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
硬盘接口的类型
机械机械 硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电
- 固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单 元(FLASH芯片、DRAM芯片)组成。
MBR与磁盘分区
为什么分区
优化I/O性能 读写
实现磁盘空间配额限制
提高修复速度
隔离系统和程序
安装多个OS
采用不同文件系统
MBR 分区 (老的技术) GPT 分区(新技术) 2T 以下 的硬盘 fdisk 可以支持 2T 以上的硬盘 gdisk
MBR: 一共 512 字节,主引导记录, 是硬盘上的第一个扇区, 想要读数据得从这个扇区开始 前 446 字节 开机引导程序,引导硬件找到我们的操作系统 后64字节分区表 表明了分区的范围,分区从哪里到那里结束 最后两字节代表MBR结束位 66 /16 =4 ............2
MBR 分区只可以分4个分区, 一个分区表要占 16字节
扩展分区:不可以直接使用, 需要再 划分逻辑分区, 让分区超过4个
逻辑分区:可以直接使用, 存储文件
扩展分区是特殊的主分区
主分区的序号为 1-4
逻辑分区的序号 从5 开始
文件系统
内核中的模块:ext4, xfs, vfat
Linux的虚拟文件系统:VFS
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
常见的硬件设备在/dev目录下
[root@localhost test]# ll /dev/sd* brw-rw----. 1 root disk 8, 0 4月 15 13:39 /dev/sda brw-rw----. 1 root disk 8, 1 4月 15 13:39 /dev/sda1 brw-rw----. 1 root disk 8, 2 4月 15 13:39 /dev/sda2 brw-rw----. 1 root disk 8, 16 4月 15 13:39 /dev/sdb brw-rw----. 1 root disk 8, 32 4月 15 13:39 /dev/sdc brw-rw----. 1 root disk 8, 33 4月 15 13:39 /dev/sdc1 brw-rw----. 1 root disk 8, 37 4月 15 13:39 /dev/sdc5
文件系统 | 最大文件支持 | 最大文件系统支持 | 特性 |
---|---|---|---|
XFS | 8EB | 8EB | - 64位文件系统 - 快速恢复磁盘文件 - 优化的日志算法 - 接近裸设备I/O的性能 |
Swap | 无(非文件存储) | 无(虚拟内存) | - 内存的虚拟扩展 - 当RAM不足时使用 - 过多配置可能导致浪费 |
FAT16/32 | FAT32 最大 4GB | FAT32 最大 32GB | - 简单、广泛兼容 - 单个文件最大4GB - 分区最大32GB |
NTFS | 64GB | 不明(大于64GB) | - 错误预警 - 磁盘自我修复 - 日志功能 |
EXT4 | 16TB | 1EB | - 支持纳秒级时间戳 - 最大文件系统1EB - 最大文件16TB - 适用于不太大的分区,如/boot |
JFS | 16TB | 1PB | - 为服务器高吞吐量和可靠性设计 - 单个文件最大16TB - 文件系统最大支持1PB |
添加磁盘
[root@localhost /]# rscan [root@localhost /]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 49G 0 part ├─centos-root 253:0 0 47G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
创建分区:
[root@localhost /]# fdisk 用法: fdisk [选项] <磁盘> 更改分区表 fdisk [选项] -l <磁盘> 列出分区表 fdisk -s <分区> 给出分区大小(块数) 选项: -b <大小> 扇区大小(512、1024、2048或4096) -c[=<模式>] 兼容模式:“dos”或“nondos”(默认) -h 打印此帮助文本 -u[=<单位>] 显示单位:“cylinders”(柱面)或“sectors”(扇区,默认) -v 打印程序版本 -C <数字> 指定柱面数 -H <数字> 指定磁头数 -S <数字> 指定每个磁道的扇区数 [root@localhost /]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x3a730f47 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):y y: unknown command 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) 命令(输入 m 获取帮助):^C [root@localhost /]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0xc83cbe11 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 分区号 (1-4,默认 1): 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):20480 分区 1 已设置为 Linux 类型,大小设为 9 MiB 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): e 分区号 (2-4,默认 2): 起始 扇区 (20481-41943039,默认为 22528): 将使用默认值 22528 Last 扇区, +扇区 or +size{K,M,G} (22528-41943039,默认为 41943039): 将使用默认值 41943039 分区 2 已设置为 Extended 类型,大小设为 20 GiB 命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。
blkid
可以查看块设备属性信息
[root@localhost /]# blkid /dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" /dev/sda1: UUID="7f69d7b0-f61d-4348-a220-242866ae685a" TYPE="xfs" /dev/sda2: UUID="i1RJlM-mpgD-XyQP-jA8O-vekT-JaJL-w9DSpe" TYPE="LVM2_member" /dev/mapper/centos-root: UUID="f93daaff-d3bc-48d2-9989-4d01c3621cbe" TYPE="xfs" /dev/mapper/centos-swap: UUID="3ccc073a-2c11-4c7b-96aa-d138f46fcca3" TYPE="swap"
lsblk
[root@localhost /]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 49G 0 part ├─centos-root 253:0 0 47G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 9M 0 part └─sdb2 8:18 0 1K 0 part sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
永久挂载
需要 将文件写入 /etc/fstab
格式:
UUID=7f69d7b0-f61d-4348-a220-242866ae685a /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0