前言
前几天有一个需求:将ceph的一个osd卸载下来,进行硬盘ssd的读写速度测试已经压力测试,所以需要进行硬盘的重新整理。正好需要将这一套操作(硬盘分区,格式化,卸装载)给捣腾一遍,所以记载一下,希望能给大家带来帮助。
1.将ssd从ceph中osd上卸载下来
该系列操作涉及到具体ceph的相关操作,请大家自助查询相关资料。
接下来的主要的流程:
- 对磁盘进行分区
- 对某一个分区进行格式化
- 建立文件系统
- (可选)对建立好的文件系统进行检验
- 在Linux上,建立挂载点,然后将它挂载到目录上
2.磁盘分区
有几个很有用的命令:
- lsblk
列出系统上的所有磁盘列表。其中会有:sda,sdb,…,nvme0,nvme1,…,等。这些就是具体的在设备上的硬盘。假如每个设备上有树形分支:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 558.4G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 128G 0 part [SWAP]
├─sda3 8:3 0 100G 0 part /home
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 329.4G 0 part /
nvme0n1 259:4 0 1.8T 0 disk
nvme1n1 259:2 0 1.8T 0 disk
nvme2n1 259:3 0 1.8T 0 disk
nvme3n1 259:5 0 1.8T 0 disk
nvme4n1 259:0 0 1.8T 0 disk
nvme5n1 259:1 0 1.8T 0 disk
这说明sda这个硬盘上有5个分区。下面是5个分区中各个分区的信息。现在我们以nvme0n1为例对该磁盘进行挂载。
MBR分区表请使用fdisk分区,GPT分区表使用gdisk进行分区。(很重要!很重要!很重要!否则会分区失败)怎么知道是哪一种分区格式呢?
parted 设备名 print
其中:Partition Table一项就是分区表的格式
然后根据具体内容进行分区,记住如果操作不当的话想撤销,最后别【w】执行就可以,因为所有操作都是在内存中进行,最后当你【q】就当前的所有操作都给失效掉。
3.磁盘格式化
磁盘格式化使用mkfs命令,但是具体使用什么格式,需要使用mkfs的子命令。例如你要格式化成xfs格式,你就要使用mkfs.xfs命令;你要格式化为ext4形式,你就需要mkfs.ext4的命令。(本次采用xfs格式方式)
mkfs.xfs 【-b bsize】 [-d 参数] 【-i 参数】 【-l 参数】 【-L 参数】 【-f】 [-r 参数] 设备名
-b 后面接区块容量
-d 后面接data section 的相关参数
-f (force)表示现在这个设备已经有了文件系统,需要强制性格式化
其实简单暴力直接不接任何参数,一般就是:
mkfs.xfs 设备名(/dev/sdb) (-f)
然后检查是否格式化成功,使用:
blkid 设备名(例如/dev/sdb)
我的机器上显示的nvme0n1是:
# blkid /dev/nvme0n1
/dev/nvme0n1: UUID="ce3c7ffa-e293-4b34-a849-e6d29c450644" TYPE="xfs"
有这样的形式,说明已经格式化成功。
4.检验文件系统
xfs文件系统检查用到 xfs_repair命令。
# xfs_repair [-fnd] 设备名
-f 说明后面的设备是文件不是设备
-n 只进行检查,不修改文件的任何数据(仅仅进行检查)
-d 在单人维护模式下面,针对根目录进行检查和修复的操作,比较危险,不要随便操作
我一般使用:
xfs_repair -n 设备名
5.文件系统挂载与卸载
文件系统已经格式化完毕之后,那么就可以开始对给文件系统进行挂载到一个目录上。(就是将这个文件系统跟一个目录(例如/data/my_xfs目录)进行绑定,这样访问这个磁盘的文件系统就成了访问这个目录。)也就是说,这个目录就是该文件系统的访问入口,在这个文件目录里面创建文件,创建文件夹就成了在这个文件系统中创建文件和文件夹。挂载之前需要注意几点:
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)上
- 单一目录不应该重复挂载多个文件系统
- 要作为挂载点的目录,理论上都应该是空目录才可以
文件系统挂载很简单,就是一个mount命令,卸载就是umount。
每个设备都有一个UUID,挂载的时候,你需要将指定的设备(由UUID确定更好)和挂载点(目录)。通过
blkid [设备名]
来查看你要挂载的设备的UUID.
然后执行:(注意:挂载目录应该是已经存在的空目录,如果没有改目录需要mkdir创建一个空目录)
# mount UUID="你的UUID的序列串" 【挂载目录】
这样的话就可以把这个设备(UUID)和指定的挂载目录进行绑定了。检查是否挂载成功可以使用:
df 挂载目录
会显示类似于
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk1s1 236568496 131203248 99862432 57% 969984 9223372036853805823 0% /
其中mounted on 表示的就是挂载在那个目录了。
注意:这样挂载是本次挂载,如果想要启动挂载就需要修改配置文件(/etc/fstab):
在/etc/fstab文件加上一行:
设备名 挂载点 文件系统 defaults 0 0
设备名:就是你的文件系统设备名字,例如/dev/sdb
挂载点:就是你mount 命令的挂载目录
文件系统:就是你将这个文件系统格式化的文件系统类型(xfs,ext4等)
其他都是默认。(由于你的系统肯定有有现存的挂载点,所以你可以照猫画虎在下面添一行。重要的就是:设备名,挂载点,文件系统。其他的按照默认的defaults 0 0 就可以了)
好了这样就大功告成了,你可以cd命令进入你的挂载点(目录上),然后进行各种操作即可。