-
硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成
-
Linux系统中硬件设备相关配置文件存放在
/dev/下
,常见硬盘命名:/dev/hda、/dev/sda、/dev/sdb、/dev/sdc、/dev/vda。不同硬盘接口,在系统中识别的设备名称不一样。 -
IDE硬盘接口
在Linux中设备名为/dev/hda
,SAS、SCSI、SATA硬盘接口在Linux中设备名为sda
,高效云盘
硬盘接口会识别为/dev/vda
等。 -
文件储存在硬盘上,
硬盘的最小存储单位叫做Sector(扇区)
,每个Sector储存512字节
。操作系统在读取硬盘的时候,不会逐个Sector的去读取,这样效率非常低,为了提升读取效率,操作系统会一次性连续读取多个Sector,即一次性读取多个Sector称为一个Block(块
。 -
由多个Sector组成的Block是文件存取的最小单位。Block的大小常见的有
1KB、2KB、4KB
,Block在Linux中常设置为4KB,即连续八个Sector组成一个Block
。 -
/boot分区Block一般为1KB,而/data/分区或者/分区的Block为4K
-
linux 系统查看分区的Block大小方法:
[root@hbs ~]# stat anaconda-ks.cfg |grep -i “block”
Size: 1511 Blocks: 8 IO Block: 4096 regular file
[root@hbs ~]#
[root@hbs ~]# stat /boot/|grep “IO Block”
Size: 4096 Blocks: 8 IO Block: 4096 directory
[root@hbs ~]#
- Mount命令工具主要用于将设备或者分区挂载至Linux系统目录下,Linux系统在分区时,也是基于mount机制将/dev/sda分区挂载至系统目录,将设备与目录挂载之后,Linux操作系统方可进行文件的存储。
mount [-Vh]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,…]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
-V: 显示mount工具版本号;
-l: 显示已加载的文件系统列表;
-h: 显示帮助信息并退出;
-v: 输出指令执行的详细信息;
-n: 加载没有写入文件/etc/mtab中的文件系统;
-r: 将文件系统加载为只读模式;
-a: 加载文件/etc/fstab中配置的所有文件系统;
-o: 指定mount挂载扩展参数,常见扩展指令:rw、remount、loop等,其中-o相关指令如下:
-o atime: 系统会在每次读取文档时更新文档时间;
-o noatime: 系统会在每次读取文档时不更新文档时间;
-o defaults: 使用预设的选项 rw,suid,dev,exec,auto,nouser等;
-o exec 允许执行档被执行;
-o user、-o nouser: 使用者可以执行 mount/umount的动作;
-o remount: 将已挂载的系统分区重新以其他再次模式挂载;
-o ro: 只读模式挂载;
-o rw: 可读可写模式挂载;
-o loop 使用loop模式,把文件当成设备挂载至系统目录。
-t: 指定mount挂载设备类型,常见类型nfs、ntfs-3g、vfat、iso9660等,其中-t相关指令如下:
iso9660 光盘或光盘镜像;
msdos Fat16文件系统;
vfat Fat32文件系统;
ntfs NTFS文件系统;
ntfs-3g 识别移动硬盘格式;
smbfs 挂载Windows文件网络共享;
nfs Unix/Linux文件网络共享。
- MOUNT 常用案例
mount /dev/sdb1 /data 挂载/dev/sdb1分区至/data/目录
mount /dev/cdrom /mnt 挂载Cdrom光盘至/mnt目录;
mount -t ntfs-3g /dev/sdc /data1 挂载/dev/sdc移动硬盘至/data1目录;
mount -o remount,rw / 重新以读写模式挂载/系统;
mount -t iso9660 -o loop centos7.iso /mnt 将centos7.iso镜像文件挂载至/mnt目录;
mount -t fat32 /dev/sdd1 /mnt 将U盘/dev/sdd1挂载至/mnt/目录;
mount -t nfs 192.168.10.11:/data/ /mnt 将远程192.168.10.11:/data目录挂载至本地/mnt目录。
- 使用 gdisk 创建一个 500M 的 xfs 文件系统,并将它挂载到 /data/test目录下
1.列出所有磁盘
[admin@rivers~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 10G 0 part /
├─sda4 8:4 0 5G 0 part /home
└─sda5 8:5 0 1G 0 part [SWAP]
sr0 11:0 1 4.2G 0 rom /run/media/admin/CentOS 7 x86_64
2. 查看磁盘分区表类型
[admin@rivers~]$ sudo parted /dev/sda print
[sudo] admin 的密码:
Model: VMware, VMware Virtual S (scsi) # (厂商)模块名称
Disk /dev/sda: 42.9GB # 磁盘总容量
Sector size (logical/physical): 512B/512B # 物理扇区容量
Partition Table: gpt # 这里显示是gpt格式
Disk Flags: pmbr_boot
Number Start End Size File system Name 标志
1 1049kB 3146kB 2097kB bios_grub
2 3146kB 1077MB 1074MB xfs
3 1077MB 11.8GB 10.7GB xfs
4 11.8GB 17.2GB 5369MB xfs
5 17.2GB 18.3GB 1074MB linux-swap(v1)
[admin@rivers~]$
3.使用gdisk 创建分区
[admin@rivers~]$ sudo gdisk /dev/sda
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): ? # ? 命令帮助,想到fdisk中的m
b back up GPT data to a file
c change a partition’s name
d delete a partition # 删除一个分区
i show detailed information on a partition
l list known partition types
n add a new partition # 增加一个分区
o create a new empty GUID partition table (GPT)
p print the partition table #打印出分区表 (常用)
q quit without saving changes # 不保存分区直接离开
r recovery and transformation options (experts only)
s sort partitions
t change a partition’s type code
v verify disk
w write table to disk and exit #保存分区后离开
x extra functionality (experts only)
? print this menu
Command (? for help): p
Disk /dev/sda: 83886080 sectors, 40.0 GiB # 磁盘文件名/扇区总数与总容量
Logical sector size: 512 bytes # 单一扇区大小为512 bytes
Disk identifier (GUID): 00B9BA4D-D71C-462B-82F4-091B4C43A1D5 #磁盘的GPT标识码
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 83886046
Partitions will be aligned on 2048-sector boundaries
Total free space is 48230333 sectors (23.0 GiB) # 下面为完整的分区信息
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02 # 第一个分区信息
2 6144 2103295 1024.0 MiB 0700
3 2103296 23074815 10.0 GiB 0700
4 23074816 33560575 5.0 GiB 0700
5 33560576 35657727 1024.0 MiB 8200
Command (? for help): n # 新增加一个
Partition number (6-128, default 6): # 标识符
First sector (34-83886046, default = 35657728) or {±}size{KMGTP}: # 开始扇区
Last sector (35657728-83886046, default = 83886046) or {±}size{KMGTP}: +500M
Current type is ‘Linux filesystem’
Hex code or GUID (L to show codes, Enter = 8300): #在分区内可能的文件系统类型 8300
Changed type of partition to ‘Linux filesystem’
Command (? for help): p
Disk /dev/sda: 83886080 sectors, 40.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 00B9BA4D-D71C-462B-82F4-091B4C43A1D5
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 83886046
Partitions will be aligned on 2048-sector boundaries
Total free space is 47206333 sectors (22.5 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 6143 2.0 MiB EF02
2 6144 2103295 1024.0 MiB 0700
3 2103296 23074815 10.0 GiB 0700
4 23074816 33560575 5.0 GiB 0700
5 33560576 35657727 1024.0 MiB 8200
6 35657728 36681727 500.0 MiB 8300 Linux filesystem
8300 linux 文件系统
8200 swap 文件系统
Command (? for help): w # 保存
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y # 按Y 退出
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
[admin@rivers~]$
[admin@rivers~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 10G 0 part /
├─sda4 8:4 0 5G 0 part /home
└─sda5 8:5 0 1G 0 part [SWAP]
sr0 11:0 1 4.2G 0 rom /run/media/admin/CentOS 7 x86_64
4. 更新linux 内核的分区表信息
[admin@rivers~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 10G 0 part /
├─sda4 8:4 0 5G 0 part /home
├─sda5 8:5 0 1G 0 part [SWAP]
└─sda6 8:6 0 500M 0 part
sr0 11:0 1 4.2G 0 rom /run/media/admin/CentOS 7 x86_64
[admin@rivers~]$
5.格式化刚建立的分区
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
90)]
[外链图片转存中…(img-qRjDXSBS-1711774606590)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-pWzCWP6F-1711774606591)]
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。
Mybatis源码解析
[外链图片转存中…(img-cJ7vhl4C-1711774606591)]
[外链图片转存中…(img-CNMckK8r-1711774606591)]