创建RAID-5
若想建立新的md1设备 只在/dev下建立还不够 重启后会消失
固化的方法是
为了使udev自动产生/dev/md1, /dev/md2,需要在/etc/udev目录下建立devices子目录,并手工建立md1,md2。这样udev会在系统启动时把md1,md2复制到/dev目录下
[root@server1 ~]# mkdir /etc/udev/devices
[root@server1 ~]# cd /etc/udev/devices
[root@server1 ~]# mknod md1 b 9 1
[root@server1 ~]# mknod md2 b 9 2
# mdadm -C /dev/md0 -l 5 -n 3 /dev/sda5 /dev/sda6 /dev/sda7
mdadm: array /dev/md0 started.
# mdadm -D /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sat May 16 12:02:03 2009
Raid Level : raid5
Array Size : 594176 (580.35 MiB 608.44 MB)
Used Dev Size : 297088 (290.17 MiB 304.22 MB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat May 16 12:02:08 2009
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : 5a944e39:948186b6:f2927409:b0ee5d4a
Events : 0.2
Number Major Minor RaidDevice State
0 8 5 0 active sync /dev/sda5
1 8 6 1 active sync /dev/sda6
2 8 7 2 active sync /dev/sda7
生成 /etc/mdadm.conf 配置文件
[root@lan1 dev]# mdadm -D -s
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=5a944e39:948186b6:f2927409:b0ee5d4a
[root@lan1 dev]# mdadm -D -s > /etc/mdadm.conf
模拟损坏
[root@lan1 /]# mdadm /dev/md0 -f /dev/sda6
mdadm: set /dev/sda6 faulty in /dev/md0
[root@lan1 /]# mdadm -D /dev/md0
Number Major Minor RaidDevice State
0 8 5 0 active sync /dev/sda5
1 0 0 1 removed
2 8 7 2 active sync /dev/sda7
3 8 6 - faulty spare /dev/sda6
[root@lan1 /]#
将损坏的盘移除
[root@lan1 /]# mdadm /dev/md0 -r /dev/sda6
mdadm: hot removed /dev/sda6
[root@lan1 /]# mdadm -D /dev/md0
Number Major Minor RaidDevice State
0 8 5 0 active sync /dev/sda5
1 0 0 1 removed
2 8 7 2 active sync /dev/sda7
[root@lan1 /]#
添加一个新盘
[root@lan1 /]# partprobe /dev/sda
[root@lan1 /]# mdadm /dev/md0 -a /dev/sda8
mdadm: added /dev/sda8
不需要格式化会自动重构
Number Major Minor RaidDevice State
0 8 5 0 active sync /dev/sda5
3 8 8 1 spare rebuilding /dev/sda8
2 8 7 2 active sync /dev/sda7
[root@lan1 /]# mdadm -D /dev/md0
Number Major Minor RaidDevice State
0 8 5 0 active sync /dev/sda5
1 8 8 1 active sync /dev/sda8
2 8 7 2 active sync /dev/sda7
[root@lan1 /]#
启用与停用
[root@lan1 ~]# umount /mnt
[root@lan1 ~]# mdadm -A -s /dev/md0
mdadm: device /dev/md0 already active - cannot assemble it
[root@lan1 ~]# mdadm -S -s /dev/md0
mdadm: stopped /dev/md0
[root@lan1 ~]# mdadm -D -s /dev/md0
mdadm: md device /dev/md0 does not appear to be active.
[root@lan1 ~]# mdadm -A -s /dev/md0
mdadm: /dev/md0 has been started with 3 drives.
[root@lan1 ~]# mdadm -D -s /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sat May 16 12:02:03 2009
Raid Level : raid5
Array Size : 594176 (580.35 MiB 608.44 MB)
Used Dev Size : 297088 (290.17 MiB 304.22 MB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat May 16 12:15:50 2009
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : 5a944e39:948186b6:f2927409:b0ee5d4a
Events : 0.12
Number Major Minor RaidDevice State
0 8 5 0 active sync /dev/sda5
1 8 8 1 active sync /dev/sda8
2 8 7 2 active sync /dev/sda7
[root@lan1 ~]#
移除
[root@lan1 /]# umount /mnt
[root@lan1 /]# mdadm -S -s /dev/md0
mdadm: stopped /dev/md0
[root@lan1 /]# mdadm --zero-superblock /dev/sda5 /dev/sda7 /dev/sda8
[root@lan1 /]# mdadm -A -s /dev/md0
mdadm: /dev/md0 assembled from 1 drive - not enough to start the array.
[root@lan1 /]#
LVM
建立三个分区,修改类型为 8e Linux LVM
[root@lan1 ~]# fdisk -l
/dev/sda5 844 868 200781 8e Linux LVM
/dev/sda6 869 905 297171 8e Linux LVM
/dev/sda7 906 967 497983+ 8e Linux LVM
[root@lan1 ~]#
[root@lan1 ~]# partprobe /dev/sda
建立PV
[root@lan1 ~]# pvcreate /dev/sda5 /dev/sda6 /dev/sda7
Physical volume "/dev/sda5" successfully created
Physical volume "/dev/sda6" successfully created
Physical volume "/dev/sda7" successfully created
[root@lan1 ~]#
[root@lan1 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name vg01
PV Size 196.08 MB / not usable 4.08 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 48
Free PE 48
Allocated PE 0
PV UUID dzPs4H-MZ9Q-nYwV-IVVA-gJOQ-gVBK-gL90JC
--- Physical volume ---
PV Name /dev/sda6
VG Name vg01
PV Size 290.21 MB / not usable 2.21 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 72
Free PE 72
Allocated PE 0
PV UUID vbrCn3-2yxX-3CN4-qp3p-USyU-nxej-oPH2bS
--- Physical volume ---
PV Name /dev/sda7
VG Name vg01
PV Size 486.31 MB / not usable 2.31 MB
Allocatable yes
PE Size (KByte) 4096
Total PE 121
Free PE 121
Allocated PE 0
PV UUID D1AkXh-pzMY-MVFT-JC8W-ODB9-vKD4-0f7TEC
[root@lan1 ~]#
建立VG
[root@lan1 ~]# vgcreate vg01 /dev/sda5 /dev/sda6 /dev/sda7
Volume group "vg01" successfully created
[root@lan1 ~]#
[root@lan1 ~]# vgdisplay
--- Volume group ---
VG Name vg01
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 964.00 MB
PE Size 4.00 MB
Total PE 241
Alloc PE / Size 0 / 0
Free PE / Size 241 / 964.00 MB
VG UUID 8JdrEK-7W3n-A3Fi-cOwN-MdJ0-aIRC-7Cq5vx
[root@lan1 ~]#
建立 LV
[root@lan1 ~]# lvcreate -L 400M -n lv01 vg01
Logical volume "lv01" created
[root@lan1 ~]#
[root@lan1 ~]# lvcreate -L 100M -n lv02 vg01
Logical volume "lv02" created
[root@lan1 ~]#
[root@lan1 ~]# ll /dev/vg01/
总计 0
lrwxrwxrwx 1 root root 21 05-16 12:29 lv01 -> /dev/mapper/vg01-lv01
lrwxrwxrwx 1 root root 21 05-16 12:29 lv02 -> /dev/mapper/vg01-lv02
[root@lan1 ~]#
格式化
[root@lan1 ~]# mke2fs -j /dev/vg01/lv01
[root@lan1 ~]# mke2fs -j /dev/vg01/lv02
[root@lan1 ~]# mount
/dev/mapper/vg01-lv01 on /mnt type ext3 (rw)
[root@lan1 ~]#
伸缩VG
放大
[root@lan1 ~]# vgdisplay | grep 'VG Size'
VG Size 964.00 MB
[root@lan1 ~]#
[root@lan1 ~]# pvcreate /dev/sda8
Physical volume "/dev/sda8" successfully created
[root@lan1 ~]# vgextend vg01 /dev/sda8
Volume group "vg01" successfully extended
[root@lan1 ~]#
[root@lan1 ~]# vgdisplay | grep 'VG Size'
VG Size 1.32 GB
缩小
[root@lan1 ~]#
[root@lan1 ~]# vgreduce vg01 /dev/sda8
Removed "/dev/sda8" from volume group "vg01"
[root@lan1 ~]# vgdisplay | grep 'VG Size'
VG Size 964.00 MB
[root@lan1 ~]#
伸缩LV
放大
[root@lan1 ~]# lvdisplay /dev/vg01/lv01 | grep 'LV Size'
LV Size 400.00 MB
[root@lan1 ~]# lvextend -L +100M /dev/vg01/lv01
Extending logical volume lv01 to 500.00 MB
Logical volume lv01 successfully resized
[root@lan1 ~]# lvdisplay /dev/vg01/lv01 | grep 'LV Size'
LV Size 500.00 MB
[root@lan1 ~]#
[root@lan1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 ext3 5.7G 2.4G 3.1G 44% /
/dev/sda1 ext3 99M 12M 83M 12% /boot
tmpfs tmpfs 125M 0 125M 0% /dev/shm
/dev/mapper/vg01-lv01
ext3 388M 11M 358M 3% /mnt
[root@lan1 ~]# ext2online /dev/vg01/lvm01 # RHEL4的在线扩容命令
[root@lan1 ~]# resize2fs /dev/vg01/lv01 # RHEL5的在线扩容命令
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vg01/lv01 is mounted on /mnt; on-line resizing required
Performing an on-line resize of /dev/vg01/lv01 to 512000 (1k) blocks.
The filesystem on /dev/vg01/lv01 is now 512000 blocks long.
[root@lan1 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 ext3 5.7G 2.4G 3.1G 44% /
/dev/sda1 ext3 99M 12M 83M 12% /boot
tmpfs tmpfs 125M 0 125M 0% /dev/shm
/dev/mapper/vg01-lv01
ext3 485M 11M 449M 3% /mnt
[root@lan1 ~]#
缩小
[root@lan1 /]# umount /mnt
先离线
再做强制检查
[root@lan1 /]# e2fsck -f /dev/vg01/lv01
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg01/lv01: 81/51200 files (2.5% non-contiguous), 12353/204800 blocks
收缩文件系统
[root@lan1 /]# resize2fs /dev/vg01/lv01 100M
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/vg01/lv01 to 102400 (1k) blocks.
The filesystem on /dev/vg01/lv01 is now 102400 blocks long.
[root@lan1 /]# lvdisplay
--- Logical volume ---
LV Name /dev/vg01/lv01
VG Name vg01
LV UUID CjVh40-MrBQ-u852-W5oQ-pd8j-5MJ1-ZmYDQZ
LV Write Access read/write
LV Status available
# open 0
LV Size 200.00 MB
Current LE 50
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
再收缩LV
[root@lan1 /]# lvresize -L 100M /dev/vg01/lv01
WARNING: Reducing active logical volume to 100.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv01? [y/n]: y
Reducing logical volume lv01 to 100.00 MB
Logical volume lv01 successfully resized
[root@lan1 /]# lvdisplay
--- Logical volume ---
LV Name /dev/vg01/lv01
VG Name vg01
LV UUID CjVh40-MrBQ-u852-W5oQ-pd8j-5MJ1-ZmYDQZ
LV Write Access read/write
LV Status available
# open 0
LV Size 100.00 MB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
[root@lan1 /]# mount /dev/vg01/lv01 /mnt
[root@lan1 /]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sda2 ext3 5.7G 2.4G 3.1G 44% /
/dev/sda1 ext3 99M 12M 83M 12% /boot
tmpfs tmpfs 125M 0 125M 0% /dev/shm
/dev/mapper/vg01-lv01
ext3 97M 5.8M 86M 7% /mnt
[root@lan1 /]#
文件系统简介
在众多个linux发行版中存在着很多种文件系统格式,在RHEL中默认使用的是EXT3
EXT3从EXT2中升级而来,做了什么升级呢?
因为断电后内存与硬盘数据不符合,导致在ex2中很容易遇到故障,对此EXT3添加了日志功能
日志中记录了用户的操作.断电后下次开机如果记录与内容不符合则通过日志做redo.
这是日志的最大好处--加速恢复.
简单的说 EXT3 = EXT2 + journal
无论是哪种文件系统,为了提高存储效率,linux都会在文件系统上建立许多block
再为每一个块给予一个编号,做为block的识别码
在众多的block中,又分为两种,一种叫data_block,一种叫inode_block
我们在linux中建立一个文件时,linux除了存储这个文件的内容外,还会存储文件的相关信息
比如:大小,权限,拥有者等等
那么文件内容就存在于data_block中,文件的属性信息就存在inode_block中
当我们读取一个文件时,linux先去找这些相关的信息,根据这些信息才能从磁盘中取得文件内容
那么现在你应该知道文件的分成两部分存储在block中
属性信息存在inode_block,文件内容存在data_block
用 ls -li
65501 -rwxr-xr-x 1 seker seker 29150 2008-09-10 install.log
65501既是install.log文件的block编号
那么linux又是如何找到inode的呢?
答案是通过目录
符号链接
链接是一种特殊文件,在使用连接文件时,实际使用的是原始文件.使用者有种两个文件能相互同步的感觉
如果真要想弄明白链接的内部结构 需要从inode与block的层面才能分析清楚.
连接有两种:
建立命令 : 硬 ln src.log hard
软 ln -s src.log soft
1.硬链接
linux会在文件的存放目录中(data_block)添加一个新的文件名
而指向的inode编号与原始文件的inode编号相同,再把inode中的连接数+1.
原始数据始终都是只有一份,只是两个文件名同时引用了一个inode编号
2.软连接
linux会在文件的存放目录中(data_block)添加一个新的文件名
同时inode编号也全新的,只是新的inode中记录的是原始文件的路径名称
目录的data_block信息
--------------------
| 文件名 inode |
| src.log 1555 |
| hard 1555 |
| soft 1888 |
--------------------
文件的inode信息
--------------------
| 1555 1888 |
--------------------
其中1555指向的是文件data_block,而1888则指向的是目录data_block中的src.log 1555这一条路径
硬链接和软连接的差别
1. 类型 查看的文件类型字符处,硬链接与原始文件类型相同,软连接则是l
2. 权限 硬链接与原始文件权限相同,软连接则是777权限,但实际权限则取决于原始文件.
3. 大小 硬链接显示的与原始文件相同,但实际并不浪费空间,软链接则是原始文件路径名称的字符数
4. 删除 删除原始文件后,硬链接依然可以使用,而软连接则失效
当删除文件时,会在文件的inode中将连接数减一,如果减一后不是0,则不回收相关inode与block
5. 限制 硬链接只能作用于文件,且不能跨分区;软链接即可作用于目录又可以是文件,可跨分区
6. inode 硬链接与原始文件使用同一个inode,软链接则是独立的使用一个新的inode
演示:
软硬链接都是读取的一份原始数据,软连接只认一个原始文件名字
[root@lan2 dir2]# echo "00000000" >> file_src
[root@lan2 dir2]# ln file_src link_hard
[root@lan2 dir2]# ln -s file_src link_soft
[root@lan2 dir2]# cat link_hard
00000000
[root@lan2 dir2]# cat link_soft
00000000
[root@lan2 dir2]# ll -i
总计 8
65591 -rw-r--r-- 2 root root 9 05-16 15:42 file_src
65591 -rw-r--r-- 2 root root 9 05-16 15:42 link_hard
65598 lrwxrwxrwx 1 root root 8 05-16 15:42 link_soft -> file_src
[root@lan2 dir2]#
[root@lan2 dir2]# rm -rf file_src
[root@lan2 dir2]# cat link_hard
00000000
[root@lan2 dir2]# cat link_soft
cat: link_soft: 没有那个文件或目录
[root@lan2 dir2]#
[root@lan2 dir2]# cat link_soft
cat: link_soft: 没有那个文件或目录
[root@lan2 dir2]# echo "1111111" >> file_src
[root@lan2 dir2]# cat link_soft
1111111
[root@lan2 dir2]#
quota 磁盘配额
限制某用户建立大文件或多文件把磁盘空间耗尽,把inode耗尽.
基于两种模式user和group级,常用的是user级.
mount -o remount,rw,usrquota /home
quotacheck /home
quotaon /dev/sda4
创建配额文件.
ls /home/aquota.user
编辑配额
edquota -u user_name
blocks 用户已使用了多少.不能修改.这里和mkfs的BLOCK没关系.默认是1K = 1 block
soft 软限制(警告限制).
hard 硬限制(停用限制).
当blocks使用到soft时,给出警告. 达到hard时,停止了.
inodes 一般情况下一个文件使用一个inode.限制用户可以建立多少个文件.
打印配额报表
repquota -a
7days是达到了soft,还没到hard.那么第七天后也依旧不能再使用剩余的free space了.
修改方法 edquota -t
组的配额
/
| 组成员共同拥有的资源控制.
\
setquota 设置方法 , 可以写用户交互脚本,把变量引入这个命令去执行.
[root@seker ~]# setquota
setquota: Bad number of arguments.
setquota: Usage:
setquota [-u|-g] [-F quotaformat] <user|group>
<block-softlimit> <block-hardlimit> <inode-softlimit> <inode-hardlimit> -a|<filesystem>...
setquota [-u|-g] [-F quotaformat] <-p protouser|protogroup> <user|group> -a|<filesystem>...
setquota [-u|-g] [-F quotaformat] -b -a|<filesystem>...
setquota [-u|-g] [-F quotaformat] -t <blockgrace> <inodegrace> -a|<filesystem>...
setquota [-u|-g] [-F quotaformat] <user|group> -T <blockgrace> <inodegrace> -a|<filesystem>...
Bugs to: [email protected], [email protected]
[root@seker ~]#
setquota -u seker 200 400 20 40 /dev/sda6