网站优化哪里可以做物联网平台网站
Linux-磁盘管理介绍
计算硬盘介绍
硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成;
- cylinder:柱面
 - sector:扇区 
- 磁道与磁道之间是有间距的;
 - 每一个扇区存储512字节
 
 - head:磁头
 
Linux系统中存放硬件设备的目录:/dev/
block是文件存储的最小单位
block以及inode的讲解
文件的存储分为两个部分
- 文件内容–>block
 - 权限以及文件属性–>inode
 
其中还有一个就是超级快:SuperBlock
- SuperBlock记录文件的整体信息: 
- 包括block和inode总量、使用的大小、剩余大小等等
 
 
总结:
- Superblock:记录文件系统的整体信息,包括inode与block的总量、使用大小、剩余大小, 以及文件系统的格式与相关信息等;
 - Inode:记录文件的属性,权限,同时会记录该文件的数据所在的block编号;
 - Block:存储文件的内容,如果文件超过默认Block大小,会自动占用多个Block。
 
操作系统进行格式化分区时,操作系统自动将硬盘分成两个区域。
- 一个是数据Block区,用于存放文件数据;
 - 另一个是Inode Table区,用于存放inode包含的元信息。
 - 格式化信息的时候是可以指定每个block的大小 
- 128B、256B、等等
 
 
#查看分区的inode大小
[root@Test0 ~]# dumpe2fs  /dev/sda1 | grep "Inode size"
dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/sda1 时#这两条命令,都出现有报错,原因是我们的系统使用了xfs-->需要另外一个命令查看
[root@Test0 ~]# tune2fs  -l /dev/sda2 |grep "Inode size"
[root@Test0 ~]# xfs_info /dev/sda1 
meta-data=/dev/sda1              isize=512    agcount=4, agsize=65536 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=262144, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0#这样子也能查看文件的大小
[root@Test0 ~]# stat /boot/  |grep Inode
设备:801h/2049d	Inode:64          硬链接:5
 
在给硬盘分区的时候,到格式化的步骤的时候,可以指定block的大小
- mkfs 硬盘名 
- -b:可以直接指定block块的大小
 
 
软链接和硬链接的介绍
文件名和inode编号是有对应关系的
- 一个inod对应一个文件
 - 也可以多个文件指向一个inode
 
硬链接的好处
- 可以备份文件;防止误删除
 - 有相同的inode号;误删源文件–>链接文件还能使用
 - 硬链接只能对文件生效
 - 硬链接无法跨分区创建;
 
创建硬链接
- ln 源文件 目标文件
 
[root@Test0 sh]# ln aa.txt  aa.txt.hard
[root@Test0 sh]# ll -i ./aa*
17544472 -rw-r--r-- 2 root root  0 3月  13 06:42 ./aa.txt
17544472 -rw-r--r-- 2 root root  0 3月  13 06:42 ./aa.txt.hard
 
软链接介绍
- 软链接有点想windows上面的链接文件
 
软链接功能
- 软链接可以跨分区;
 - 支持链接目录也支持文件
 - inode号不同,
 - 源文件存在,链接文件可以使用,
 - 源文件删除了,软链接没法使用
 
创建软连接
- ln -s 源文件 目标文件
 
#创建软连接
[root@Test0 sh]# ln -s aa.txt aa.txt.soft
[root@Test0 sh]# ll -i aa.txt*
17544472 -rw-r--r-- 2 root root 0 3月  13 06:42 aa.txt
17544472 -rw-r--r-- 2 root root 0 3月  13 06:42 aa.txt.hard
17544479 lrwxrwxrwx 1 root root 6 3月  13 06:48 aa.txt.soft -> aa.txt
 
磁盘实操过程讲解
Linux中一切的硬件设备都是需要挂载才能使用,因此硬盘也是不例外;
如果添加了硬盘之后–>需要在/dev/目录中查看是否有识别到硬盘
#查看硬盘是否识别
[root@Test0 ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdc#或者是使用fdisk 命令也能查看
[root@Test0 ~]# fdisk  -l 
添加新硬盘操作:
在虚拟机添加硬盘的操作就不做解释了;也不做笔记了,做了很多很多;
- 首先对硬盘进行分区 
- 实验中第一块sdb硬盘,我们使用MBR分区;
 - 使用的命令就是fdisk命令
 
 
#对硬盘进行分区
[root@Test0 ~]# fdisk /dev/sdb 
.........
命令(输入 m 获取帮助):m			#输入m获取帮助
命令操作a   toggle a bootable flag				b   edit bsd disklabelc   toggle the dos compatibility flagd   delete a partition						#扇区分区g   create a new empty GPT partition table	#创建gpt标签G   create an IRIX (SGI) partition tablel   list known partition types				#列出已分区信息m   print this menu							#获取帮助信息n   add a new partition						#添加新分区o   create a new empty DOS partition table	#创建dos分区标签p   print the partition table				#显示分区信息-->分区好之后使用q   quit without saving changes				#不保存退出s   create a new empty Sun disklabelt   change a partition's system id			#指定分区idu   change display/entry unitsv   verify the partition tablew   write table to disk and exit				#保存并且退出x   extra functionality (experts only)
命令(输入 m 获取帮助):n					#添加分区
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p				#选择是主分区还是拓展分区-->默认不填就是主分区	
分区号 (1-4,默认 1):1				#选择分区号-->不填就是默认1
起始 扇区 (2048-41943039,默认为 2048):		#开始的扇区
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G	#指定分区的大小
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p					#列出已经分区的信息
...............设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352    12584959     4194304   83  Linux#如果想删除分区
命令(输入 m 获取帮助):d  
分区号 (1,2,默认 2):2
分区 2 已删除#保存退出
命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。#查看一下是否成功
[root@Test0 ~]# ls /dev/sdb1
/dev/sdb1
 
- 然后格式化硬盘 
- 格式化就是创建文件系统
 - 使用的命令就是mkfs.ext4
 
 
#查看一下有多少命令是可以进行分区的
[root@Test0 ~]# mkfs
mkfs         mkfs.btrfs   mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.ext4    mkfs.minix   mkfs.xfs#对sdb1进行分区
[root@Test0 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=131072 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, 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
 
- 最后是挂载使用 
- 创建一个目录用于挂载sdb1
 - 最好不要使用已经有数据的目录,因为会覆盖;
 
 
#创建目录
[root@Test0 ~]# mkdir  /sbd1#直接挂载使用
[root@Test0 ~]# mount /dev/sdb1 /sdb1#查看一下是否挂载
[root@Test0 ~]# df -h | grep sdb1
/dev/sdb1                2.0G   33M  2.0G    2% /sdb1
[root@Test0 ~]# 
 
fdisk命令
作用:对硬盘进行分区–>MBR分区
语法:fdisk+选项+硬盘
选项:
- -b:编辑bsd disklabel;
 - -c:切换dos兼容性标志;
 - -d:删除一个分区;
 - -g:创建一个新的空GPT分区表;
 - -G:创建一个IRIX(SGI)分区表;
 - -l:列出已知的分区类型;
 - -m:打印帮助菜单;
 - -n:添加一个新分区;
 - -o:创建一个新空DOS分区表;
 - -p:打印分区表信息;
 - -q:退出而不保存更改;
 - -s:创建一个新的空的Sun磁盘标签;
 - -t:更改分区的系统ID;
 - -u:更改显示/输入单位;
 - -v:验证分区表;
 - -w:将分区表写入磁盘并退出;
 - -x:额外功
 
GPT格式文件系统
如果硬盘的容量大于2TB的话,可以使用GPT格式;
parted命令是用于GPT格式的分区
实验过程:
- 首先需要把分区类型改为gpt格式;
 - 然后创建文嘉系统
 - 然后挂载使用
 
#修改硬盘的分区格式
[root@Test0 ~]# parted -s /dev/sdc mklabel gpt#基于ext4文件系统类型格式化
[root@Test0 ~]# mkfs.ext4 /dev/sdc
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdc is entire device, not just one partition!
无论如何也要继续? (y,n) y   
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 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, 1605632, 2654208, 4096000Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   #然后挂载使用
[root@Test0 ~]# mount /dev/sdc /sdb1/#检查一下[root@Test0 ~]# df -h 
........
/dev/sdc                  20G   45M   19G    1% /sdb1
 
第二种直接使用parted命令进行分区
#直接输入parted
[root@Test0 ~]# parted
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.#然后选择硬盘
(parted) select  /dev/sdc                                                 
使用 /dev/sdc#然后创建格式类型
(parted) mklabel gpt                                                      
警告: 正在使用 /dev/sdc 上的分区。
忽略/Ignore/放弃/Cancel? Ignore   		#这里会询问你是否确定-->输入忽略就可以了#然后最后一次确认
警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to
continue?
是/Yes/否/No? yes      	#直接选择yes#把整块硬盘进行分区,分配一个分区
(parted) mkpart primary 0 -1                                              
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? ignore    #查看一下就发现成功了
(parted) print                                                            
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start   End     Size    File system  Name     标志1      17.4kB  21.5GB  21.5GB               primary#退出
(parted) quit  #然后创建文件系统
[root@Test0 ~]# mkfs.xfs  /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=1310658 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242631, 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#最后挂载使用
[root@Test0 ~]# mount /dev/sdc1 /sdb1/
[root@Test0 ~]# df -h | grep sdb
/dev/sdc1                 20G   33M   20G    1% /sdb1 
mount命令
作用:对硬盘设备进行挂载;是一个用于挂载的工具
语法:mount + 选项+ 设备
选项:
- -V:查看版本号
 - -l:查看已加载的列表
 - -h:列出信息
 - -v:输出指令执行的详细信息;
 - -n:加载没有写入文件/etc/mtab中的文件系统;
 - -r:将文件系统加载为只读模式;
 - -a:加载文件/etc/fstab中配置的所有文件系统;
 - -o: 指定mount挂载扩展参数,常见扩展指令:rw、 
- -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:光盘或光盘镜像;
 - msdos:Fat16文件系统;
 - vfat:Fat32文件系统;
 - ntfs:NTFS文件系统;
 - ntfs-3g:识别移动硬盘格式;
 - smbfs:挂载Windows文件网络共享;、
 - nfs :Unix/Linux文件网络共享。
 
 
实际操作案例讲解:
#正常挂载使用
[root@Test0 ~]# mount /dev/sdb1 /sdb1/#挂载光盘镜像-->使用-t参数-->指定类型是iso9660
[root@Test0 ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载#重新挂载/目录,并且指定权限
[root@Test0 ~]# mount -o remount,rw /#卸载操作
[root@Test0 ~]# umount  /dev/cdrom 
[root@Test0 ~]# 
