1. 磁盘介绍
机械硬盘 读取数据靠的是。 磁头读取磁片上的数据。
中间的马达带动 磁片的转动, 磁头从内向外,再从外向内的读取数据。 读写的快慢取决于磁片的转动速度。
磁面: 正反面都是可以写数据的。
磁柱: 正反两面都可以写数据,所以正反两面中间的就叫磁柱
磁道:就是磁面上一圈一圈的东西
磁盘的 0 磁道再最外圈。
MBR不小于512字节。446主引导程序,64的分区表(一个分区16字节,所以磁盘的主分区+扩展分区不能大于4)
开机 ==> 主板工作 ==> blos芯片工作(检查所有硬件是否好用, 加载CMOS) (进入磁盘读取前512字节, 从硬件过渡到软件启动)
固态硬盘靠的是 内部的 存储颗粒,基于电信号的存储数据
2.分区介绍以及分区
hard disk
1) 分区 fdisk
[root@python ~]# fdisk -l 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000bf194 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux # 前面有个 * 号,就是启动标识 /dev/sda2 2099200 83886079 40893440 8e Linux LVM 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节
如何分区?
[root@python ~]# fdisk /dev/sdb
[root@python ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x107e0a5e 创建新的 DOS 磁盘标签。 命令(输入 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 获取帮助):l 0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris 1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx 5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据 6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具 8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt 9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问 a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC 11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor 14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要 16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS 17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动 1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep 1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT 1e 隐藏的 W95 FAT1 80 旧 Minix 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 分区号 (1-4,默认 1):1 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+888M 分区 1 已设置为 Linux 类型,大小设为 888 MiB 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x107e0a5e 设备 Boot Start End Blocks Id System /dev/sdb1 2048 1820671 909312 83 Linux 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): e 分区号 (2-4,默认 2):3 起始 扇区 (1820672-41943039,默认为 1820672): 将使用默认值 1820672 Last 扇区, +扇区 or +size{K,M,G} (1820672-41943039,默认为 41943039): 将使用默认值 41943039 分区 3 已设置为 Extended 类型,大小设为 19.1 GiB 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x107e0a5e 设备 Boot Start End Blocks Id System /dev/sdb1 2048 1820671 909312 83 Linux /dev/sdb3 1820672 41943039 20061184 5 Extended 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l 添加逻辑分区 5 起始 扇区 (1822720-41943039,默认为 1822720): 将使用默认值 1822720 Last 扇区, +扇区 or +size{K,M,G} (1822720-41943039,默认为 41943039):+5G 分区 5 已设置为 Linux 类型,大小设为 5 GiB 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x107e0a5e 设备 Boot Start End Blocks Id System /dev/sdb1 2048 1820671 909312 83 Linux /dev/sdb3 1820672 41943039 20061184 5 Extended /dev/sdb5 1822720 12308479 5242880 83 Linux 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@python ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l 添加逻辑分区 6 起始 扇区 (12310528-41943039,默认为 12310528): 将使用默认值 12310528 Last 扇区, +扇区 or +size{K,M,G} (12310528-41943039,默认为 41943039):+5G 分区 6 已设置为 Linux 类型,大小设为 5 GiB 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@python ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l 添加逻辑分区 7 起始 扇区 (22798336-41943039,默认为 22798336): 将使用默认值 22798336 Last 扇区, +扇区 or +size{K,M,G} (22798336-41943039,默认为 41943039):+2G 分区 7 已设置为 Linux 类型,大小设为 2 GiB 命令(输入 m 获取帮助):t 分区号 (1,3,5-7,默认 7):7 Hex 代码(输入 L 列出所有代码):82 已将分区“Linux”的类型更改为“Linux swap / Solaris” 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x107e0a5e 设备 Boot Start End Blocks Id System /dev/sdb1 2048 1820671 909312 83 Linux /dev/sdb3 1820672 41943039 20061184 5 Extended /dev/sdb5 1822720 12308479 5242880 83 Linux /dev/sdb6 12310528 22796287 5242880 83 Linux /dev/sdb7 22798336 26992639 2097152 82 Linux swap / Solaris 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。
3.文件系统以及格式化
格式化其实就是在硬盘中 装一个管家。 这个管家负责数据的 写入,取出等等的事情。(这个管家 就叫文件系统。格式化的目的就是 安装一个文件系统。让他负责管理数据。)
mkfs -build a Linux filesystem
语法: mkfs [options] device
-t 指定文件类型。 (man mount ==> /-type 查看所有的文件系统)
==> 主分区格式化为 ext4
[root@python ~]# fdisk -l /dev/sdb 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x107e0a5e 设备 Boot Start End Blocks Id System /dev/sdb1 2048 1820671 909312 83 Linux /dev/sdb3 1820672 41943039 20061184 5 Extended /dev/sdb5 1822720 12308479 5242880 83 Linux /dev/sdb6 12310528 22796287 5242880 83 Linux /dev/sdb7 22798336 26992639 2097152 82 Linux swap / Solaris [root@python ~]# mkfs -t ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 56896 inodes, 227328 blocks 11366 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=232783872 7 block groups 32768 blocks per group, 32768 fragments per group 8128 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (4096 blocks): 完成 Writing superblocks and filesystem accounting information: 完成
==> 分一个扩展分区。 两个逻辑驱动器 格式化为: xfs ext3
[root@python ~]# mkfs -t ext3 /dev/sdb5 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@python ~]# mkfs -t xfs /dev/sdb6 meta-data=/dev/sdb6 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 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
===> 格式化一个交换分区
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x107e0a5e 设备 Boot Start End Blocks Id System /dev/sdb1 2048 1820671 909312 83 Linux /dev/sdb3 1820672 41943039 20061184 5 Extended /dev/sdb5 1822720 12308479 5242880 83 Linux /dev/sdb6 12310528 22796287 5242880 83 Linux /dev/sdb7 22798336 26992639 2097152 82 Linux swap / Solaris [root@python ~]# mkswap /dev/sdb7 正在设置交换空间版本 1,大小 = 2097148 KiB 无标签,UUID=b8b4db74-8659-4b55-a35f-bd47b14bcde9
blkid 命令查看,所有磁盘设备的UUID
4.挂载以及自动挂载
~~~ linux中的所有设备必须经过挂载才可以被用户
~~~挂载的方式其实就是将 某个设备挂到文件系统中的文件夹。(或者可以理解为映射) 对文件夹的操作就是对设备的操作。
mount
mount -mount a filesystem
语法: mount device dir
-a 挂载所有文件系统, 参考文件/etc/fastab
-l 显示当前挂载
-t 文件系统类型
-o 指定挂在权限
手动挂载: 将/dev/sdb1 这个东西挂载到 opt/data1 上面
[root@python ~]# mount -t ext4 /dev/sdb1 opt/data1
[root@python ~]# mount -o ro /dev/sdb5 opt/data2 # 只读挂载
-o 就是用来指定权限的。 只读 只写 等等。
umount
umount 卸载文件系统
-l 懒惰卸载。 (有人在使用时是不能卸载的。 -l 在其他人不使用时自动卸载。)
[root@python ~]# umount /dev/sdb1 # 卸载源 [root@python ~]# umount opt/data2 # 卸载目标
两种方式 都可以将文件系统卸载掉
1
2 #
3 # /etc/fstab
4 # Created by anaconda on Thu May 16 05:23:30 2019
5 #
6 # Accessible filesystems, by reference, are maintained under '/dev/disk'
7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
8 #
9 /dev/mapper/centos_python-root / xfs defaults 0 0
10 UUID=25ca20c2-4d47-4f1d-ac1f-e66c63acd77d /boot xfs defaults 0 0
11 /dev/mapper/centos_python-swap swap swap defaults 0 0
14 ##sdb
15 /dev/sdb1 /root/opt/data1 ext4 defaults 0 0
16 /dev/sdb5 /root/opt/data2 ext3 ro 0 0
17 /dev/sdb6 /root/opt/data3 xfs rw 0 0
18 /dev/sdb7 swap swap defaults 0 0
# swap 挂载时,只能挂载到 swap 分区! 其他地方是不行的。
[root@python ~]# mount -a [root@python ~]# mount -l |grep sdb /dev/sdb1 on /root/opt/data1 type ext4 (rw,relatime,seclabel,data=ordered) /dev/sdb5 on /root/opt/data2 type ext3 (ro,relatime,seclabel,data=ordered) /dev/sdb6 on /root/opt/data3 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
[root@python ~]# swapon -a # 挂载 swap 交换分区。
[root@python ~]# free -m # 查看内存的 total used free shared buff/cache available Mem: 1819 1246 153 13 419 308 Swap: 6143 1 6142
#### 挂载 swap 时 就不能使用 mount -a 进行挂载了。
挂载 swap 需要的时 swapon -a 这个命令, 它也会去自动的读取 /etc/fatab 这个文件进行挂载。
其他命令
df 查看磁盘分区的使用情况。
-t 显示文件系统类型
-h 显示文件大小
du 查看文件的大小
4) 读 取 数据
之后就可以使用啦-。- 不演示了!