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
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