一、硬盘的接口类型
分区肯定是对硬盘进行分区,那么先来聊一聊硬盘的接口类型,硬盘就现在来分,分为两类,并行接口和串行接口,现在服务器及PC机上普遍的都是串行接口啦。
并行接口,分为IDE与SCSI两种接口,并行接口的缺点在于电信号在传输的过程中会产生干扰。
接口速率: IDE:133MB/s SCIS:640MB/s
串行接口,分为STAT,SAS,USB,三种接口,我们的服务器和PC上部分上也是采用的SATA接口
串口: SATA:6Gbps SAS:6Gbps USB:480MB/s
现在的磁盘分区模式分为两种,MBR、GPT两种。
MBR: Master Boot Record,使用32位系统或者64位,分区不超过2T
MBR模式可以分区的数量是:4个主分区;3主分区+1扩展(N个逻辑分区)
分区信息就在0磁道0扇区:512bytes。
开始446bytes存放boot loader,中间64bytes存放分区表,每个分区表16bytes
最后2bytes:存放55AA来表示分区结束标识符
GPT:GUID(Globals Unique Identifiers)partition table 支持128个分区,使用64位,最大18EB
使用128位UUID(Universally Unique Identifier) 表示磁盘和分区GPT分区表自动备份在头和尾两份
二、分区工具fdisk、gdisk,fdisk、gdisk用法一样
fdisk /dev/sdb
fdisk -l [-u] [device...] 查看硬盘及分区的信息
常用的子命令:
m 帮助列表 p 分区列表 l 查看分区类型 t 更改分区类型
n 创建新分区 d 删除分区 w 保存并退出 q 不保存并退出
fdisk分区后,操作只是在内存中并未真正的对硬盘分区,如果真的需要分区w保存即可
fdisk非交互式分区:echo -e "n\np\n1\n+1G\nn\np\n2\n+2G\nw" |fdisk /dev/sdb
三、强大的分区工具parted:
parted工具的分区是即时操作的,所以分区的时候要小心慎用,因为可能一个不小心就把再用的硬盘给分区了,所以使用时,一定要谨慎谨慎再谨慎。
用法:parted [选项]... [设备[命令[参数]...]...]
parted /dev/sdb mklabel gpt|msdos 为磁盘指定模式
parted /dev/sdb print 显示磁盘信息
parted /dev/sdb mkpart primary/extended/logical 0 200 (默认M)创建分区类型及大小
parted /dev/sdb rm 1 删除分区
parted -l 显示所有磁盘的信息
非交互式分区:
parted /dev/sdb mklabel gpt Yes 设置分区为GPT分区
parted /dev/sdb mkpart primary 0 10 Ignore 设置一个大小为10MB的主分区
parted /dev/sdb mkpart primary linux-swap 11 21 Ignore 设置一个大小为10MB的swap分区
parted /dev/sdb mkpart logical ext4 22 32 Ignore 设置一个大小为10MB的ext4类型的逻辑分区
parted /dev/sdb p 查看sdb磁盘的分区信息
四、如何使用DD命令创建swap分区
# dd if=/dev/zero of=/var/swapfile bs=1M count=1024 //生成1024M大小的空文件
# mkswap /var/swapfile //设置为swap分区
# swapon /var/swapfile //开启swap分区
# chmod 7777 /var/swapfile //设置权限为7777,以便无论哪个用户启动系统都能正常运作
# echo /var/swapfile swap swap defaults 0 0 >> /etc/fstab //设置开机自动挂载
- 硬盘block及inode详解:
superblock:记录文件系统的整体信息,包括inode与block总量、使用大小、剩余大小以及文件系统的格式与相关信息等。
inode:记录文件的属性、权限,同时会记录该文件的数据所在的block编号。
block:存储文件的内容,如果文件超过默认block大小,会自动占用多个block。
- 相看Linux分区block大小:
dumpe2fs /dev/sda1|grep "Block size"
tune2fs /dev/sda1|grep "Block size"
stat /boot/ |grep "IO Block"
- 相看Linux系统inode:格式化时默认为128B或256B /boot分区为128B 其他分区为256B:
mkfs.ext4 -b 4096 -I 256 /dev/sdb 格式化分区时指定block与inode大小
dumpe2fs /dev/sda1 |grep "Inode size"
tune2fs -l /dev/sda1 |grep "Inode size"
stat /boot/ |grep "Inode"
- 硬链接与软链接:
硬链接只对当前分区有效不能跨区,只能对文件生效不能对目录生效:ln file1 file2
软件链接可以跨区,可以对目录与文件生效:ln -s file1 file2
- 开机自动挂载:
echo "mount /dev/sdb1 /data >> /etc/rc.local
echo "/dev/sdb1 /data/ ext4 defaults 0 0" >> /etc/fstab
mount -o rw,remount / 重新挂载/系统 ,检测/etc/fstab是否有误
- 基于GPT格式磁盘分区:
parted -s /dev/sdb mklabel gpt 设置分区格式为GPT格式
mkfs.ext3 /dev/sdb 基于ext3文件系统类型格式化
mount /dev/sdb /data/ 挂载
parted命令分区:
parted;select /dev/sdb ;mklabel gpt ;mkpart primary 0 1000 ;print ; mkfs.ext3 /dev/sdb1
- 企业常用mount案例:
mount /dev/sdb1 /data 挂载/dev/sdb1 分区至/data/目录
mount /dev/cdrom /mnt 挂载cdrom光盘至/mnt目录
mount -t ntfs-3g /dev/sdc /data1 挂载移动硬盘至/data1目录
mount -o iso9660 -o loop centos7.iso /mnt 将CentOS7.iso镜像文件挂载至/mnt目录
mount -t fat32 /dev/sdd1 /mnt 将U盘/dev/sdd1挂载至/mnt/目录
mount -t nfs 192.168.1.11:/data/ /mnt 将远程192.168.1.11:/data 目录挂载至/mnt目录
- Linux硬盘故障修复:
硬盘出现Read-only file system只能读取不能写入的故障:
1、远程备份本地其他重要数据,出现只读文件系统,备份重要数据,基于rsync|scp远程备份,基本/data为源目录,/data/backup/2017/为目标备份目录;
rsync -av /data/ root@x.x.x.x:/data/backup/2017/
2、可以重新挂载/系统,挂载命令如下,测试文件系统是否可以写入文件。
mount -o remount,rw /
3、如果重新挂载/系统无法解决问题,刚需重启服务器以CD/DVD光盘引导进入linux rescue修复模式,光盘引导后选择:Troubleshooting 按Enter键,然后选择rescue a centos system ,按Enter键。
4、选择1)Continue 继续操作;
5、进入修复模式,执行如下命令,df -h显示原来的文件系统:chroot /mnt/sysimage ; df -h
6、对有异常的分区进行检测并修复,根据文件系统类型,执行如下命令:
umount /dev/sda3
fsck.ext4 /dev/sda3 -y
7、修复完成后重启:reboot
- 软RAID配置:
配置如下:其中,-C参数代表创建一个RAID阵列卡;-v参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0就是创建后的RAID磁盘阵列的名称;-a yes参数代表自动创建设备文件;-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;而-l 10参数则代表RAID 10方案;最后再加上4块硬盘设备的名称就搞定了。
[root@linuxprobe ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
其次,把制作好的RAID磁盘阵列格式化为ext4格式。
[root@linuxprobe ~]# mkfs.ext4 /dev/md0
再次,创建挂载点然后把硬盘设备进行挂载操作。挂载成功后可看到可用空间为40GB。
[root@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# mount /dev/md0 /RAID
[root@linuxprobe ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.0G 15G 17% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 84K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
/dev/md0 40G 49M 38G 1% /RAID
最后,查看/dev/md0磁盘阵列的详细信息,并把挂载信息写入到配置文件中,使其永久生效。
[root@linuxprobe ~]# mdadm -D /dev/md0
[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# mount -a
现在创建一个RAID 5磁盘阵列+备份盘。在下面的命令中,参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候就能看到有一块备份盘在等待中了。
[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /de
[root@linuxprobe ~]# mkfs.ext4 /dev/md0
[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# mount -a