交換分區wasp
swap文件系統:
linux上的交換分區必須使用獨立的文件系統;
其文件系統的system ID必須為82
創建swap設備,文件系統,使用mkswap命令
創建步驟:
1.創建交換分區或者文件
2.使用mkswap寫入特殊簽名(可以理解為格式化創建swap文件系統,命令也是類似文件系統創建的命令)
3.在/etc/fstab文件文件中添加適當的條目
4.使用swapon -a 激活交換空間
設定除根文件系統以外的其他文件系統能夠開機時自動掛載:/etc/fstab
每行定義一個要掛載的文件系統及其相關屬性:
6個字段:
1.要掛載的設備:
設備文件,例如:/dev/sd*
LABEL
UUID
偽文件系統,如sysfs….
2.掛載點
swap類型的設備的掛載點為swap
3.文件系統類型
4.掛載選項
default:使用默認掛載選項
如果要同時指明多個掛載選項。彼此以逗號“,”分開
default,acl,noatime,noexec….
5.轉儲次序
0:從不備份
1:每天備份
2:隔一天備份(兩天備份一次)
6自檢次序
0:不自檢
1:首先自檢(優先),通常只能是根文件系統可以
2:次級自檢
交換分區啟用:swapon
-a:激活所有的交換分區
-p priority:指定優先級
/etc/fstab:pri=value
禁用:swapoff
swap的優先級
用戶可以給某個swap 指定一個0 到32767 的優先級
如果用戶沒有指定,那么核心會自動給swap 指定一個優先級,這個優先級從-1 開始,每加入一個新的沒有用戶
指定優先級的swap ,會給這個優先級減一。
先添加的swap 的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級( 是正數) 永遠高于核心
缺省指定的優先級( 是負數)。
優化性能:分布存放,高性能磁盤存放
df命令:
-l:僅顯示本地文件的相關信息
-h:humen-readable
-i:顯示inode使用狀態
-T:文件系統類型
-P:以posix兼容的格式輸出
-H:以1000為單位
du命令:顯示文件大小
-s:顯示目錄下所有文件大小之和
-h:humen-readable
移動介質
掛載意味著使外來的文件系統看起來如同是主目錄樹的一部分
訪問前,介質必須被掛載
摘除時,介質必須被卸載
按照默認設備,費根用戶只能掛載某些設備(光盤,DVD,軟盤,USB等等)
掛載點通常在/media或者/mnt
光盤設備文件:
IDE:/dev/hdc
SATA:/dev/sr0
符號鏈接:
/dev/cdrom
/dev/cdrw
/dev/dvd
/dev/dvdrw
掛載和卸載命令
mount -r /dev/cdrom /media/cdrom
umount /dev/cdrom
eject命令卸載或者彈出磁盤
創建ISO文
cp /dev/cdrom /root/centos.iso
mkisofs -r -o /roo/etc.iso /etc
刻錄光盤
wodim -v -eject centos.iso
dd命令:convert and copy a file
用法: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
block:轉換為長度為 cbs 的記錄,不足部分用空格填充。
unblock:替代cbs 長度的每一行尾的空格為新行
lcase:把大寫字符轉換為小寫字符
ucase:把小寫字符轉換為大寫字符
swab:交換輸入的每對字節
noerror:出錯時不停止
notrunc:不截短輸出文件
sync:把每個輸入塊填充到ibs 個字節,不足部分用空(NUL)
磁盤拷貝:
dd if=/dev/sda of=/dev/sdb
備份MBR
dd if=/dev/sda of=/tem/mbr.bak bs=512 count=1
將/dev/sda的MBR拷貝到/dev/sdg中,因為擴展分區中的MBR獨立,
所以結果是指將主分區的MBR的信息拷貝過去了,邏輯分區的沒有
dd if=/dev/sda of=/dev/sdg bs=512 count=1
破壞MBR中的bootloader
dd if=/dev/zero of=/dev/sda bs=256 count=1
破壞MBR
dd if=/dev/zero of=/dev/sda bs=512 count=1
連個特殊設備:
/dev/null:數據黑洞
/dev/zero:吐零機
有一個大與2K 的二進制文件fileA。 。 現在想從第64 個字節位置
開始讀取,需要讀取的大小是128Byts 。又有fileB, 想把上
面讀取到的128Bytes 寫到第32 個字節開始的位置,替換
128Bytes ,請問如何實現?
dd if=/dev/zero of=file1 bs=2k count echo {1..100}|tr -d " ">>file2 dd if=file1 of=file2 bs=1 count=128 skip=63 seek=31 conv=notrunc
備份:
dd -if=/dev/sda of=/devsdb
將本地的/dev/sda整盤備份到/dev/sdy
dd if=/dev/sda if=/path/to/image
將/dev/sda全部數據備份到指定路徑的image文件
dd if=/dev/sda|gzip >/path/to/image.gz
備份/dev/sda全盤數據,并利用gzip工具進行壓縮,保存到指定路徑
恢復:
dd if=/path/to/image of=/dev/sda
將備份文件恢復到指定盤
gzigzp -dc /path/to/image.gz |dd of=/dev/sda
將壓縮的備份文件恢復到指定盤
拷貝內存資料到磁盤
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 of=file1 bs=1024 count=1000000 dd if=/dev/zero of=file1 bs=2048 count=500000 dd if=/dev/zero of=file1 bs=4096 count=250000 dd if=/dev/zero of=file1 bs=8192 count=125000
以結果來block=4096上,讀寫數據速度最快,為最佳block size
測試磁盤的速寫速度
dd if=file of=/dev/null dd if=file bs=64k |dd of=/dev/null dd if=/dev/zero of=file1 bs=1024 count=1000000
讀入速度:85.3MB/s 左右 寫入速度:70MB/s左右
修復硬盤
dd if=/dev/sda of=/dev/sda
當硬盤較長時間(比如1 ,2 年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,并可
能導致I/O 錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死
回生。且這個過程是安全,高效的
練習:
1 、創建一個2G 的文件系統,塊大小為2048byte, , 預留1%可用空間, 文件系統ext4 ,卷標為TEST ,要求此分區開機后自
動掛載至/testdir 目錄,且默認有acl 掛載選項
第一步:
創建一個2G的分區
fdisk /dev/sdb1
第二步:
格式化分區,創建文件系統,使用如下選項
[root@localhost ~]# tune2fs -l /dev/sdb1 tune2fs 1.42.9 (28-Dec-2013) Filesystem volume name: test ======>卷標test Last mounted on: <not available> Filesystem UUID: bd915a87-493a-415b-8d2f-8cedaab84792 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 131072 Block count: 1048576 Reserved block count: 10485 ==================>預留大小1% Free blocks: 994651 Free inodes: 131061 First block: 0 Block size: 2048 ================>塊大小為2048k Fragment size: 2048 Group descriptor size: 64 Reserved GDT blocks: 512 Blocks per group: 16384 Fragments per group: 16384 Inodes per group: 2048 Inode blocks per group: 256 Flex block group size: 16 Filesystem created: Mon Aug 29 21:17:12 2016 Last mount time: n/a Last write time: Mon Aug 29 21:17:12 2016 Mount count: 0 Maximum mount count: -1 Last checked: Mon Aug 29 21:17:12 2016 Check interval: 0 (<none>) Lifetime writes: 65 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: 516971e6-940d-4dc4-b883-377fe5a4a811 Journal backup: inode blocks
第三步:
mkdir /testdir vim /etc/fstab
mount -a
完成??!
2 、寫一個腳本,完成如下功能:
(1) 列出當前系統識別到的所有 磁盤設備
(2) 如磁盤數量為1 ,則顯示其空間 使用信息,否則,則顯示最后一個磁盤上的空間 使用信息
1 #!/bin/bash 2 #qiuwei 3 #寫一個腳本,完成如下功能: 4 #1. 列出當前系統識別到的所有 磁盤設備 5 #2. 如磁盤數量為1 ,則顯示其空間 使用信息,否則,則顯示最后一個磁盤上的空間 使用信息 6 7 8 #:用grep找出lsblk中所有的磁盤設備,然后顯示最后一行的磁盤的空間使用信息 9 #因為不管有多少塊磁盤,只要顯示最后一塊就可以得出結果了 10 lsblk|grep "^sd[a-z]"|tail -n 1
高級文件系統管理
1.設定文件系統配額
在生產環境中,為了限制普通用戶創建文件的大小和數量,我們一般會對普通用戶的家目錄設定文件系統配額
特點:
1.在內核中執行
2.以文件系統為單位啟用
3.對不同組或者用戶的策略不同
4.根據塊或者節點進行限制
執行軟件限制(soft limit)====>文件總大小或者總數量超過軟限制,會出現警告
硬限制(hard limit)====>文件總大小或者總數量到達硬限制,就不能在增加文件大小或者創建新文件了,
我們現在來實際操作下
第一步:
一般用戶的文件會保存至家目錄,使用我們首先要將一個單獨分區掛載至/home下,但是如果直接掛載到/home下的話,/home里面
的文件就沒了,所有我們應該先創建分區,格式化創建文件系統,然后隨便掛載在一個掛載點/mnt,然后將/home下的數據遷移至此掛載點,
然后在將此設備掛載到/home下,卸載掛載點/mnt,這樣單獨分區掛載到了/home,
a.創建文件系統
b.掛載到/mnt下,然后復制文件至/mnt下
c.將/dev/sdb2掛載之/home下,在/etc/fstab里面改,特性:usrquota,grpquota
將之前的掛載點/mnt卸載掉
第二步:
創建配額數據庫
quotacheck -cug /home命令
如果創建失敗,使用如下命令關閉selinux,在使用quotacheck -cug /home命令
setenforce 0
第三步:
啟用數據庫
quotaon -p /home 查看是否啟用數據庫
quotaon /home 啟用數據庫
第四步:
配置配額項
edquota pingxiong
edquota -p wang mage
setquota tom 100000 150000 0 0 /home
第五步:
測試
quota pingxiong
repquota /home
軟配額是100M,超過報警,且無法超過200M
完成?。。?!
RAID:Redundant Arrays of Inexpensive Disks 廉價冗余磁盤陣列
Redundant Arrays of Independent Disks 獨立冗余磁盤陣列
多個磁盤合成一個“陳列”來提高更好的性能,冗余,或者兩者都提供
提高IO能力:
磁盤并行讀寫
提高耐用性:
磁盤冗余來實現
RAID級別:多塊磁盤組織在一起的工作方式有所不同
RAID實現方式:
外接式磁盤陣列:通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器
安裝OS前在BIOS里配置
Software RAID:
級別:level
RAID-0:0,條帶卷,strip
RAID-1:1,鏡像卷,mirror;
RAID-2:2,
RAID-3:3,
RAID-4:4,
RAID-5:5,
RAID-6:6
RAID-10
RAID-01
RAID-0:文件平分之每個磁盤上
讀寫能力提升;將文件數據并行至各個磁盤中,多通道同時進行,IO能力必然增強
可用空間:N*min(s1,s2…)最小磁盤的大小*磁盤數
無容錯能力:任何一塊磁盤壞掉了,整個RAID數據都會壞掉
最少磁盤數:+2
RAID-1:完整文件都要存在每個硬盤上
讀性能提升,寫性能略有下降
可用空間:1*min(s1,s2…..)
有冗余能力
最少磁盤數: 2+
RAID-4:多塊數據盤異或運算值,存于專用校驗盤
1101 0110 1011
存1 存2 校驗
假如磁盤1壞掉,可以通過磁盤2和校驗盤取異或值,反響推導出磁盤的數據
此級別的RAID缺點是校驗盤損壞評論太高
RAID-5:
讀,寫性能提升
可用空間:(N-1)*min(s1,s2…..)最小磁盤的大小*磁盤數(取最?。?/p>
有容錯能力:最多只能壞一個磁盤
最少磁盤數:3+
在RAID-4的基礎上提升,各個磁盤輪流充當校驗盤,此級別RAID一般生產環境中最常用
RAID-6: 在RAID5的基礎上,再增加一塊校驗盤
讀、寫性能提升
可用空間:(N-2)*min(S1,S2,…)
有容錯能力:允許最多2 塊磁盤損壞
最少磁盤數:4, 4+
…….
RAID10:
讀寫性能提升
可以空間:N*min(s1,s2…..)最小磁盤的大小*磁盤數(取最小)/2
有容錯能力:每組鏡像最多只能壞一塊
最少磁盤數:4+
RAID01:和上面的RAID10組合相反
RAID-10在容錯能力上比RAID-01要強,RAID-01每組鏡像最多只能壞一塊,但是如上只有兩組
假如磁盤1壞了,raid4.5.6任何一個壞了,整個RAID01數據就都損壞了,因為上面兩個RAID-0的總的數據雖然一樣,
但是并不等于磁盤1和磁盤4數據一樣,數據平分也不是都要分成一模一樣的
同理,RAID-50就是先做RAID-5,在做RAID-0
RAID-7:可以理解為一個獨立存儲計算機,自身帶有操作系統的管理工具,可以獨立運行,理論上性能最高的RAID模式
JBOD:Just a Bunch Of Disks
功能:將多塊磁盤的空間合并一個大的連續空間使用
可用空間:sum(S1,S2,…)
常用級別:RAID-0, RAID-1, RAID-5, RAID-10,RAID-50, JBOD
軟RAID
mdadm :為軟RAID 提供管理界面
為空余磁盤添加冗余
結合內核中的md(multi devices)
RAID 設備可命名為/dev/md0 、/dev/md1 、/dev/md2、/dev/md3 等等
實際創建一個軟RAID-5
第一步:
在磁盤上創建五個分區,做四個磁盤和一個空閑盤,其system ID必須為fd
第二步:
創建RAID設備
mdadm -C /dev/md0 -a yes -l 5 -n 4 -x 1 /dev/{sdc3,sdd1,sde1,sdf1,sdg1}
mdadm -D /dev/md0
cat /proc/mdstat
第三步
格式化磁盤陣列RAID-5,創建文件系統
第四步:
掛載
[root@localhost ~]# mkdir /mnt/raid [root@localhost ~]# vim /etc/fstab [root@localhost ~]# mount -a
第五步:
生成配置文件
mdadm -S /dev/md0 停止raid mdadm -A /dev/md0 啟動raid
備注:停止和啟動一定要在卸載的時候進行?。。。。。。。。。。?!
第六部:測試
mdadm /dev/md0 -f /dev/sdf1 模擬損壞
mdadm /dev/md0 -r /dev/sdf1 刪除成員
mdadm /dev/md0 -a /dev/sdf1 增加
mdadm -G /dev/md0 -n 6 -a /dev/sdd4 增加成員
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdf1 mdadm: set /dev/sdf1 faulty in /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Aug 30 10:43:48 2016 Raid Level : raid5 Array Size : 9431040 (8.99 GiB 9.66 GB) Used Dev Size : 3143680 (3.00 GiB 3.22 GB) Raid Devices : 4 Total Devices : 5 Persistence : Superblock is persistent Update Time : Tue Aug 30 11:20:35 2016 State : clean, degraded, recovering Active Devices : 3 Working Devices : 4 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Rebuild Status : 77% complete Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 1127eda8:86f13176:195b31c4:19f44971 Events : 32 Number Major Minor RaidDevice State 0 8 35 0 active sync /dev/sdc3 1 8 49 1 active sync /dev/sdd1 2 8 65 2 active sync /dev/sde1 4 8 97 3 spare rebuilding /dev/sdg1 5 8 81 - faulty /dev/sdf1 =====> /dev/sdf1損壞,之前的空閑盤補上去了
其他選項不詳細做了
第七步:當不使用RAID時,刪除RAID
umount /mnt/raid ====>卸載
mdadm -S /dev/md0 停止raid ===>停止RAID
rm -f /etc/mdadm.conf ===>刪除配置文件
vi /etc/fstab ===>刪除開機啟動的掛載設置
fdisk /dev/sda =====>刪除分區
mdadm –zero-superblock /dev/sdd1 ===>
[root@localhost ~]# umount /dev/md0 [root@localhost ~]# mdadm -S /dev/md0 mdadm: stopped /dev/md0 [root@localhost ~]# rm -rf /etc/mdadm.conf [root@localhost ~]# vim /etc/fstab
完成??!
工具:mdadm 模式化的工具
命令語法格式:mdadm [mode ] <raiddevice>[options]<component-decixes>
支持的RAID級別:LINEAR,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10
模式:
創建 :-C
裝配 :-A
監控 :-F
管理:-f,-r,-a
<raiddevice> :/dev/md#
<component-decixes>:任意塊設備
-C:創建模式
-n #:使用#個塊設備來創建此RAID
-l #:指明要創建的RAID的級別
-a{yes|no}:自動創建目標RAID設備的設備文件
-c chunk_size:指明塊大小
-x #:指明空閑盤的個數 ============》此項對不支持冗余能力的RAID無效,因為空閑盤的作用是在別的磁盤壞掉時,臨時頂上去的,
-D:顯示RAID的詳細信息
mdadm -D /dev/dm#
管理模式:
-f:標記指定磁盤為損壞
-a:添加磁盤
-r:移除磁盤
觀察md的狀態
cat /proc/mdstat
停止md設備
mdadm -S /dev/md#
watch 命令:
-n# :刷新間隔,單位是秒
watch -n# 'command'
練習
1.創建一個可用空間為1G 的RAID1 設備,要求其chunk 大小為128k ,文件系統為ext4 ,有一個空閑
盤,開機可自動掛載至/backup 目錄
第一步:創建兩個1G的分區,
第二步:創建RAID1
mdadm -C /dev/md1 -a yes -c 128 -l 1 -n 2 /dev/sd{f1,g1}
第三步:
格式化,創建文件系統,掛載
[root@localhost ~]# mke2fs -t ext4 /dev/md1 [root@localhost ~]# vim /etc/fstab [root@localhost ~]# mount -a [root@localhost ~]# mdadm -D /dev/md1
2.創建由三塊硬盤組成的可用空間為2G 的RAID5設備,要求其chunk 大小為256k ,文件系統為ext4
,開機可自動掛載至/mydata
備注:此題上賣弄的實例已經做過了,限于篇幅,這里就不在做了,參考上面案例
邏輯卷管理器(LVM)
允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小
允許在多個物理設備間重新組織文件系統
將設備指定為物理卷
用一個或者多個物理卷來創建一個卷組
物理卷是用固定大小的物理區域(Physical Extent,PE )來定義的
在物理卷上創建的邏輯卷是由物理區域(PE )組成
可以在邏輯卷上創建文件系統
lVM: Logical Volume Manager; Version2
dm:device mapper ;將一個或多個底層塊設備組織成一個邏輯設備的模塊
設備名: /dev/dm-#
軟鏈接:
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vo10-root
/dev/VG_NAME/LV_NAME
/dev/vo10/root
pv管理工具:
pvs:簡要pv信息顯示
pvdispaly:顯示pv的詳細信息
pvcreate /dev/device:創建pv
pvremove:刪除pv
備注:分區的system ID必須為fd,才能創建成pv
vg管理工具
vgdisplay:顯示vg的詳細信息
vgcreate:創建
-s :指明塊大?。J4M)
vgextend:增加pv
vgreduce :移除pv
要先pvremove,在vgreduce
vgremove:刪除卷組
lv管理工具
lvmconf:設置邏輯卷配置文件
lvs:查看
lvdisplay
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
擴展邏輯卷:
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
有+表示增加了#大小
沒有表示增加到#大小
1.擴展物理邊界
lvextend -L 15G /dev/vg0/lv0
2.修改邏輯邊界
resize2fs /dev/mapper/vg0-lv0 ==》不需要重新掛載,直接就把空間加上去了
縮減邏輯卷
-
umount /dev/mapper/vg0-lv0 先卸載文件系統
2.e2fick -f /dev/mapper/vg0-lv0 文件系統強制檢測和修復
3.resize2fs /dev/mapper/vg0-lv0 #[mMgGtT] 給定大小,指明縮減至多大 ==>邏輯邊界
4.lvreduce -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME ===>物理邊界
有-表示縮減了#大小
沒有表示縮減到#大小
5.mount /dev/mapper/vg0-lv0 重新掛載
如果不想使用了,刪除步驟如下:
從邏輯卷lv,到卷組vg,再到pv,全部刪除過程
umount /dev/vg0/lv0 卸載
lvremove /dev/vg0/lv0 刪除lv
vgremove /dev/vg0 刪除vg
pvremove /dev/sdd5 刪除pv
以上為上次上課的全部內容,如有錯誤,請幫忙留言指出,謝謝??!
原創文章,作者:qiuwei,如若轉載,請注明出處:http://www.www58058.com/41735
文章對當天所學內容進行了詳細的總結,同時通過自己的練習,對所學命令進行了聯系,但是如果能思維上進行優化會使人印象更為深刻哦。