服务器磁盘管理(分区和挂载)

以ext4文件系统为例,设计的时候分为4个部分

超级块: 最开头部分,记录整个文件系统/分区中的文件数,df根据该信息进行统计磁盘占用 超级块副本: 对超级块进行备份,存在多个备份 i节点(inode): 记录每个文件信息,名称/大小/编号/权限。 用ls -i获取i节点信息 数据块(datablock): 事实上的数据存储点,i节点以链接式结构记录数据块的信息,因此找到i节点,就能读取对应的数据。

由于ls -l获取的是i节点记录的数据使用的数据块个数,而du则是通过i节点获取实际大小, 所以ls -l和du显示的数据大小不同。

RAID

RAID全称是Redundant Array of Independent Disks,也就是磁盘阵列,通过整合多块硬盘从而提升服务器数据的安全性,以及提高数据处理时的I/O性能。

RAID目前常用的是RAID5, 至少需要3块硬盘,其中一块硬盘用于奇偶校验,保证数据安全,其余硬盘同时读写,提高性能。此外,你还需要知道最原始的是RAID0,同时将数据读写到所有硬盘里,速度就变成了原来的N倍。RAID1至少需要两块盘,其中一块硬盘是另外硬盘的镜像。它不提高读写效率,只提高了数据安全性。RAID10是RAID0和RAID1的组合。

目前的服务器都配备了硬件RAID卡,因此在为服务器增加或更换硬盘时,需要格外注意,

插入的硬盘必须先做RAID才能被服务器识别 RAID5中的所有硬盘应当被视为一个硬盘,不能只更换其中一部分 硬盘分区

fdisk只能对不多于2TB的硬盘进行分区

fdisk /dev/sdb

假如你的硬盘大于2TB,那么会输出如下信息

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 0x405fb398. WARNING: The size of this disk is 10.0 TB (10000294477824 bytes). DOS partition table format can not be used on drives for volumes larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID partition table format (GPT). The device presents a logical sector size that is smaller than the physical sector size. Aligning to a physical sector (or optimal I/O) size boundary is recommended, or performance may be impacted. Command (m for help):

提示信息中的警告中,就建议"Use parted(1) and GUID partition table format (GPT)."

因此,对于大于2TB的硬盘就需要用parted进行分区

parted /dev/sdb

输出信息如下

GNU Parted 3.1 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands.

创建新的GPT标签,例如

mklabel gpt

设置单位

unit TB

创建分区, 比如我将原来的10T分成2TB和8TB

# mkpart PART-TYPE [FS-TYPE] START END mkpart primary ext4 0.00TB 2.00TB mkpart primary ext4 2.00TB 10.00TB

查看分区表

print

输出如下

Model: AVAGO MR9361-8i (scsi) Disk /dev/sdb: 10.0TB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2000GB 2000GB primary 2 2000GB 10.0TB 8000GB primary

退出

quit

此时会提示"Information: You may need to update /etc/fstab." /etc/fstab用于设置开机硬盘自动挂载。如果硬盘被拔走了,而/etc/fstab没有修改,那么会就提示进行修复模式。

硬盘格式化

在挂载硬盘之前,需要先对磁盘进行格式化。使用的命令为mkfs, 使用-t指定文件系统,或者用mkfs.xxx,其中xxx就是对应的文件系统。文件系统有如下几类

传统文件系统: ext2, minix, msdos, fat, vfat 日志文件系统: ext3, xfs, ext4 网络文件系统: nfs

目前最流行的是ext4和xfs,足够稳定。其中xfs是CentOS7之后的默认文件系统。

mkfs.ext4 /dev/sdb1 mkfs.ext4 /dev/sdb2 硬盘挂载

之后用mount进行硬盘挂载,分别两种情况考虑

一种是新建一个文件路径,进行挂载。

mkdir data2 mount /dev/sdb2 /data2/

另一种是挂载一个已有目录,比如说临时文件目录/tmp挂载到新的设备中。

第一步: 新建一个挂载点,将原有数据移动到该目录下

mkdir /storage mount /dev/sdb1 /storage cp -pdr /tmp/* /storage

第二步: 删除原来的/tmp下内容

rm -rf /tmp/*

第三步: 重新挂载

umount /dev/sdb1 mount /dev/sdb1 /tmp

和mount相关的文件如下

/etc/fstab: 文件系统表, 开机的时候会根据里面的记录进行硬盘挂载 /etc/mtab: 记录着已经挂载的文件系统 /etc/mtab~: 锁定文件 /etc/mtab.tmp: 临时文件 /etc/filesystems: 系统支持的文件系统

此外mount在挂载的时候还可以设置文件系统参数,例如是否支持磁盘配额,对应-o参数

总结

第零步: 检查服务器是否具备RAID阵列卡,如果有,则需要先为硬盘做RAID。

第一步: 使用fdisk -l检查硬盘是否能被系统检测到

第二步(可选): 假如需要硬盘分区,则用fdisk/gdisk/parted对硬盘划分磁盘

第三步: 使用mkfs进行磁盘格式化,有如下几种可选,

第四步: 用mkdir新建一个目录,然后用mount将格式化的硬盘挂载到指定目录下。卸载硬盘,则是umout

第五步: 修改/etc/fstab将硬盘在重启的时候自动挂载。注意: 如果硬盘不在了,则需要将对应行注释掉,否则会进入到emergency模式。

版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

猜你还会喜欢下面的内容

    无相关信息

中国领先的互联网域名及云服务提供商

为您提供域名,比特币,P2P,大数据,云计算,虚拟主机,域名交易最新资讯报道

域名注册云服务器