Red Hat Linux System Administrator Unit 7 - Advanced Filesystem Management

 

 學習目標

 

Configuring the Quota System

1. kernel 需要支援
2. 獨立的 partition 來做 quota
3. 可以限制 user 或 gruop 的 quota,限制其 blocks or imodes 的數量,分成 soft quota 跟 hard quota,超過 soft quota 限制系統提出警告,若超過 hard quota 限制則強制不予寫入磁碟。
4. partition mount 的參數: usrquota, grpquota
5. 初始化 quota 的資料庫:quotacheck


Setting Quotas for Users
啟動/關閉 quota: quotaon/quotaoff, ex: # quotaon /home
編輯設定 user 的 quota:# edquota username
# setquota username softquota(Kb) hardquota(Kb) inode_unmber_of_softquota inode_number_of_hardquota /directory
From Sheel 直接設定: # setquota  username 4096 5120 40 50 /foo
複製 quota 的 prototypical 設定:# edquota -p user1 user2
設定 grace period 時間(超過 soft quota 的緩衝時間): # edquota -t
查看 user 的 quota: # quota user
查看 quota 設定: # repquota -a
Miscellaneous utilities: warnquota,可以寫script

 

What is Software RAID?
RAID0: Striping,把兩顆硬碟串成一顆高效能的硬碟,容量是 1+1 = 2
RAID1: Mirroring,兩顆硬碟做鏡像,容量是 1+1=1
RAID5: 三顆或三顆以上硬碟互相做備援,可容忍系統掛一顆硬碟 還可以正常運作,可使用1顆或1顆以上備用硬碟(spares)
mdadm,指令操作管理 RAID0, RAID1, RAID5
RAID 的設備檔名稱: /dev/md0, /dev/md1, /dev/md2 以此類推

 

Software RAID Configuration
# mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/hda1 /dev/hdb1 /dev/hdc1

/dev/md0,新建的 RAID 設備檔
-a, --auto{=no,yes,md,mdp,part,p}
-n,設定幾顆 online 的硬碟
-x,設定幾顆 spare 的硬碟
格式化硬碟
# mke2fs -j /dev/hdd1
# mkfs.ext3 /dev/hdd1

查看 RAID 設備檔
# mdadm --detail /dev/md0 

 

Software RAID Testing and Recovery
模擬硬碟掛掉
# mdadm /dev/md0 -f /dev/hdb1
# mdadm /dev/md0 --fail /dev/hdb1
查看 RAID 的狀況,recovering 進度
# cat /proc/mdstat
換新硬碟後,再加入 RAID 中
# mdadm /dev/md0 -a /dev/hdb1
# mdadm /dev/md0 --add /dev/hdb1

 

Creating Logical Volumes
讓硬碟成為 PV 格式
# pvcreate /dev/hda3
建立 Volume group
# vgcreate vg0 /dev/hda3
建立 Logical Volume
# lvcreate -L 300M -n data vg0
格式化硬碟
# mke2fs -j /dev/vg0/data

 

Resizing Logical Volumes
Growing Volumes,加大空間的順序

Shrinking volumes,縮減空間的順序

 

Logical Volume Manager Snapshots

Using LVM Snapshots
建立當時data的snapshot,存成databackup
# lvcreate -l 64 -s -n databackup /dev/vg0/data

Mount Snapshot
掛載databackup,看裡面內容
# mkdir -p /mnt/databackup
# mount -o ro /dev/vg0/databackup /mnt/databackup
Remove Snapshot
移除snapshot
# umount /mnt/databackup
# lvremove /dev/vg0/databackup

Archiving tools: tar
tar,壓縮備份工具,支援GZIP,BZIP2,可保留權限、屬性、時間

Archiving Tools: dump/restore
0,完整備份,-f 寫到哪個設備
# dump -0u -f /dev/nst0 /dev/hda2
還原
# restore -rf /dev/nst0

Archiving Tools: rsync,scp


Lab 7 重點
Sequence1
# vi /etc/fstab
/dev/hdb1   /home   ext3   defaults,usrquota   0 0
# mount -a
# mount -o remount /home
# quotacheck -cu /home
# quotaon /home
# setquota -u smallken 512 1024 0 0 /home
# su - smallken
$ quota,查看quota內容
Disk quotas for user smallken (uid 508):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/hdb1      40     512    1024               5       0       0
產生空檔案,因為在512K的soft limit 以下,所以沒事
$ dd if=/dev/zero of=bigfile bs=1k count=400
400+0 records in
400+0 records out
409600 bytes (410 kB) copied,0.00383298 秒,107 MB/s
產生800K的空檔案,因為超過512K的soft limit,但還在1024K的hard limit 的範圍以內,所以出現警告
$ dd if=/dev/zero of=bigfile bs=1k count=800
hdb1: warning, user block quota exceeded.
800+0 records in
800+0 records out
819200 bytes (819 kB) copied,0.00972682 秒,84.2 MB/s
產生1600K的空檔案,因為超過了1024K的hard limit限制,所以產生檔案生敗
$ dd if=/dev/zero of=bigfile bs=1k count=1600
hdb1: warning, user block quota exceeded.
hdb1: write failed, user block limit reached.
dd: 寫入 ‘bigfile’: 硬碟 quota 滿了
977+0 records in
976+0 records out
999424 bytes (999 kB) copied,0.0255858 秒,39.1 MB/s
$ quota
Sequence2
a.使用fdisk準備四個partition都是100M
b.都設成partition Type 為 T -> fd
# fdisk -l /dev/hdb
   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1         208       98248+  fd  Linux raid autodetect
/dev/hdb2             209         416       98280   fd  Linux raid autodetect
/dev/hdb3             417         624       98280   fd  Linux raid autodetect
/dev/hdb4             625         832       98280   fd  Linux raid autodetect
# partprobe
產生 md0,把 /dev/hdb1,/dev/hdb2 加入它
# mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/hdb1 /dev/hdb2
產生 md1,把 /dev/hdb3, /dev/hdb4 加入它
# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/hdb3 /dev/hdb4
格式化 /dev/md0
# mkfs.ext3 /dev/md0
# mkdir /data
把掛載/dev/md0掛載起來
# mount /dev/md0 /data
copy 資料進去 /data
# cp -a /lib /data
看 /dev/md0 的詳細資訊
# mdadm --detail /dev/md0
模擬 /dev/hdb1 失效
# mdadm --fail /dev/md0 /dev/hdb1
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdb4[1] hdb3[0]
      98176 blocks [2/2] [UU]

md0 : active raid1 hdb2[1] hdb1[2](F)
      98176 blocks [2/1] [_U]
模擬拔除 /dev/hdb1 的硬碟
# mdadm --remove /dev/md0 /dev/hdb1
重新加入新硬碟 /dev/hdb1
# mdadm -a /dev/md0 /dev/hdb1
查看,都是健康的硬碟
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hdb4[1] hdb3[0]
      98176 blocks [2/2] [UU]

md0 : active raid1 hdb1[0] hdb2[1]
      98176 blocks [2/2] [UU]

Sequence3

# umount /data
將實體 partition 建立成為 PV
# pvcreate /dev/md0
將 /dev/md0 加入 vg1
# vgcreate vg1 /dev/md0
# vgdisplay vg1
建立完 LV 就已經完成最後一道手續, 類似 /dev/hda1, /dev/hdb2 這種 partition 了,可以掛載 /home, /usr...這些系統目錄
# lvcreate -n data -l 20  vg1
# mkfs.ext3 /dev/vg1/data
# vi /etc/fstab
/dev/vg1/data           /data                   ext3    defaults        1 2
# mount -a


Sequence4
# pvcreate /dev/md1
把 /dev/md1 也加入 vg1
# vgextend vg1 /dev/md1
加大 /dev/vg1/data 的空間
# lvextend -L +40M /dev/vg1/data
寫入系統
# resize2fs /dev/vg1/data
# df -h
檔案系統              容量  已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
                      7.1G  1.4G  5.4G  20% /
/dev/hda1              99M   12M   83M  13% /boot
tmpfs                 147M     0  147M   0% /dev/shm
/dev/mapper/vg1-data  117M  5.6M  105M   6% /data


Sequence5
# umount /data
縮小空間前先fsck
# fsck -f /dev/vg1/data
先縮小系統
# resize2fs /dev/vg1/data 20M
再縮小LV
# lvreduce /dev/vg1/data -L 20M
重新掛載 /data 來驗證一下空間的變化
# mount /dev/vg1/data /data
# df -h
檔案系統              容量  已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
                      7.1G  1.4G  5.4G  20% /
/dev/hda1              99M   12M   83M  13% /boot
tmpfs                 147M     0  147M   0% /dev/shm
/dev/mapper/vg1-data   20M  4.6M   14M  25% /data


Sequence6
# cp -r /var/log/* /data/
# ls /data/
建立一個snapshot
# lvcreate -L 16M -p r -s -n data-backup /dev/vg1/data
# mkdir /mnt/data-backup
用read only mount 起來,才能看見內容
# mount -o ro /dev/vg1/data-backup /mnt/data-backup/
把資料先dump在/tmp 目錄中
# dump -0u -f /tmp/data-backup.dump /mnt/data-backup/
# umount /mnt/data-backup/
刪除 snapshot
# lvremove /dev/vg1/data-backup
# umount /data/
格式化
# mkfs.ext3 /dev/vg1/data
# mount /data/
沒有內容了
# ls /data/
回復備份資料
# restore -rf /tmp/data-backup.dump
資料又回來了
# ls /data/












By SmallKen