磁盘管理以及RAID

文件系统块:

  1. 文件系统选择的块大小有讲究,一般存放文件比较大选择4096,存放的文件比较小则选择1024或者2048。LINUX默认支持1K、2K、4K)
  2. 文件系统的块大小在创建文件系统时可以设定,之后不可以改,如果要改只能重新创建文件系统。
  3. 设置块大小定为4K
mkfs.ext4 /dev/sdb2 -b 4096

创建文件系统命令

mkfs

  • -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
  • -N #:指定分区中创建多少个inode
  • -I 一个inode记录占用的磁盘空间大小, 128---4096
  • -m #: 默认5%,为管理人员预留空间占总空间的百分比
  • -L 设置卷标

例:在/dev/sdb2上建立ext4文件系统,同时块大小设置为4K,管理员空间修改为10%,卷标设置为/data/sdb2

mkfs.ext4 /dev/sdb2 -b 4096 -L /data/sdb2 -m 0.1

块设备属性信息查看

blkid

  • -U UUID: 根据指定的UUID来查找对应的设备
  • -L LABEL:根据指定的LABEL来查找对应的设备

 

相关脚本技巧:

1.对于交互式fdisk命令写脚本可以用标准输出重定向实现

echo -e "n\np\n\n\n+2G\nw\n" | fdisk /dev/sdc

或者用多行重定向

fdisk  /dev/sdc   <<EOF

2.脚本和配置文件引用设备一般使用UUID号确保设备唯一

 

开机失败故障处理:
1、如果更改了UUID但是没有保存,同时该条记录设置了开机检查,重启报错怎么办?
tune2fs -U `uuidgen` /dev/sdb2
blkid /dev/sdb2

解决方法:
      这时候机子重启后是无法进入系统的,先根据系统提示输入root口令进入系统,然后修改vim /etc/fstab发现根目录是只读状态,无法修改。用命令mount -o rw,remount /重新挂载后根目录变成可读写状态。然后进入/etc/fstab里面修改UUID或者修改启动检查项为0都可。

建议修改/etc/fstab前进行备份
cp /etc/fstab{,.bak}

2、如果挂载点被删除,系统还是可以启动的,只需要重新建立挂载点,再挂载即可。
rm -rf /data/sdb2
reboot
mkdir /data/sdb2
mount -a

分区迁移

迁移/home到新分区上
随着使用时间的增加,在根目录的/home目录随着用户的使用越来越大,感觉需要增大应对,则需要对现有的/home分区进行迁移

1、第一步先做备份/home/(重要)
2、建立分区fdisk、gdisk
fdisk  /dev/sdb
3、建立文件系统
mkfs.ext4 /dev/sdb1 -L /home
4、建立临时文件夹,挂载临时文件夹
mkdir /mnt/home
mount /dev/sdb1 /mnt/home
5、发布通知,并切换到单用户模式(单机模式会导致断网,只能在机房操作,无法远程操作)
init 1 
runlevel
代表单用户模式single user切换到单用户模式确保没有用户使用/home
6、迁移数据
cp -av /home/* /mnt/home/   
如果要包含隐藏文件可以用cp -av /home/. /mnt/home/    
7、删除旧/home分区里的数据,防止空间浪费
rm -rf /home/*
ls /home
ls /mnt/home
8、在/etc/fstab里加入新分区数据
vim /etc/fstab
r!blkid /dev/sdb1
直接生成在末尾,然后修改一下格式保存
mount -a
9、取消挂载临时目录,删除临时目录
umount /mnt/home
rm -rf /mnt/home
10、切换到正常用户模式
init  5

注意:
数据必须备份
init1会导致断网,无法远程操作
根分区没法迁移

如何把/home移动回根目录下,就是取消迁移呢?
mkdir /mnt/home
mount /dev/sdb1 /mnt/home
init1
umount /home
mv /mnt/home/* /home/
vim /etc/fstab
删除挂载信息
umount /mnt/home
rm -rf /mnt/home
fdisk /dev/sdb 删除分区


永久挂载光盘分区

mkdir /mnt/cdrom
写入/etc/fstab
/dev/sr0   /mnt/crom  iso9660  defaults 0  0
注意:
这里不能用UUID和卷标名,只能写设备名


永久挂载文件夹

就是文件夹挂载文件夹
mkdir /mnt/boot
vim /etc/fstab
/boot  /mnt/boot       none   bind   0   0
mount -a

处理交换文件和分区

查询内存的使用情况使用情况
free -m
Centos6是buffer和cache分开
Centos7buffer和cache是合并显示
一般的比例是1:2左右
内存1   swap2
具体要根据内存来决定,如果内存大就没必要大

如果想改变swap分区的大小有两种方法:
第一种方法:
直接取消swap分区重新分,但是有可能swap正在使用,无法完成。

第二种方法:
另外建立一个新的swap分区
建议选择一个高速硬盘来建立swap分区,固态磁盘,如果是机械磁盘,尽量是空的机械磁盘,而且尽量往外道分(柱面数越小越外圈)。

1、创建SWAP分区
fdisk  /dev/sdb
记得修改id用t
82 SWAP类型

2、创建SWAP文件系统
mkswap /dev/sdb1 -L swap_sdb1

3、挂载SWAP
vim /etc/fstab
r!blkid /dev/sdb1
修改数据格式保存(可以添加优先级信息pri=100)
用UUID

4、swapon -a生效

swapon -s 
相当于运行
cat /proc/swaps
可以查询当前生效的所有swap分区,包括优先级信息,数字越大优先级越高优先级可以修改。

永久修改:
可以指定swap分区0到32767的优先级,值越大优先级越高 
优化性能:分布存放,高性能磁盘存放 

保存后先禁用
swapoff /dev/sdb1
然后
swapon -a

临时修改:
swapon -p

用文件来做SWAP分区
1、生成文件(创建分区)
dd if=/dev/zero of=/swapfile bs=1024M count=2

2、创建文件系统
mkswap /swapfile

3、挂载分区(文件速度较慢,不建议加优先级)
vim /etc/fstab
/swapfile      swap    swap   defaults     0  0
swapon -a 


去除所有添加的SWAP分区
swapoff /dev/sdb1
swapoff /swapfile
vim /etc/fstab
删除里面的swap分区信息
删除文件以及分区
rm -f /swapfile
fdisk /dev/sdb


挂载光盘

在图形界面下,光盘默认自动挂载
手工挂载:
mount /dev/cdrom /mnt/
弹出光盘
eject
弹入光盘
eject -t 

小技巧:
弹出光驱定位故障电脑

制作ISO镜像文件
cp /dev/sr0 /data/centos7.iso
或者
dd if=/dev/sr0 of=/data/centos7.iso

把目录打包制作ISO镜像
mkisofs -r -o etc.iso /etc/
查看
file etc.iso

刻录光盘
wodim –v –eject centos.iso 


合并两个盘源(centos6)方便做成yum源

先把两张光盘的内容合并到一个目录里
mkdir /centos6
cp /mnt/cdrom/* /centos6/ -r
挂载第二张盘
cp /mnt/cdrom/* /centos6/ -r
如果发现有相同文件则直接覆盖
mkisofs -r -o /data/Centos-6.9-x86_64-Everything.iso /centos6/

注意:这种光盘可以做yum源,但是不能做启动光盘,要做启动盘可以用
mkdvdiso官方工具制作完整盘,可以引导系统
https://wiki.centos.org/zh/TipsAndTricks/CDtoDVDMedia?highlight=%28mkdvdiso%29
用途:mkdvdiso.sh source /destination/DVD.iso
source 代表有2张光盘内容的目录


挂载USB介质

手动挂载
mkdir /mnt/usb
mount /dev/sdf /mnt/usb

查看USB设备是否识别
lsusb

注意使用u盘拷贝资料的时候很容易出现未同步问题(buffer)
所以要用sync同步一下
cp /etc/* /mnt/usb
sync;sync;sync

查看磁盘分区的使用情况
df             默认1K为单位
df -h         人类易读方式
df -I          以节点编号代替块   
df -P         以Posix兼容的格式输出,长名字文件对齐

显示目录空间的使用情况
du /data/   文件夹内统计
du -h         人类易读
du -s          汇总
du --max-depth 2 /etc/  最大深度


工具dd

dd命令: convert and copy a file
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:           block size, 复制单元大小
count=#:     复制多少个bs 
skip=blocks     从开头忽略blocks个ibs大小的块
seek=blocks     从开头忽略blocks个obs大小的块
count=n     只拷贝n个记录

建立文档f1         建立文档f2
123456              abcdefgh

dd if=f1 of=f2
cat f2
123456

dd if=f1  of=f2  bs=1 count=2 skip=3 seek=4
cat f2
abcd45

dd if=f1  of=f2 bs=1 count=2 skip=3 seek=4 conv=notrunc
cat f2
abcd45gh

转换大小写
dd if=f2 of=f3 conv=ucase
ABCD45GH


备份MBR:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破坏MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

修复bootloader:
dd if=/tmp/mbr.bak of=/dev/sda bs=64 count=1 skip=446 seek=446

查看bootloader:
hexdump -C /dev/sda -n 512

有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下:
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc 

备份:
dd if=/dev/sdx of=/dev/sdy
将本地的/dev/sdx整盘备份到/dev/sdy
dd if=/dev/sdx of=/path/to/image
将/dev/sdx全盘数据备份到指定路径的image文件
dd if=/dev/sdx | gzip >/path/to/image.gz
备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径

恢复:
dd if=/path/to/image of=/dev/sdx
将备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx
将压缩的备份文件恢复到指定盘 

修复硬盘
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的 

RAID各种模式优缺点总结

名称       读写性能            容错/校验位    磁盘利用率    最小磁盘数
raid0      读写性能提升              无             100%                  1
raid1      读提升,写下降      有冗余 1          1/2                    2
raid5      读写性能提升        容错1 校验1      n-1/n                 3
raid6      读写性能提升        容错2 校验2      n-2/n                 4
raid10    读写性能提升        每组镜像1个       1/2                   4
raid01    读写性能提升        比不上raid10      1/2                   4
raid50    读写性能提升           非常高             1/3                   9

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值