1、硬盘分区-fdisk
1.1、命令介绍
fdisk 仅支持分配小于2TB的磁盘。
查看当前设备fdisk -l
对设备进行分区fdisk /dev/sdb
分区命令
m : 显示帮助
n : 创建新分区
d : 删除分区
p : 查看分区
w : 保存分区
q : 退出
1.2、示例1-给20G硬盘分2个分区
1.2.1、当前硬盘情况
]# fdisk -l | grep sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
1.2.2、分两个分区
~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xd6b64e34.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p # 第一主分区
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 20971519 # 分10G
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p # 创建第二分区
Partition number (2-4, default 2):
First sector (20971520-41943039, default 20971520):
Using default value 20971520
Last sector, +sectors or +size{K,M,G} (20971520-41943039, default 41943039): # 剩下全部划分到第二个分区
Using default value 41943039
Partition 2 of type Linux and of size 10 GiB is set
Command (m for help): p # 打印当前分区情况
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd6b64e34
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
/dev/sdb2 20971520 41943039 10485760 83 Linux
Command (m for help): w # 保存分区表
2、硬盘分区-gdisk
2.1、命令介绍
# 安装工具包
yum install gdisk -y
gdisk支持分配大于2TB的磁盘。
查看当前设备 gdisk [-1] device。
对设备进行分区 gdisk /dev/sdb。
分区命令
? : 显示帮助
n : 创建新分区
p : 打印分区
w : 保存分区
q : 退出
2.2、示例1-给20G硬盘分2个分区
2.2.1、当前硬盘情况
~]# gdisk -l /dev/sdb | grep sdb
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
2.2.2、分两个分区
~]# gdisk /dev/sdb
Command (? for help): n # 创建第1分区
Partition number (1-128, default 1):
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +10G # 第一个分区分为10G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): n # 创建第2分区
Partition number (2-128, default 2):
First sector (34-41943006, default = 20973568) or {+-}size{KMGTP}:
Last sector (20973568-41943006, default = 41943006) or {+-}size{KMGTP}: # 最低
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p # 打印分区表
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 703C018B-A48B-42F9-93E7-5FE11908195A
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 20973567 10.0 GiB 8300 Linux filesystem
2 20973568 41943006 10.0 GiB 8300 Linux filesystem
Command (? for help): w #写入分区表
3、格式化硬盘-mkfs
3.1、命令介绍
mkfs
作用:格式化硬盘:
-b :设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块;
-t :用来指定什么类型的文件系统,可以是ext4、xfs ;
-N : 设定inode数量,防止Inode数量不够导致磁盘不足;
3.2、格式化整个硬盘
3.3、格式化指定分区
4、临时挂载硬盘-mount
4.1、命令介绍
临时挂载,通过mount进行挂载,但重启将会失效。我们称为临时生效。
-t :指定文件系统挂载分区;
-a :检查并且挂载/etc/fstab 配置文件中未挂载的设备;
-o :指定挂载参数,ro、rw ;
4.2、临时挂载
4.2.1、临时挂载硬盘-可读写
~]# mkdir /mnt/db1
~]# mount -t xfs /dev/sdb1 /mnt/db1
~]# df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/sdb1 10G 33M 10G 1% /mnt/db1
4.2.2、临时挂载硬盘-只读
~]# mount -t xfs -o ro /dev/sdb2 /mnt/db2
# 无权限写入
~]# touch /mnt/db2/file
touch: cannot touch ‘/mnt/db2/file’: Read-only file system
5、临时卸载硬盘-umount
5.1、命令介绍
如果不想使用可以使用umount [device|directory]进行临时卸载。
-1 : 强制卸载;
5.2、卸载硬盘
umount /mnt/db1
umount -l /mnt/db2
6、永久挂载硬盘-fstab
6.1、fstab作用
如果需要实现永久挂载,则需要将挂载相关信息写入/etc/fstab配置文件中实现。
6.2、永久挂载流程
配置文件规范︰设备名称|挂载的入口目录|文件系统类型|挂载参数|是否备份|是否检查
1、获取设备名称,或者获取设备UUID
2、手动临时挂载测试;
3、写入/etc/fstab配置文件;
4、使用mount -a检查是否存在错误;
6.3、/etc/fstab配置解析
/etc/fstab配置文件格式
第一列:指定需要挂载的设备
设备名称:/dev/sdb1
设备ID:UUID
第二列:挂载的入口目录。
第三列:文件系统类型
xfs类型
ext4类型
第四列:挂载参数
async/sync # 使用同步或异步方式存储数据;默认async
user/nouser # 是否允许普通用户使用mount命令挂载。默认nouser
exec/noexe # 是否允许可执行文件执行。默认exec
suid/nosuid # 是否允许存在suid 属性的文件。默认suid
auto/noauto # 执行mount -a命令时,此文件系统是否被主动挂载。默认 auto
rw/ro # 是否以只读或者读写模式进行挂载。默认rw
default # 具有rw,suid,dev,exec,auto, nouser,async等参数;
第五列:是否要备份磁盘
0 # 不做备份
1 # 每天进行备份操作
2 # 不定日期的进行备份操作
第六列:开机是否检验扇区
0 # 不要检验磁盘是否有坏道.
1 # 检验
2 # 校验(当1级别检验完成之后进行2级别检验)
6.4、给sdb1配置永久挂载
6.4.1、查询设备UUID
]# blkid | grep sdb1
/dev/sdb1: UUID="184ea481-1a66-495c-8a63-2cf853608a92" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="0a2e0b71-052f-49bb-869d-2f1fa590bc3a"
6.4.2、测试挂载
mount UUID="184ea481-1a66-495c-8a63-2cf853608a92" /mnt/db1
# 测试完成,就卸载掉
6.4.3、方法1:手动配置-写入/etc/fstab配置
]# tail -1 /etc/fstab
UUID=184ea481-1a66-495c-8a63-2cf853608a92 /mnt/db1 xfs defaults 0 0
]# mount -a
]# df -h | grep db1
/dev/sdb1 10G 33M 10G 1% /mnt/db1
6.4.4、方法2:自动配置-写入etc/fstab配置
blkid | grep /dev/sdb1 | awk -F '[: ]+' '{print $2}' | sed -r 's#(.*)#\1 /mnt/db1 xfs defaults 0 0 #g'>>/etc/fstab
]# tail -1 /etc/fstab
UUID="184ea481-1a66-495c-8a63-2cf853608a92" /mnt/db1 xfs defaults 0 0
7、xfs文件系统修复
7.1、模拟故障
7.1.1、分一个区并且格式化
# 这里自己分区,不再重复记录
# 格式化硬盘
mkfs.xfs /dev/sdb1
7.1.2、挂载硬盘并且写入数据
mount /dev/sdb1 /mnt/
echo "Hello" >/mnt/new.txt
7.1.3、往硬盘填充数据
dd if=/dev/zero of=/dev/sdb bs=300M count=1
7.1.4、马上卸载硬盘
7.1.5、再挂载看看报错
]# mount /dev/sdb1 /mnt/
mount: mount /dev/sdb1 on /mnt failed: Structure needs cleaning
7.2、挂载报错:Structure needs cleaning,修复文件系统
7.2.1、尝试修复
xfs_repair /dev/sdb1
mount /dev/sdb1 /mnt/
# 修复好,就可以挂载了
7.2.2、强制修复