Linux磁盘管理

磁盘使用三步曲

1.管理磁盘分区(创建分区)

2.创建文件系统(格式化分区) 

3.挂载文件系统

磁盘结构

       物理结构

  • 磁头 每面一个磁头
  • 盘片 磁盘有一个或多个盘片 每盘面2面

       数据结构

  • 扇区 是硬盘最小的存储单位 每扇区一般存放512字节数据
  • 磁道 同一盘片不同半径的同心圆,磁头在盘片表面划出的圆形轨迹
  • 柱面 不同盘片相同半径构成的圆柱面,由同一半径的圆的多个磁道组成

        磁盘接口类型

        IDE SATA SCSI SAS 光纤通道

硬盘存储容量 = 磁头数 x 磁道(柱面)x 每磁道扇区数 x 每扇区字节数

主引导记录MBR与磁盘分区

主引导记录Master Boot Record

主引导记录 (MBR: Master Boot Record)

MBR位于硬盘第一个物理扇区处
MBR中包含硬盘的主引导程序和硬盘分区表

MBR共512字节,前446字节为主引导程序,分区表保存在447-510字节中。

分区表有4个分区记录区,每个分区记录占16个字节

Linux将硬盘、分区等设备均表示为文件

磁盘分区结构

 

硬盘中的主分区数目只有4个

主分区和扩展分区的序号限制在1~4
扩展分区再分为逻辑分区

逻辑分区的序号将始终从5开始

/dev/hda5

硬件设备所在目录hd IDE设备 sd SCSI设备 硬盘顺序号a,b,c... 分区顺序号1,2,3...

主启动记录(MBR)磁盘分区支持最大卷为2.2TB,

每个磁盘最多有4个主分区,或3个主分区和1个扩展分区。在扩展分区里面分多个逻辑分区

若需要更大的磁盘大小,则需要划分GPT磁盘而不是MBR

文件系统类型

XFS

存放文件和目录数据的分区

高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万 TB的存储空间。

CentOS7系统中默认使用的文件系统

SWAP

为 Linux系统建立交换分区

一般设置为物理内存的1.5~2倍

Linux支持的其他文件系统

EXT4(CentOS7默认) FAT32   NTFS   LVM


检测并确认新硬盘 fdisk lsblk scan

查看或管理磁盘分区

fdisk -l [磁盘]

等同

fdisk [磁盘]

-m p n d t w q

gdisk -l [磁盘]
#gdisk又叫GPT fdisk,是fdisk的延伸,主要使用的是GPT分区类型,用来划分容量大于2T的硬盘

Device(设备):分区的设备文件名称。

Boot:是否是引导分区。若是,则有”*"标识。

start:该分区在硬盘中的起始位置(柱面数)
End:该分区在硬盘中的结束位置(柱面数)

Blocks:分区的大小,以 Blocks (块)为单位,默认的块大小为 1024 字节。

Id:分区对应的系统 ID 号。例如,83表示Linux中的XFS分区或EXT4分区、8e表示LVM逻辑卷

System:分区类型。

lsblk
也可以查看挂载情况

添加新磁盘

 先在虚拟机中添加新的虚拟硬盘,为接下来操作准备

添加完磁盘可通过重启或者以下命令在线刷新

echo "- - -" > /sys/class/scsi_host/host0/scan

echo "- - -" > /sys/class/scsi_host/host1/scan

echo "- - -" > /sys/class/scsi_host/host2/scan

#0 1 2为第一个磁盘 第二个磁盘 第三个磁盘

再使用 fdisk -l 查看,显示新硬盘

1.管理磁盘分区(创建分区)MBR方式

fdisk /dev/sdb

 #sdb:管理scsi硬盘—b硬盘

交互模式中的常用指令:

m:获取帮助菜单
n:新建分区
p:查看分区情况
d:删除分区
t:变更分区的类型

w:保存分区操作并退出

q:不保存分区操作并退出

创建主分区

  1. fdisk /dev/sdb 
  2. 输入n (创建分区)
    1. 输入p(创建主分区)[e为扩展分区,相当于外壳,逻辑分区需要依赖扩展分区]
    2. 输入分区号(1-4)
    3. 输入起始扇区(一般默认 直接回车)
    4. 输入最后扇区(若指定大小 输入 + [大小] K/M/G,默认全部分配
  3. 输入W保存
fdisk /dev/sdb 


命令(输入 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):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB



命令(输入 m 获取帮助):W
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

创建逻辑分区

  1. fdisk /dev/sdb 
  2. 输入n(创建分区)
    1. 输入e(创建扩展分区)[e为扩展分区,相当于外壳,逻辑分区需要依赖扩展分区]
    2. 输入分区号(从5开始)
    3. 输入起始扇区(一般默认 直接回车)
    4. 输入最后扇区(若指定大小 输入 + [大小] K/M/G,默认全部分配)
  3. 输入n (创建分区)
    1. 输入l(创建逻辑分区)[只有创建扩展分区之后才能在扩展分区内创建逻辑分区]
    2. 输入分区号(从5开始)
    3. 输入起始扇区(一般默认 直接回车)
    4. 输入最后扇区(若指定大小 输入 + [大小] K/M/G,默认全部分配)
  4. 输入W保存
[root@xue xue]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 10 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (20975616-41943039,默认为 20975616):
将使用默认值 20975616
Last 扇区, +扇区 or +size{K,M,G} (20975616-41943039,默认为 41943039):+5G
分区 5 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

 

创建swap分区(需要更改分区格式)

  1. fdisk /dev/sdc
  2. 输入n (创建分区)
    1. 输入p(创建主分区)[e为扩展分区,相当于外壳,逻辑分区需要依赖扩展分区]
    2. 输入分区号(1-4)
    3. 输入起始扇区(一般默认 直接回车)
    4. 输入最后扇区(若指定大小 输入 + [大小] K/M/G,默认全部分配
  3. 输入t(更改分区格式)
    1. 输入L查看所有分区对应代码
    2. 输入82(Linux swap / Solaris)
  4. 输入W保存

在sdc时显示没有那个文件或目录,sdc刚刚在虚拟机添加还未刷新

使用echo "- - -" > /sys/class/scsi_host/host0/scan刷新

[root@xue xue]# fdisk /dev/sdc
fdisk: 打不开 /dev/sdc: 没有那个文件或目录
[root@xue xue]# echo "- - -" > /sys/class/scsi_host/host0/scan



[root@xue xue]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x0ffcd457 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):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
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

1.管理磁盘分区(创建分区)GPT方式  gdisk parted

gdisk

与上方fdisk操作相似

parted

parted [选项] [硬盘 [命令]]

1、查看系统分区表信息

parted /dev/sdc print

2、创建分区

parted [硬盘] mkpart 分区类型 文件系统类型 开始 结束
parted /dev/sdc mkpart primary ext3 1 2G
ext3的主分区,从磁盘的第1MB开始分区,到2GB的位置,大小为2GB的主分区

parted /dev/sdc mkpart primary ext3 2G 4G创建
创建一个容量为2GB的分区,从硬盘的第2个GB位置开始分区,到第4个GB的位置结束

3、修改分区表格式

parted /dev/sdc mklabel gpt

4、删除分区

parted /dev/sdc rm2使用

2.创建文件系统(格式化分区)

mkfs 主分区 逻辑分区 Make Filesystem创建文件系统(格式化分区)

ls /sbin/mkfs*
查看支持的文件格式
mkfs -t 文件系统类型 分区设备

将sdb2(主分区)设置为XFS文件系统

 mkfs -t xfs /dev/sdb1
文件系统格式XFS(EXT4 FAT32 NTFS) 
(sb)scsi设备
(b)第二块磁盘
(1)第一个分区

 将sdb5(逻辑分区)设置为ext4文件系统

mkfs -t ext4 /dev/sdb5
将sdb5(逻辑分区)设置为ext4文件系统

sdb2不可格式化!sdb2在之前设置为扩展分区,相当于一个外壳,里面存放逻辑分区。
扩展分区sdb2中的逻辑分区sdb5有实体才可以格式化 

mkswap 交换分区 Make swap 创建交换文件系统

mkswap 分区设备

将sdc1(swap分区)设置为swap文件系统

mkswap /dev/sdc1

变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统重启一次,或者执行"partprobe"命今使操作系统检测新的分区表情况。以防格式化分区时损坏硬盘中已有的数据。
创建文件系统创建文件系统的过程即格式化分区的过程mkfs -t xfs /dev/sdb1mkfs.xfs /dev/sdb1
创建交换文件系统创建swap之前,目标分区应先通过fdisk 工具将分区类型ID 号设为 82

 3.挂载文件系统

mount 挂载文件系统

mount [-t 类型] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
#-t可省略 系统自动识别
mkdir /guazaidian
mount /dev/sdb1 /guazaidian/
#将sdb1分区挂载到guazaidian

swap分区不用mount挂载使用swapon,下文提及

umount 卸载文件系统

umount 存储设备位置
umount 挂载点目录

若出现无法解挂的现象,可按照以下方法处理或

fuser -mv /data或者lsof +d /data

umount -lf /data
 

注意:mount挂载覆盖源文件夹 / 原理

            mount挂载文件系统原理为在磁盘1的文件夹中覆盖挂载磁盘2,例如蒸包子的梯笼 一层盖一层

            若同名文件夹存有文件,在挂载后只会显示磁盘2中的文件,挂载时对文件夹的写入在磁盘2中起作用。

            当卸载后才会重新显示磁盘1文件夹的文件,此时对文件夹的操作写入磁盘1。

            若挂载有指定设备,写入指定设备中,若没有,写入根目录挂载的设备中(当前系统的磁盘)

 

注意:mount重启失效,永久挂载方法/etc/fstab

           重启后mount挂载会失效,若要每次开机都挂载,需要写入/etc/fstab文件

vim /etc/fstab

第1字段:设备名或设备卷标名 (UUID=***或者/dev/sdb1)

UUID查询
blkid

第2字段:文件系统的挂载点目录的位置。

第3字段:文件系统类型,如xfs、swap 等。(光盘iso9660)

第4字段:挂载参数,即mount命令"-o"选项后可使用的参数。例如,defaults (默认参数)、W (可读写)、O(只读)、noexec (禁用执行程序)一般设为1时表示需要,设为0时将被dump 忽略

第5字段:表示文件系统是否需要 dump 备份 (dump 是一个备份工具)

第6字段:该数字决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。根分区可设为1,其他分区设为2。

(5 6字段面试可能问 第五个0是不备份 第六个0是不检查磁盘)

 

 

增加永久挂载方法1/etc/fstab

增加一条/dev/sdb1 用于永久挂载

增加一条UUID=17a3c730-66af-4388-a2a6-4189e7c7f3ab (sdb5)用于永久挂载

增加一条/dev/sr0(光驱) 用于永久挂载

/dev/sdb1                                 /guazaidian             xfs     defaults        0 0
UUID=17a3c730-66af-4388-a2a6-4189e7c7f3ab /guazaidian2            ext4    defaults        0 0
/dev/sr0 /mnt iso9660 defaults 0 0

mount-a
重新加载fstab中内容,不报错则通过

lsblk
查看挂载信息,挂载成功。

如果/etc/fstab文件修改错误(例如挂载了sr0但是光驱内没有文件),重新启动将无法开机!做好备份,或是修改配置

 

增加永久挂载方法2/etc/profile, ~/.bash_profile

由于/etc/profile(全局),~/.bash_profile(用户家目录)开机自动执行,可将挂载指令加入其中。

vim /etc/profile
或者
vim ~/.bash_profile

加入命令
mount /dev/sdb1 /guazaidian/

增加永久挂载方法3/etc/rc.local

/etc/rc.local是开机自动执行指令的文件

vim /etc/rc.local

加入命令
mount /dev/sdb1 /guazaidian/

 若要rc.local生效,需要先执行chmod +x /etc/rc.d/rc.local 指令!

chmod +x /etc/rc.d/rc.local 
#给该文件添加执行权限

ll !$   
  !$  为通配符 自动匹配上一条命令的末尾字段 此处查看re.local权限

df 检查挂载点

df
#检查挂载点

 
df -h
#检查挂载点 人性化显示大小

df -hT

#检查挂载点 人性化显示大小 显示文件系统类型

 swapon挂载swap交换分区

swapon /dev/sdc1

swapoff /dev/sdc1
swapoff -a   #关闭所有swap


swapon -s
#查看当前swap提供设备

 

free 查看内存 

free -m    MB单位显示显示内存
free       显示内存
free -h    人性化显示内存MB,GB

 free -m什么意思?  按MB显示内存(重中之重)

 

 检测磁盘 是否损坏

badblocks -sv /dev/sda1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值