磁盘管理(三)

1.swap分区
1)虚拟内存

2)Linux中的虚拟内存---swap(必须是一个分区)
i.速度比较:寄存器(1ns)---缓存(10ns)---内存(10ms)---硬盘(秒级别)
ii.建议使用更快速的硬盘设备或者将swap分区放置在磁道的最外层,这样速度会好一些
iii.与Windows不同,Linux只要内存足够使用该就不会使用swap分区
3)查看交换空间
命令:free
作用:查看物理内存和交换空间的使用情况
例:[root@ns1 ~]# free
total       used       free     shared    buffers     cached
Mem:       1019996     137452     882544        160      11492      46028
-/+ buffers/cache:      79932     940064
Swap:      2097148          0    2097148
备注:默认是以字节显示

[root@ns1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           996        134        861          0         11         44
-/+ buffers/cache:         78        918
Swap:         2047          0       2047
备注: i.以兆显示
ii.buffers:缓冲区,可以近似认为是存放元数据
iii.-/+ buffers/cache: 对于used来讲减去bufers和cache后只是用了多少
对于used来讲加上buffer和cache后只剩余了多少
4)创建交换分区
命令:mkswap
格式:mkswap /dev/sdb3
-L LABEL
操作过程:
[root@ns1 ~]# fdisk /dev/sdb
Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p //输入p
Partition number (1-4): 1 //输入分区编号(主分区)
First cylinder (1-1305, default 1): 
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +5G //输入要划分的大小
Command (m for help): L //查看各个文件系统编号


0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)


Command (m for help): p


Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x4fe5cd14


  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         654     5253223+  82  Linux swap / Solaris


Command (m for help): w
The partition table has been altered!


Calling ioctl() to re-read partition table.
Syncing disks.

[root@ns1 ~]# partprobe /dev/sdb //如果报错,重启再次执行
[root@ns1 ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 5253216 KiB
no label, UUID=1bef0b7c-c015-45d5-a50d-3fd95521f1d6

[root@ns1 ~]# swapon /dev/sdb1
[root@ns1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           996        137        859          0         11         46
-/+ buffers/cache:         79        916
Swap:         7178          0       7178

[root@ns1 ~]# swapoff /dev/sdb1
[root@ns1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           996        133        862          0         11         46
-/+ buffers/cache:         75        920
Swap:         2047          0       2047
附加说明:如果磁盘没有剩余空间,但是有分区中还剩余很多空间,那么如何应急呢?
解决方案
创建回环设备:loopback
作用:实用软件来模拟实现硬件
命令:dd
说明:dd和cp都是复制,不同之处dd除了可以复制文件和目录外还能复制片段
格式:dd if=数据来源 of=数据存储目标 bs=1024 count=2
if:input file
of:output file
bs:block size,一次复制多大单位,单位:字节
count:一共复制多少这样的字节
seek=#:创建数据文件时,跳过的空间大小
例: [root@ns1 ~]# touch /var/swapfile1
[root@ns1 ~]# dd if=/dev/zero of=/var/swapfile1 seek=1023 bs=1M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576字节(1.0 MB)已复制,0.0284669 秒,36.8 MB/秒
[root@ns1 ~]# ls -lh /var/swapfile1 
-rw-r--r-- 1 root root 1.0G 4月  16 11:19 /var/swapfile1
[root@ns1 ~]# du -sh /var/swapfile1 
1.0M /var/swapfile1
操作过程:
[root@ns1 ~]# touch /var/swapfile1
[root@ns1 ~]# dd if=/dev/zero of=/var/swapfile1 seek=1023 bs=1M count=1
记录了1+0 的读入
记录了1+0 的写出
1048576字节(1.0 MB)已复制,0.0284669 秒,36.8 MB/秒
[root@ns1 ~]# ls -lh /var/swapfile1 
-rw-r--r-- 1 root root 1.0G 4月  16 11:19 /var/swapfile1
[root@ns1 ~]# du -sh /var/swapfile1 
1.0M /var/swapfile1
[root@ns1 ~]# 
[root@ns1 ~]# 
[root@ns1 ~]# 
[root@ns1 ~]# touch /var/swapfile
[root@ns1 ~]# dd if=/dev/zero of=/var/swapfile bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,22.2665 秒,48.2 MB/秒
[root@ns1 ~]# mkswap /var/swapfile
mkswap: /var/swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=a32d630f-1de4-4ae3-a16a-4c67f34542a8
[root@ns1 ~]# swapon /var/swapfile
[root@ns1 ~]# free -m
total       used       free     shared    buffers     cached
Mem:           996        922         73          0          2        819
-/+ buffers/cache:         99        896
Swap:         3071          0       3071
备注:swapon有个参数-a:启用所有的定义在/etc/fstab文件中的交换设备
实例1:dd可以备份和还原硬盘中的MBR
[root@ns1 ~]# mkdir /backup
[root@ns1 ~]# touch /backup/mbr.bak
[root@ns1 ~]# dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000984099 秒,520 kB/秒
[root@ns1 ~]# dd if=/backup/mbr.bak of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.00197603 秒,259 kB/秒

实例2:cat命令可以创建镜像文件
[root@ns1 ~]# cat /dev/cdrom > /root/CenOS6.iso
2.mount挂载镜像文件
参数:-o loop:挂载本地回环设备
[root@ns1 ~]# mount -o loop /root/cenos6.iso /media
 
20./etc/fstab配置文件的作用
1)引入:以往在用mount命令挂载,之后重启,挂载的内容就不能使用了,但是使用df -h还是能看到很多设备被挂载,为什么呐?如何解决呢?
2)文件系统的配置文件/etc/fstab
作用:所在写在这个表中的文件系统在开机的时候,系统的初始化进程会自动分析这个表,并将写在这个文件中的每一个设备自动挂载
3)配置文件格式分析:
要挂载的设备 挂载点 文件系统 挂载选项 转储频率
文件系统检测次序(只有根为1,开机先检查,其他的可以同时为2,0表示为不检查)
(多久对此文件系统做一次完全备份,0表示不备份,1表示每天,2表示每隔一天)
/dev/sdb1 /mnt/test ext3 default 0 0
mount -a 挂载/etc/fstab文件中定义的所有文件系统,如果挂载的就略过,没挂载的挂载
例: [root@ns1 ~]# vim /etc/fstab
备注:在文件的最后一行添加:/dev/sdb1               /mnt/test               ext3    defaults        0 0
[root@ns1 ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
备注:没有挂载sdb1
[root@ns1 ~]# mount -a
[root@ns1 ~]# mount
备注:显示已经挂载
4)有这么一种情况,当你挂载后就是为做测试,不用了想卸载,但是在另一个中断可能被人使用不能卸载,一直显示busy,怎么办?
命令:fuser
作用:验证进程正在使用的某个文件或套接字
参数: -v:查看某文件上正在使用的进程
-k:杀死访问文件进程
-m:针对挂载点
例:
[root@ns1 test]# fuser -v /mnt/test/
                     用户     进程号 权限   命令
/mnt/test/:          root       1728 ..c.. bash
[root@ns1 test]# fuser -km /mnt/test/
备注:另一个中断会消失或者断开。(终止正在访问此挂载点的所有进程)
[root@ns1 test]# umount /mnt/test/
显示卸载成功

脚本练习
1.用交互的方式显示硬盘,内存和交换分区的使用情况
[root@ns1 ~]# vim showdisk.sh
备注:在此文件中写入如下代码
#!/bin/bash
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
*)   quit.
EOF
read -p "Your choice:" CHOICE
while [ $CHOICE != 'quit' ];do
case $CHOICE in
d|D)
echo "Disk usages:"
df -Ph;;
m|M)
echo "Memory usages:"
free -m | grep "Mem";;
s|S)
echo "Swap usages:"
free -m | grep "Swap";;
*)
echo "Unknown...";;
esac
read -p "Again, your choice:" CHOICE
done
测试:
[root@ns1 ~]# sh showdisk.sh 
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
*)   quit.
Your choice:d
Disk usages:
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        18G  6.8G  9.5G  42% /
tmpfs           499M     0  499M   0% /dev/shm
/dev/sda1       488M   33M  430M   8% /boot
Again, your choice:M
Memory usages:
Mem:           996        697        298          0         28        540
Again, your choice:s
Swap usages:
Swap:         3071          0       3071
Again, your choice:quti
Unknown...
Again, your choice:quit

2.颜色表示方法
[root@ns1 ~]# echo -e "\033[1;47;35mZhang\033[0m,yungang"
Zhang,yungang
备注: \033[:表示开头
\033[0m:表示结尾
1;47;35:分别表示文本样式(1加粗,4下划线,5闪烁,7前景背景互换);背景色4x;字体色3x,其中的x取值范围1--7
[root@ns1 ~]# echo -e "\033[1mZhang\033[0m,yungang"
Zhang,yungang
备注:Zhang加粗,yungang正常显示
[root@ns1 ~]# echo -e "\033[31mZhang\033[0m,yungang"
Zhang,yungang
备注:Zhang红色,yungang正常显示
[root@ns1 ~]# echo -e "\033[1;44;31mZhang\033[0m,yungang"
备注:Z航红色加粗字体,背景蓝色,yungang正常显示
总结:shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 
格式如下:
echo -e "\033[背景颜色; 文字颜色m字符串\033[0m"
例: [root@ns1 ~]# echo -e "\033[41;36mZhang\033[0m,yungang"
备注:其中41的位置代表底色,36的位置是代表字的颜色
注:
1.字背景颜色和文字颜色之间是英文的“”
2.文字颜色后面有个m
3.字符串前后可以没有空格,如果有的话,输出也是同样有空格

字颜色:30-37
[root@ns1 ~]# echo -e "\033[30m 黑色字\033[0m"
[root@ns1 ~]# echo -e "\033[31m 红色字\033[0m"
[root@ns1 ~]# echo -e "\033[32m 绿色字\033[0m"
[root@ns1 ~]# echo -e "\033[33m 黄色字\033[0m"
[root@ns1 ~]# echo -e "\033[34m 蓝色字\033[0m"
[root@ns1 ~]# echo -e "\033[35m 紫色字\033[0m"
[root@ns1 ~]# echo -e "\033[36m 天蓝色\033[0m"
[root@ns1 ~]# echo -e "\033[37m 白色字\033[0m"

背景颜色范围:40-47
[root@ns1 ~]# echo -e "\033[40;37m 黑底白字\033[0m"
[root@ns1 ~]# echo -e "\033[41;37m 红底白字\033[0m"
[root@ns1 ~]# echo -e "\033[42;37m 绿底白字\033[0m"
[root@ns1 ~]# echo -e "\033[43;37m 黄底白字\033[0m"
[root@ns1 ~]# echo -e "\033[44;37m 蓝底白字\033[0m"
[root@ns1 ~]# echo -e "\033[45;37m 紫底白字\033[0m"
[root@ns1 ~]# echo -e "\033[46;37m 天蓝底白字\033[0m"
[root@ns1 ~]# echo -e "\033[47;37m 白底黑字\033[0m"

最后面控制选项说明
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m - \33[37m 设置前景色
\33[40m - \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH 设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?251 隐藏光标
\33[?25h 显示光标
3.对1中的脚本做一个修改,使其交互时显示颜色
#!/bin/bash
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
*)   quit.
EOF
echo -n -e "\033[1;31mYour Choice:\033[0m"
read CHOICE
while [ $CHOICE != 'quit' ];do
case $CHOICE in
d|D)
echo "Disk usages:"
df -Ph;;
m|M)
echo "Memory usages:"
free -m | grep "Mem";;
s|S)
echo "Swap usages:"
free -m | grep "Swap";;
*)
echo "Unknown...";;
esac
echo -n -e "\033[33Again,your choice:\033[0m"
read CHOICE


软件RAID的实现
1.内核模块:md
1)解释:Multi Device  多设备
2)查看装载的模块:lsmod-->RAID是md的子模块
2.命令:mdadm
1)用户空间的命令
2)它是RAID的管理工具
3)真正RAID的实现靠的是内核模块md
3.作用:将任何块设备做成RAID
4.mdadm是模式化的命令
创建模式:-C
专用选项:
-l:级别
-n:设备个数
-a(yes|no):是否自动为其创建设备
-c:指定数据块(CHUNK)大小,2^n,默认是CentOS6.x--512k.
注意: 软RAID在每次生成一个CHUNK时候都会计算相当于多少个磁盘块,这样磁盘性能就会下降(针对RAID 0和RAID 5),
所以在格式化时候为了提高RAID性能,我们可以指定条带的大小(-E stride),这个数就是CHUNK除以block的结果
[root@ns1 ~]# cat /proc/mdstat
Personalities:[raid0] [raid1]
md0 : active raid0 sdc1[1] sdb1[0]
4192256 blocks super 1.2 512k chunks
unused devices:<none>
[root@ns1 ~]# man mke2fs
[root@ns1 ~]# mke2fs -j -E stride=128 -b 4096 /dev/md0
-x:指定空间盘的个数(注意:-n和-x后面跟数字的个数要和后面的磁盘 /dev/sdb1,/dev/sdc1./dev/sdd1数一致)
管理模式:--add(-a),--remove(-r),--fail(-f)
监控模式:-F
增长模式:-G
装配模式:-A 
查看 RAID阵列的详细信息
-D或者--detail
mdadm -D /dev/md1  或  mdadm --detail /dev/md1
停止阵列:-S或--stop
案例:
1.创建4G的RAID 0(添加2块磁盘,每个2G)
方式:2个2G
实施过程:
[root@ns1 ~]# fdisk /dev/sdb
Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
First cylinder (1-1305, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +2G


Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (263-1305, default 263): 
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-1305, default 1305): +2G


Command (m for help): L
Command (m for help): t
Partition number (1-4): fd
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)
Command (m for help): p


  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  fd  Linux raid autodetect
/dev/sdb2             263         524     2104515   fd  Linux raid autodetect

Command (m for help): w     
The partition table has been altered!


Calling ioctl() to re-read partition table.

[root@ns1 ~]# partprobe /dev/sdb{1,2}
[root@ns1 ~]# cat /proc/partitions //确保分区可用
major minor  #blocks  name


  8        0   20971520 sda
  8        1     524288 sda1
  8        2    2097152 sda2
  8        3   18349056 sda3
  8       16   10485760 sdb
  8       17    2104483 sdb1
  8       18    2104515 sdb2
  [root@ns1 ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
验证:
[root@ns1 ~]# cat /proc/mdstat 
Personalities : [raid0] 
md0 : active raid0 sdb2[1] sdb1[0]
 4204544 blocks super 1.2 512k chunks
 
unused devices: <none>
使用:
格式化:
[root@ns1 ~]# mke2fs -j -E stride=128 -b 4096 /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
262944 inodes, 1051136 blocks
52556 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1077936128
33 block groups
32768 blocks per group, 32768 fragments per group
7968 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736


正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成


This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
显示md0的大小
[root@ns1 ~]# fdisk -l


Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c417f


  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          66      524288   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              66         327     2097152   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             327        2611    18349056   83  Linux


Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x4fe5cd14


  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  fd  Linux raid autodetect
/dev/sdb2             263         524     2104515   fd  Linux raid autodetect


Disk /dev/md0: 4305 MB, 4305453056 bytes
2 heads, 4 sectors/track, 1051136 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disk identifier: 0x00000000
挂载验证:
[root@ns1 ~]# mount /dev/md0 /mnt/
[root@ns1 ~]# ls /mnt/
lost+found
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值