磁盘管理

一、磁盘的物理组成

1、组成
圆形的磁盘盘
机械手臂,与在机械手臂上的磁盘读取头
主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据
磁盘盘:存储数据
如下图:
在这里插入图片描述
2、磁盘的文件名
/dev/sd[a-p][1-128]:实体磁盘的文件名
/dev/vd[a-d][1-128]:虚拟磁盘的文件名
/dev/md[1-128]:软件磁盘的文件名
只有将磁盘分区格式化之后,才能成为操作系统能够利用的文件系统格式
3、机械磁盘内部组成原理
盘面platter
磁道track
扇区sector
柱面Cylinder
硬盘的容量=柱面数(磁道数)×磁头数 ×单磁道扇区数 ×单个容量扇区大小(一般初始为512字节)
在这里插入图片描述
3、MBR
MBR(主引导记录区)位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了 DPT(硬盘分区表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。

	[root@localhost ~]# dd if=/dev/sda of=/tmp/mbr bs=1 count=512
	[root@localhost ~]# hexdump -C /tmp/mbr
	00000000  eb 48 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.H..............|
	00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
	00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
	00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 03 02  |.........|...t..|
	00000040  80 00 00 80 72 62 00 00  00 08 fa 90 90 f6 c2 80  |....rb..........|
	00000050  75 02 b2 80 ea 59 7c 00  00 31 c0 8e d8 8e d0 bc  |u....Y|..1......|
	00000060  00 20 fb a0 40 7c 3c ff  74 02 88 c2 52 f6 c2 80  |. ..@|<.t...R...|
	00000070  74 54 b4 41 bb aa 55 cd  13 5a 52 72 49 81 fb 55  |tT.A..U..ZRrI..U|
	00000080  aa 75 43 a0 41 7c 84 c0  75 05 83 e1 01 74 37 66  |.uC.A|..u....t7f|
	00000090  8b 4c 10 be 05 7c c6 44  ff 01 66 8b 1e 44 7c c7  |.L...|.D..f..D|.|
	000000a0  04 10 00 c7 44 02 01 00  66 89 5c 08 c7 44 06 00  |....D...f.\..D..|
	000000b0  70 66 31 c0 89 44 04 66  89 44 0c b4 42 cd 13 72  |pf1..D.f.D..B..r|
	000000c0  05 bb 00 70 eb 7d b4 08  cd 13 73 0a f6 c2 80 0f  |...p.}....s.....|
	000000d0  84 f0 00 e9 8d 00 be 05  7c c6 44 ff 00 66 31 c0  |........|.D..f1.|
	000000e0  88 f0 40 66 89 44 04 31  d2 88 ca c1 e2 02 88 e8  |..@f.D.1........|
	000000f0  88 f4 40 89 44 08 31 c0  88 d0 c0 e8 02 66 89 04  |..@.D.1......f..|
	00000100  66 a1 44 7c 66 31 d2 66  f7 34 88 54 0a 66 31 d2  |f.D|f1.f.4.T.f1.|
	00000110  66 f7 74 04 88 54 0b 89  44 0c 3b 44 08 7d 3c 8a  |f.t..T..D.;D.}<.|
	00000120  54 0d c0 e2 06 8a 4c 0a  fe c1 08 d1 8a 6c 0c 5a  |T.....L......l.Z|
	00000130  8a 74 0b bb 00 70 8e c3  31 db b8 01 02 cd 13 72  |.t...p..1......r|
	00000140  2a 8c c3 8e 06 48 7c 60  1e b9 00 01 8e db 31 f6  |*....H|`......1.|
	00000150  31 ff fc f3 a5 1f 61 ff  26 42 7c be 7f 7d e8 40  |1.....a.&B|..}.@|
	00000160  00 eb 0e be 84 7d e8 38  00 eb 06 be 8e 7d e8 30  |.....}.8.....}.0|
	00000170  00 be 93 7d e8 2a 00 eb  fe 47 52 55 42 20 00 47  |...}.*...GRUB .G|
	00000180  65 6f 6d 00 48 61 72 64  20 44 69 73 6b 00 52 65  |eom.Hard Disk.Re|
	00000190  61 64 00 20 45 72 72 6f  72 00 bb 01 00 b4 0e cd  |ad. Error.......|
	000001a0  10 ac 3c 00 75 f4 c3 00  00 00 00 00 00 00 00 00  |..<.u...........|
	000001b0  00 00 00 00 00 00 00 00  9b dd 02 00 00 00 80 20  |............... |
	000001c0  21 00 83 9f 06 19 00 08  00 00 00 40 06 00 00 9f  |!..........@....|
	000001d0  07 19 83 fe ff ff 00 48  06 00 00 00 40 01 00 fe  |.......H....@...|
	000001e0  ff ff 82 fe ff ff 00 48  46 01 00 00 40 00 00 00  |.......HF...@...|
	000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
	00000200
	mbr信息:
	1、最前面的一列是8进制的位偏移,所以每行有16个字节了。
	2、mbr总共512字节,前446个字节是主引导记录,是bios加电自检后要运行的代码
	3、从第447个字节开始后的64个字节,每16个字节为一组,是硬盘分区表,就是上面彩色标记的部分了。
	 所以在MBR环境下主分区只能有4个,每个分区最大为2T
	4、55aa是硬盘有效标志

4、分区
在这里插入图片描述

二、磁盘分区核心命令介绍

1、fdisk命令
查看系统的分区详细信息

[root@localhost ~]# fdisk -l
Disk /dev/loop0: 3916 MB, 3916431360 bytes
64 heads, 32 sectors/track, 3735 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x47840dcd

  Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *           1        3735     3824640   17  Hidden HPFS/NTFS

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002dd9b

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1332    10485760   83  Linux
/dev/sda3            1332        1593     2097152   82  Linux swap / Solaris

对磁盘进行分区

[root@localhost ~]# fdisk /dev/sda     #对sda磁盘进行分区
Command (m for help): m    #输出帮助信息
Command action
a   toggle a bootable flag     #设置启动分区
b   edit bsd disklabel      #编辑分区标签
c   toggle the dos compatibility flag
d   delete a partition      #删除一个分区
l   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 disklabel
t   change a partition's system id     #改变分区的ID
u   change display/entry units     #改变显示的单位
v   verify the partition table     #检查验证分区表
w   write table to disk and exit     #保存分区表
x   extra functionality (experts only)
Command (m for help): n
Command action
e   extended                          #e是扩展分区
p   primary partition (1-4)      #p是主分区
p
Selected partition 4       #定义分区号 --主分区最多只能有四个
First cylinder (1593-2610, default 1593):
Using default value 1593
Last cylinder, +cylinders or +size{K,M,G} (1593-2610, default 2610): +100M
Command (m for help): w
The partition table has been altered!
#保存刚才的配置信息
 [root@localhost ~]# partx -a /dev/sda     #对硬盘进行更新
    Device Boot      Start         End      Blocks   Id  System
 /dev/sda1   *           1          26      204800   83  Linux
 Partition 1 does not end on cylinder boundary.
 /dev/sda2              26        1332    10485760   83  Linux
 /dev/sda3            1332        1593     2097152   82  Linux swap / Solaris
 /dev/sda4            1593        1606      111459   83  Linux
 [root@localhost ~]# mkfs.ext4 /dev/sda4      #需要先进行格式化,才能使用
 [root@localhost ~]# mount /dev/sda4 /mnt/sda4/     #进行挂载使用
 [root@localhost ~]# df -h     #查看

2、ext系列文件系统的管理工具

mkfs.ext2, mkfs.ext3, mkfs.ext4    

3、ext系列文件系统专用管理工具:mke2fs

 -t {ext2|ext3|ext4}:指明要创建的文件系统类型
 mkfs.ext4 = mkfs -t ext4 = mke2fs -t ext4
 -b {1024|2048|4096}:指明文件系统的块大小
 -L LABEL:指明卷标
 -i#:指明inode与字节的比率;即每多少字节创建一个Indode
-N# :直接指明要给此文件系统创建的inode的数量
-m #:指定预留的空间,百分比

4、 e2label命令:卷标的查看与设定

 查看:e2label device
 设定:e2label device LABEL

5、resize2fs:调整ext2\ext3\ext4文件系统的大小

-f:强制执行

6、e2fsck:磁盘修复 检查时先卸载

-a: 检查 partition,如发现问题会自动修复  
-b: 设定 superblock 位置
-B size: 指定 size 作为区块大小
-c: 检查 partition 是否有坏轨
-C file: 将检查结果储存到 file
-f:e2fsck 预设只会对错误的文件系统检查,加上 -f 是强制检查
-F:在检查前将硬盘的 buffer cache 清空,避免发生错误
-v: 显示详细报告
-y: 启用使用者互动模式

7、fsck:检查与修复文件系统,可以同时检查一个或者多个

-s : 依序一个一个地执行 fsck 的指令来检查
-A : 对/etc/fstab 中所有列出来的 partition 做检查
-a : 如果检查有错则自动修复
-r : 如果检查有错则由使用者回答是否修复

8、blkid命令获取文件系统类型 UUID

blkid device
blkid -L LABEL:根据LABEL定位设备
blkid -U UUID:根据UUID定位设备

三、交换分区swap

查看当前的交换分区

[root@localhost ~]# free -m
[root@localhost ~]# swapon -s

增加交换分区

1、准备分区
 [root@localhost ~]# fdisk /dev/sdb
 [root@localhost ~]# partprobe /dev/sdb
 [root@localhost ~]# ll /dev/sdb*
2、初始化
 [root@localhost ~]# mkswap /dev/sdb1
3、挂载
 [root@localhost ~]#blkid /dev/sdb1
 /dev/sdb1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap"
 [root@localhost ~]# vim /etc/fstab
 UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap default 0 0
 [root@localhost ~]# swapon -a     #读取/etc/fstab
 [root@localhost ~]# swapon -s     #查看当前交换分区

四、磁盘挂载等相关核心工具

1、mount命令

mount -t 文件系统 -o 选项… 设备名 挂载点

defaults:Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.

-r:readonly,只读挂载
-w:read and write, 读写挂载
-n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性
-t vfstype:指明要挂载的设备上的文件系统的类型
-L LABEL:挂载时以卷标的方式指明设备
-U:UUID:挂载时以UUID的方式指明设备
-o:指定挂载选项

查看当前系统所有已挂载的设备:
#mount
#cat /etc/mtab
#cat /proc/mounts

2、umount命令

umount device|directory
正在使用的挂载点是无法被卸载的

查看被哪个或哪些进程所占用:
#lsof MOUNT_POINT
#fuser -v MOUNT_POINT

终止所有正在访问某挂载点的进程:
#fuser -km MOUNT_POINT

3、lsof命令

列出当前系统打开文件

[root@localhost ~]# lsof
COMMAND    PID    USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
init         1    root  cwd       DIR                8,2     4096          2 /
init         1    root  rtd       DIR                8,2     4096          2 /
init         1    root  txt       REG                8,2   150352     397278 /sbin/init
init         1    root  mem       REG                8,2    65960     395612 /lib64/libnss_files-2.12.so
init         1    root  mem       REG                8,2  1923352     395596 /lib64/libc-2.12.so
init         1    root  mem       REG                8,2    90880     393227 /lib64/libgcc_s-4.4.7-    20120601.so.1
输出各列信息的意义:
COMMAND:进程的名称 
PID:进程标识符  
USER:进程所有者 
FD: 文件描述符,应用程序通过文件描述符识别该文件
TYPE:文件类型,如DIR、REG等常见的文件类型
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识) NAME:打开文件的确切名称

选项:
lsof -c abc :显示abc进程现在打开的文件
lsof -c -p 1234 :列出进程号为1234的进程所打开的文件
lsof -g gid :显示归属gid的进程情况
lsof -i :用以显示符合条件的进程情况

4、du命令

命令选项

-a   #显示目录中文件的大小  单位 KB 
-b   #显示目录中文件的大小,以字节byte为单位
-c   #显示目录中文件的大小,同时也显示总和;单位KB
-s   #仅显示目录的总值,单位KB
5、/etc/fstab文件

系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中就不需要每次开机启动之后手动进行挂载了。

挂载限制:

  • 根目录是必须挂载的,而且一定要先于其他mount point被挂载。

  • 挂载点必须是已经存在的目录。

  • 挂载点的指定可以任意,但必须遵守必要的系统目录架构原则

  • 所有挂载点在同一时间只能被挂载一次

  • 所有分区在同一时间只能挂载一次

  • 若进行卸载,必须将工作目录退出挂载点(及其子目录)之外

    [root@localhost ~]# cat /etc/fstab
    #
    #/etc/fstab
    #Created by anaconda on Sat Mar 21 06:10:44 2020
    #
    #Accessible filesystems, by reference, are maintained under '/dev/disk'
    #See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    UUID=476298de-c4c5-4eb4-b34f-f33a8d7223b8 /      ext4    defaults   1 1
    UUID=6b61a948-3588-41d0-a60f-a561491d23d2 /boot  ext4    defaults   1 2
    UUID=2f9147e2-b6c8-42e2-8724-97d1afcd0b37 swap   swap    defaults   0 0
    tmpfs                   /dev/shm      tmpfs   defaults        0 0
    devpts                  /dev/pts      devpts  gid=5,mode=620  0 0
    sysfs                   /sys          sysfs   defaults        0 0
    proc                    /proc         proc    defaults        0 0
    /dev/sr0                /media          iso9660 defaults      0 0
    
    第一列:Divice:磁盘设备文件或者设备的Lable页或UUID
           查看UUID和Lable的命令:# dumpe2fs -h /dev/sda1 
                                 # blkid
    第二列:Mount point:设备的挂载点,就是你要挂载到哪个目录下
    第三列:filesystem:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等 
    第四列:parameters:文件系统的参数
    第五列:能否被dump备份命令作用:dump是一个用来作为备份的命令。通常这个参数的值为0或者1
           0 :代表不要做dump备份
           1 :代表要每天进行dump的操作
           2 :代表不定日期的进行dump操作
    第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整
           0 :不检验
           1 :最早检验(一般根目录会选择使用2)
           2: 1级别检验完成之后进行检验
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值