本章內容
磁盤結構
分區類型
管理分區
管理文件系統
掛載設備
管理虛擬內存
RAID管理
LVM管理
LVM快照
設備類型:
塊設備:block,存取單位「塊」,磁盤
字符設備:char,存取單位「字符」,鍵盤
磁盤管理
cp /dev/sda /data/至關於複製的sda下的數據
cp -a /dev/sda /data/複製文件
I/o 性能:磁盤讀寫,網絡或者本地
分區:
兩種分區方式:
MBR,MBR支持最大2TB磁盤,它沒法處理大於2TB容量的磁盤。MBR還只支持最多4個主 分區
GPT 磁盤驅動器容量能夠大得多,大到操做系統和文件系統都無法支持。它同時還支持幾乎 無限個分區數量
MBR: Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T
如何分區:按柱面
0磁道0扇區:512bytes
446bytes: boot loader
64bytes:分區表
16bytes: 標識一個分區
2bytes: 55AA
4個主分區;3主分區+1擴展(N個邏輯分
hexdump -C :一二進制呈現
hexdump -C /dev/sda | less :一二進制呈現
建立設備文件
mkond 建立特殊類別的設備文件 塊設備文件b 字符設備文件c
mknod /app/sda b 8 0
mknod /app/zhongduan1 c 4 1
命名規則
centos5及以前
ide /dev/hda
/dev/hdb
...
/dev/hdaa
sata/sas/scsi/usb /dev/sda
/dev/sdb
centos6及以後
sata/sas/scsi/usb/ide /dev/sda
kvm虛擬機的虛擬硬盤 /dev/vda
xen虛擬機的虛擬硬盤 /dev/xvda
vmware的虛擬硬盤 /dev/sda
若是要加硬盤的話須要把硬盤的名字改下,
sda 8:0 0 120G 0 disk
├─sda1 8:1 0 300M 0 part /boot
├─sda2 8:2 0 20G 0 part /
├─sda3 8:3 0 10G 0 part /app
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
sda 和sdb 的名字在6和7系統上會改變
虛擬磁盤:/dev/vd
不一樣磁盤標識:a-z,aa,ab…
/dev/sda, /dev/sdb, ...
同一設備上的不一樣分區:1,2, ...
/dev/sda1, /dev/sda5
硬盤存儲術語
head:磁頭
track:磁道
cylinder: 柱面
有幾個磁道就有幾個磁柱
sector: 扇區,一個扇區是 512bytes字節
磁盤的三圍
c:2^10=1024
h:2^8=256
s:2^6=64
一個扇區大小512byte
256*64*1024*512/1024/1024/1024=8GB
CHS表示最先的8G
8G以上的用LBA表示
1 分區 :查看分區方式:fidisk -l 主分區:一個字節是8位 4個字節=32位 就是 2的32次方 擴展分區
2 建立文件系統
3 掛載:文件分配目錄名
K, M, G, T, P, E, Z, Y, B, N, D
1.BIOS basic input/output system 自檢
2.由第一啓動項,引導OS
3.MBR Master boot record 主引導記錄
446 boot loader
lilo linux loader
grub
grub2
16*4=64 分區
55 AA 結束位
2^8 2^10 2^6
256 1024 64
h:磁頭 c柱面 s扇區
100號5單元1501
200號7單元201
16字節 CHS 24bit
分區是否活動 head 扇區6 2+ 8 =10 柱面 分區的類型 head 扇區6 2+ 8 =10 柱面
1 2 3 4 5 6 7 8
9 16
dd命令
skip=xxx 是在備份時對if後面的部分也就是原文件跳過多少塊
seek=xxx 是在備份時對of後面的部分也就是目標文件跳過多少塊開始寫
實驗一:備份mbr,並破壞,再恢復
1.備份分區表:mbr 用hexdump -C /dev/sda -n 521 查看硬盤分區表前521個字節
dd if=/dev/sda of=/app/mbr.img bs=1 count=512 生成一個文件放在/app/mbr.img 讀一 字節,讀512次 最後生成一個文件
若是放在本地硬盤,系統若是起不來,硬盤則讀不出數據,因此備份到網絡
2.將mbr.img 複製到其餘主機 sz /app/mbr.img
scp(複製) /索要備份的內容 192.168.30.128:/備份到的地方(遠程主機)/
3.破壞mbr
5.在另外一個主機上將被破壞的硬盤添加
6.在vmware虛擬機,新加硬盤不用重啓的生效方法
echo '- - -' > /sys/class/scsi_host/host0/scan
7.恢復
dd if=mbr.img of=/dev/sdb
8.poweroff
9.開啓被恢復的主機
10.從恢復機中刪除故障硬盤.
實驗二:僅破壞分區表,並恢復.
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
dd if=/app/mbr.img of=/dev/sda bs=1 count=64 skip=446 seek=446
實驗三:新增硬盤sdb,並使用sda的mbr備份來恢復sdb的分區表
dd if=/app/mbr.img of=/dev/sdb bs=1 count=66 skip=446 seek=446
管理分區
lsblk
全部的塊設備
列出塊設備
• lsblk
建立分區使用:
• fdisk 建立MBR分區
• gdisk 建立GPT分區
• parted 高級分區操做
partprobe-從新設置內存中的內核分區表版本
parted 支持msdos (MBR)和gpt
交互和非交互
parted /dev/sda
parted -l 列出全部硬盤的分區信息
parted /dev/sda print 列出指定硬盤的分區
parted /dev/sdb mklabel msdos 設置硬盤的分區類 型
或gpt
parted /dev/sdb mklabel msdos -s 自動回答yes
parted /dev/sdb mkpart primary 1 2G primary :主分區
parted /dev/sdb mkpart primary 2G 4G
parted /dev/sdb mkpart primary 4G 6.5G
parted /dev/sdb mkpart extended 6.5G 21.5G
parted /dev/sdb mkpart logical 6.5G 7G
fdisk 支持msdos,在centos7中也支持gpt(不建議使用)
fdisk -l 查看全部硬盤的分區信息
fdisk -l /dev/sda 查看指定硬盤的分區信息
fdisk /dev/sdb 建立分區
o 設置msdos分區表
g 設置gpt分區表(不建議使用)
m 幫助
n 建立分區
p 主分區
e 擴展分區 (請把全部空間分給擴展)
起始的扇區數 通常直接回車,取可用的最小扇區
結束的扇區數 通常用+XX K/M/G 來指定具體分多少大小的分區
q 退出不保存
w 退出並保存
t 設置分區的類型
d 刪除指定分區
a 設置該分區爲啓動分區,或設置爲非啓動
p 顯示分區表
u 更新顯示分區起止的單位,在扇區和柱面之間切換
非交互方式
echo -e "n\np\n\n\n+1G\nw\n" |fdisk /dev/sdb &> /dev/null
gdisk 只能劃分gpt分區
gdisk -l 列出全部硬盤分區表
gdisk /dev/sdb 對分區進行劃分
o 建立gpt分區表
m 幫助
n 建立分區
起始的扇區數 通常直接回車,取可用的最小扇區
結束的扇區數 通常用+XX K/M/G 來指定具體分多少大小的分區
q 退出不保存
w 退出並保存
t 設置分區的類型
L 查看分區的類型所對應的代碼表示方式
d 刪除指定分區
p 顯示分區表
非交互方式
echo -e "n\n\n\n+2G\n\nw\ny\n" |gdisk /dev/sdb
對於非系統所在硬盤,內核自動更新分區表,而對於系統所在硬盤,不能直接列新,要使用如下命令
通知內核讀取分區表
cenots5\centos7: partprobe (centos6不可用)
centos6:partx -a /dev/sda 添加
partx -d --nr /dev/sda7 刪除
同步分區表
查看內核是否已經識別新的分區:
cat /proc/partitions :當前內核所加載的分區表
8 0 125829120 sda
8 1 307200 sda1
8 2 33562624 sda2
8 16 20971520 sdb
8 17 2097152 sdb1
8 18 2097152 sdb2
11 0 1048575 sr0
253 0 20971520 dm-0
253 1 2097152 dm-1
253 2 10485760 dm-2
8 32 10485760 sdc
8 33 1048576 sdc1
8 34 1048576 sdc2
253 3 307200 dm-3
253 4 307200 dm-4
centos6通知內核從新讀取硬盤分區表,要是不一樣步,系統不識別新的分區
新增分區得時候須要同步
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
刪除分區用
partx -d --nr M-N /dev/DEVICE
CentOS 5,7: 使用partprobe
partprobe [/dev/DEVICE]
日誌:
/var/log/httpd/access_log
redo log
張三 8000 +1000
李四 10000
partprobe /dev/sdb
ext2 3 journal
inode bitmap
0 1 2 3 4 5 6 7 8
0 1 1 0 0
block bitmap
clean noclean
文件系統 :
在存儲設備上組織文件的方法
把二進制代碼轉化爲人類能看懂的方式
類型:
Linux文件系統:ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs
(Oracle), reiserfs, jfs(AIX), swap
光盤:iso9660
Windows:FAT32, exFAT,NTFS
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集羣文件系統:GFS2, OCFS2(oracle)
分佈式文件系統: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未經處理或者未經格式化產生的文件系統
分類:
根據其是否支持"journal"功能:
日誌型文件系統: ext3, ext4, xfs, ...
它保證了數據的完整性。當發生系統錯誤時,一個全日誌文件系統將會保證磁盤上的數 據恢復到發生系統崩潰前的狀態。同時,它還將覆蓋未保存的數據,並將其存在若是計算機沒有崩潰的話這些數據可能已經遺失的位置,
非日誌型文件系統: ext2, vfat
文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統:VFS
查前支持的文件系統:cat /proc/filesystems
建立文件系統
mkfs
mkfs.xfs /dev/sdb1 文件系統類型切換,
mkfs -t xfs -f /dev/sdb2
mkfs.ext4 /dev/sdb2
mkfs -t ext4 /dev/sdb2
mke2fs /dev/sdb2 格式化爲ext2
(1) mkfs.FS_TYPE /dev/DEVICE
ext4
xfs
btrfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL': 設定卷標
建立ext文件系統
mke2fs : ext系列文件系統專用管理工具
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
mke2fs -j /dev/sdb2 增長日誌區,即格式化爲ext3
-t ext2|ext3|ext4 類型
-L "LABEL 設定卷標
e2label /dev/sdb2 僅限ext文件系統
e2label /dev/sdb2 hello
-N #:指定分區中建立多少個inode
-b {1024|2048|4096} 指定block大小
-j: 至關於 -t ext3
-i #: 爲數據空間中每多少個字節建立一個inode;此大小不該該小於block的大小
-N #:指定分區中建立多少個inode
-I 一個inode記錄佔用的磁盤空間大小,128---4096
-m #: 默認5%,爲管理人員預留空間佔總空間的百分比
-O FEATURE[,...]:啓用指定特性
-O ^FEATURE:關閉指定特性
文件系統標籤:
指向設備的另外一種方法
與設備無關
blkid:塊設備屬性信息查看
blkid [OPTION]... [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的卷標來查找對應的設備
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [LABEL]
findfs :查找分區
findfs [選項] LABEL=<label>
findfs [options] UUID=<uuid>
[root@centos7 ~]# findfs UUID="cf7674ce-563a-46f8-83fe-4596082b33ee"
/dev/mapper/vg_centos-lv_centos2
在/etc/fstab 下直接自動掛載 LABEL(卷標)和UUID兩種
LABEL=mage1 /mnt/mage1 ext4 defaults 0 0
UUID=996b2280-1eaa-4560-b8e3-0c742912afa8 /mnt/mage2 ext4 defaults 0 0
-U UUID: 根據指定的UUID來查找對應的設備
[root@instructor_v7(nanyibo) ~]# blkid -U 996b2280-1eaa-4560-b8e3-0c742912afa8
/dev/sdb2
-L LABEL:根據指定的LABEL來查找對應的設備
[root@instructor_v7(nanyibo) ~]# blkid -L mage1
/dev/sdb1
[root@instructor_v7(nanyibo) ~]# findfs /dev/sdb2
[root@instructor_v7(nanyibo) ~]# findfs UUID=996b2280-1eaa-4560-b8e3-0c742912afa8
/dev/sdb2
[root@instructor_v7(nanyibo) ~]# findfs LABEL=mage1
/dev/sdb1
超級快和inode table
tune2fs:從新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息;super block
-L 'LABEL':修改卷標
-m #:修預留給管理員的空間百分比
-j: 將ext2升級爲ext3
-O: 文件系統屬性啓用或禁用, –O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl ***
-U UUID: 修改UUID號
注意:必定不要在掛載狀態下修復
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE必定要與分區上已經文件類型相同
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答爲yes
-f:強制修復
文件系統檢測和修復
常發生於死機或者非正常關機以後
掛載爲文件系統標記爲「no clean」
注意:必定不要在掛載狀態下修復
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自動修復錯誤
-r: 交互式修復錯誤
FS_TYPE必定要與分區上已經文件類型相同
e2fsck:ext系列文件專用的檢測修復工具
-y:自動回答爲yes
-f:強制修復
mount 掛載
mount 源目的
filesystem directory
/dev/sda1 /boot
/boot/grub2/grub.cfg
/dev/sda2 /
/etc/sysconfig/network
/dev/sda3 /app
fsck /dev/sdb2 自動判斷文件系統類型
mount:經過查看/etc/mtab文件顯示當前已掛載的全部設備 cat /etc/mtab
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設備;
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L 'LABEL', 例如 -L 'magedu'
(4) 僞文件系統名稱:proc, sysfs, devtmpfs, configfs
dir:掛載點
事先存在;建議使用空目錄
進程正在使用中的設備沒法被卸載
查看全部正在運行的進程:ps aux | less
mount經常使用命令
-t vsftype:指定要掛載的設備上的文件系統類型
-r: readonly,只讀掛載
-w: read and write, 讀寫掛載
-n: 不更新/etc/mtab,mount不可見
cat /proc/mounts 能夠看到用-n所隱藏的掛載信息
-a:自動掛載定義在了/etc/fstab文件中還沒有掛載的文件系統,且掛載選項中有auto功能)
也能夠用mount 後僅跟一個參數,從而去/etc/fstab中找另外一個參數。
-L 'LABEL': 以卷標指定掛載設備
-U 'UUID': 以UUID指定要掛載的設備
-B, --bind: 綁定目錄到另外一個目錄上
查看內核追蹤到的已掛載的全部設備
cat /proc/mounts
-o
ro 只讀
rw 讀寫 默認
async|sync 異步傳輸
atime|noatime
diratime/nodiratime
auto|noauto 是否可使用mount -a 自動掛載
exex|noexec 禁止執行任何權限,不管是否有x權限
mount -o remount,nodev /dev/sdb1
dev|nodev 是否能夠在該文件系統上使用dev設備
suid|nosuid 是否suid權限生效
remount 從新掛載,要在後面具體指掛載選項,如不指定,從新掛載爲默認權限
nouser|user 是否容許寫入/etc/fstab中的掛載項目讓普通用戶執行以進行 掛載及卸載,如 :mount /dev/sda8
acl 是否在掛載時指定acl 安全性
loop 功能吧文件掛到目錄上
dd if=/dev/zero of=test.iso bs=1M count=100
mkfs.ext4 test.iso
mount -o loop test.iso /app/data2
losetup -a 可列出loop掛載的設備
ll /8 b 7 8
dev/loop* r若是想增長loop設備,mknod /dev/loop
defaults:至關於rw, suid, dev, exec, auto, nouser, async
修改UUID :tune2fs -U 'uuidgen' /den/sdb1
umount:卸載
查看掛載狀況
findmnt MOUNT_POINT|device
查看正在訪問指定文件系統的進程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止全部在正訪問指定的文件系統的進程
fuser -km MOUNT_POINT
卸載
umount DEVICE
umount MOUNT_POIN
掛載點和、etc/fstab
配置文件系統體系
被mount、fsck和其它程序使用
系統重啓時保留文件系統體系
能夠在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的全部文件系統
lsblk :查看的是內存中的分區表
fdisk -l /dev/sdb :硬盤中的分區表
partx -d --nr 1-2 /dev/sdb 刪除分區表中sdb的分區
文件掛載配置文件
/etc/fstab每行定義一個要掛載的文件系統
掛載點一般在/media 或/mnt下
(1) 設備文件:例如/dev/sda5
(2) 卷標:-L 'LABEL', 例如 -L 'magedu'
(3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
處理交換文件和分區
掛載交換分區
使用光盤:
在圖形環境下自動啓動掛載/run/media/<user>/<label>
不然就必須被手工掛載
mount /dev/cdrom /mnt/
eject命令卸載或彈出磁盤
建立ISO文件
cp /dev/cdrom /root/centos7.iso
mkisofs -r -o /root/etc.iso /etc
刻錄光盤
wodim –v –eject centos.iso
經常使用工具:
文件系統空間佔用等信息的查看工具:
df [OPTION]... [FILE]...
-H 以1000爲單位
-T 文件系統類型
-h: human-readable
-i:inodes instead of blocks
-P: 以Posix兼容的格式輸出
查看某目錄整體空間佔用狀態:
du [OPTION]... DIR
-h: human-readable
-s: summary --max-depth 合計
對於有進程訪問目錄而沒法卸載的狀況
方法一:
[root@localhost_v6(nanyibo) ~]# lsof /app/data1/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sleep 4137 root cwd DIR 8,8 2802688 2 /app/data1
[root@localhost_v6(nanyibo) ~]# kill 4137
方法二:
fuser -vm /app/data1
fuser -km /app/data1
練習:經過/etc/fstab ,指定掛載點,能夠查出對應的分區名
方法一: dir=/;findfs `cat /etc/fstab |grep -w $dir |cut -d" " -f1`
方法二: dir=/;findfs $(cat /etc/fstab |grep "[[:space:]]$dir[[:space:]]" | cut -d" " -f1)
方法三: dir=/app;findfs $(cat /etc/fstab |grep "$dir[[:blank:]]"|sed -r "s@(.*)[[:blank:]]+$dir.*@\1@")
擴展swap
基於分區的Swap
fdisk /dev/sda
mkswap /dev/sda9
swapon /dev/sda9
開機自動激活,寫入/etc/fstab
UUID=8a5c6dbe-1025-462b-ad32-53ded1918d63 swap swap defaults 0 0
基於文件的swap
dd if=/dev/zero of=swap.img bs=1M count=1024
mkswap swap.img
swapon /app/swap.img
/app/swap.img swap swap defaults 0 0
swap的優先級
swapon -p xx /dev/sdaX
也能夠寫入/etc/fstab使永久生效
UUID=5a1ff0b5-5c19-42e3-8b6a-65e7d332ee0c swap swap defaults,pri=20 0 0
UUID=8a5c6dbe-1025-462b-ad32-53ded1918d63 swap swap defaults,pri=15 0 0
/app/swap.img swap swap defaults,pri=10 0 0
mkswap /dev/sdb1 swapon -a 生效
建立iso文件
mkisofs -r -o etc.iso /etc/
dd if=/dev/zero of=test.iso bs=1M count=512
方法一:從新編譯內核,使ntfs模塊被編譯
read only
方法二:ntfs-3g epel
dd命令:轉換和複製文件
1 dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 複製單元大小
count=#:複製多少個bs
of=file 寫到所命名的文件而不是到標準輸出
if=file 從所命名文件讀取而不是從標準輸入
bs=size 指定塊大小(既是是ibs也是obs)
ibs=size 一次讀size個byte
obs=size 一次寫size個byte
cbs=size 一次轉化size個byte
skip=blocks 從開頭忽略blocks個ibs大小的塊
seek=blocks 從開頭忽略blocks個obs大小的塊
count=n 只拷貝n個記錄
conv=conversion[,conversion...] 用指定的參數轉換文件
轉換參數:
ascii 轉換 EBCDIC 爲 ASCII
ebcdic 轉換 ASCII 爲 EBCDIC
lcase 把大寫字符轉換爲小寫字符
ucase 把小寫字符轉換爲大寫字符
nocreat 不建立輸出文件
noerror 出錯時不中止
notrunc 不截短輸出文件
sync 把每一個輸入塊填充到ibs個字節,不足部分用空(NUL)字
符補齊
不然,則顯示最後一個磁盤上的空間使用信息
備份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
有一個大與2K的二進制文件fileA。如今想從第64個字節位置開始讀取,須要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,實現以下:
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
dd備份:
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
將壓縮的備份文件恢復到指定盤
1 拷貝內存資料到硬盤
dd if=/dev/mem of=/root/mem.bin bs=1024
將內存裏的數據拷貝到root目錄下的mem.bin文件
從光盤拷貝iso鏡像
dd if=/dev/cdrom of=/root/cd.iso
拷貝光盤數據到root文件夾下,並保存爲cd.iso文件
銷燬磁盤數據
dd if=/dev/urandom of=/dev/sda1
利用隨機的數據填充硬盤,在某些必要的場合能夠用來銷燬數據,執行此操做之後,
/dev/sda1將沒法掛載,建立和拷貝操做沒法執行
磁盤配額
獲得最恰當的block size
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
經過比較dd指令輸出中命令的執行時間,便可肯定系統最佳的block size大小
修復硬盤
dd if=/dev/sda of=/dev/sda
測試硬盤寫速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
測試硬盤讀速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
vim /etc/fstab
defaults,usrquota,grpquota
quotacheck(配額檢查) -cugm /app 建立用戶、組的quota數據文件,位於掛載點的根目錄
quotaon /app 激活quota。
edquota guanyu 交互式,調用vim編輯
edquota -p guanyu zhangfei 將guanyu的quota設置複製給zhangfei
setquota guanyu 10M 20M 0 0 /app/ 非交互式
實驗:對系統中全部大於等於1000的用戶設置基於文件大小的quota,軟限制10m,硬限制20m
方法一:
cat /etc/passwd |egrep "x\:[0-9]{4,}\>" |cut -d: -f1 |xargs -i setquota {} 10M 20M 0 0 /app/
方法二:
for n in $(cat /etc/passwd |egrep "x\:[0-9]{4,}\>" |cut -d: -f1);do setquota $n 10M 20M 0 0 /app/ ;done
*** Report for user quotas on device /dev/sda5
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 4 0 0 1 0 0
nfsnobody -- 0 10240 20480 0 0 0
nanyibo -- 0 10240 20480 0 0 0
liubei -- 0 10240 20480 0 0 0
testuser -- 0 10240 20480 0 0 0
guanyu -- 0 10240 20480 0 0 0
zhangfei -- 0 10240 20480 0 0 0
warnquota 在centos7當中,要安裝quota-warnquota
warnquota -u [默認],把郵件發送給普通用戶
read
RAID-0:條帶卷 讀、寫性能提高,無容錯能力 ,最少磁盤數:2, 2+
RAID-1: 鏡像卷,有冗(yun)餘能力,最少磁盤數:2, 2N,安全性能高
建立raid1
mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd{e,f} -x 1 /dev/sdg
RAID-5:讀、寫性能提高 ,有容錯能力:
容許最多1塊磁盤損壞 最少磁盤數:3, 3+ ,生產中用的最 多,多塊數據盤異或運算值存於專用校驗盤
建立raid5
mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sd{h,i,j}
RAID-6:讀、寫性能提高 可用空間:(N-2)*min(S1,S2,...) 有容錯能力:
容許最多2塊磁盤損壞 最少磁盤數:4, 4+
RAID-10:讀、寫性能提高 可用空間:N*min(S1,S2,...)/2 有容錯能力:每組鏡像最多隻能壞一塊 最少磁盤數:
4, 4+
......
軟RAID
軟件RAID的實現
軟RAID配置示例
軟RAID測試和修復
軟RAID管理
軟件raid的實現
mdadm
-C: 建立模式
-n #: 使用#個塊設備來建立此RAID
-l #:指明要建立的RAID的級別
-a {yes|no}:自動建立目標RAID設備的設備文件
-c CHUNK_SIZE: 指明塊大小
-x #: 指明空閒盤的個數
-D:顯示raid的詳細信息;
mdadm -D /dev/md#
管理模式:
-f: 標記指定磁盤爲損壞
-a: 添加磁盤
-r: 移除磁盤
觀察md的狀態:
cat /proc/mdstat
建立read步驟:
1.在VMware當中爲該主機增長虛擬硬盤
2.echo '- - -' > /sys/class/scsi_host/host0/scan 使新增的硬盤馬上生效
3.建立raid0
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sd{c,d}
4.分區fdisk /dev/md0 非必需
5.格式化mkfs.ext4 /dev/md0
5.掛載
查看raid狀態
方法1: cat /proc/mdstat
方法2: mdadm -D /dev/md0
使用四塊盤,作一個raid 10。
mdadm -C /dev/md1 -a yes -l 10 -n 4 /dev/sd{e..h}
mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd{b,c}
mdadm -C /dev/md1 -a yes -l1 -n2 /dev/sd{d,e}
mdadm -C /dev/md2 -a yes -l0 -n2 /dev/md{0,1}
刪除raid
1.卸載
移除磁盤 mdadm /dev/md0 –r /dev/sda1
2.停掉raid
mdadm -S /dev/mdX
3.清空該raid每一個成員盤的superblock
mdadm --zero-superblock /dev/sdX /dev/sdY ……
給raid新增成員
mdadm –G /dev/md0 –n 3 -a /dev/sdf1
模擬損壞 僅限raid1和raid5
mdadm /dev/md0 -f /dev/sdc
模擬移除
mdadm /dev/md0 -r /dev/sdc
模擬增長
mdadm /dev/md0 -a /dev/sdc
保存raid狀態
mdadm -D -s /dev/md0 > /etc/mdadm.conf
共享熱備盤
1.分別建立raid1和raid5。
2.mdadm -D -s > /etc/mdadm.conf
3.編輯mdadm.conf
ARRAY /dev/md1 metadata=1.2 name=instructor.magedu.com:1 UUID=eb6fbe24:2449dde5:da515f42:48694ac4 spar
e-group=magedisk
ARRAY /dev/md5 metadata=1.2 spares=1 name=instructor.magedu.com:5 UUID=19dea50d:2cecbdbf:5891cb66:463e
6c2c spare-group=magedisk
MAILADDR root
4.啓動服務
centos6:service mdmonitor restart
centos7:systemctl restart mdmonitor
LVM***邏輯卷
1容許在多個物理設備間從新組織文件系統
2 將設備指定爲物理卷
3 用一個或者多個物理捲來建立一個卷組
4 物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的
5在物理捲上建立的邏輯卷 是由物理區域(PE)組成
6能夠在邏輯捲上建立文件系統
建立LVM
新增虛擬磁盤
.echo '- - -' > /sys/class/scsi_host/host0/scan 使新增的硬盤馬上生效
pvcreate /dev/md1 /dev/md5 將設備指定爲物理磁盤
vgcreate vgmage(vgmage是卷組名) /dev/md1 /dev/md5 將兩個物理磁盤來建立一個卷組
lvcreate -L 38M -n lvlinux31(邏輯卷名) vgmage -n是名字 -L是大小
lvcreate -l 20 -n lvpython8 vgmage
新加舉例:lvcreate -l 60%VG -n mylv testvg
lvcreate -l 100%FREE -n yourlv testvg
mkfs.ext4 /dev/vgmage/lvlinux31 選擇文件系統類型,也就是格式化
mkfs.xfs /dev/mapper/vgmage-lvpython8
mount /dev/vgmage/lvlinux31 /app/lvmdata2 掛載
mount /dev/vgmage/lvpython8 /app/lvmdata2
postfix:後綴
/dev/sda5 1TB XFS /var/spool/mail
/dev/sdb1 10TB /app
LVM
/dev/sda7 /dev/sdb /dev/md0
pvcreate
/dev/sda7 1G /dev/sdb 2G /dev/md0 10G
vgcreate
/dev/vgmage 13G PE 8M
/dev/vgmage/lvmage31 15M
pvs vgs lvs 進行查看,顯示。。。
F: 格式化
40G 40G
80G 40G
刪除的話倒着執行:
1先卸載
2 lvremove /dev/卷組名/邏輯卷名
3 vgextend +卷組名
4 pvcreate /dev/磁盤名
邏輯卷的在線擴展
狀況1:卷組大小足夠擴展
方法一:
lvextend -L +1G /dev/vgmage/lvlinux31
resize2fs /dev/vgmage/lvlinux31
方法二:
lvextend -L 1.5G /dev/vgmage/lvlinux31 -r
狀況2:卷組大小不夠擴展
pvcreate /dev/sdj
vgextend vgmage /dev/sdj
lvextend -L +3G -r /dev/vgmage/lvlinux31
XFS
lvextend -r -L 1G /dev/vgmage/lvpython8 一鍵同步:直接省去加文件系統類型的步驟
xfs_growfs /dev/vgmage/lvpython8
邏輯卷減少
1.卸載
2.掃描
3.減少文件系統大小
4.減少邏輯卷大小
umount /app/data0/
e2fsck -f /dev/vgmage/lvlinux31
resize2fs /dev/vgmage/lvlinux31 50M
lvreduce -L 50M /dev/vgmage/lvlinux31
若是順序反了,先執行了減邏輯卷,則擴展回去,再從新掃描
lvextend -L 500M /dev/vg_mage/lv_home
e2fsck -f /dev/vg_mage/lv_home
resize2fs /dev/vg_mage/lv_home 200M
lvreduce -L 200M /dev/vg_mage/lv_home
實驗:將邏輯卷遷移到其餘主機
1.增長一個獨立文件的虛擬磁盤到源主機
2.將該磁盤作爲PV,擴展進卷組
3.將全部數據都移動到將要拆卸的物理捲上
pvmove /dev/md5 /dev/sdk
4.將源卷組設置爲非激活
vgchange -an vgmage
5.若是卷組中除了要拆卸的硬盤外還有其餘的PV,則進行lvreduce,如沒有,直接第6步
vgreduce vgmage /dev/md1 /dev/md5 /dev/sdi /dev/sdj
6.將源卷組設置爲export狀態
vgexport vgmage
7.拔硬盤,並加到目標主機
8.把vgmage設置爲import
vgimport vgmage
9.把卷組設置爲激活
lvchange -ay vgmage
10.掛載
copy on write = COW
什麼時候寫COW
1.當源發生變化時,如A-Version1 變化爲A-Version2,則把A-Version1拷至COW
2.對於可寫的快照,快照發生改變,直接寫入COW
icq oicq (qq) wechat msn gtalk
e-mail:exchange sendmail postfix
mail client: outlook foxmail
ms-dos windows linux unix
smb