計算機的外部存儲器中也採用了相似磁帶的裝置,比較經常使用的一種叫磁盤,將圓形的磁性盤片裝在一個方的密封盒子裏,這樣作的目的是爲了防止磁盤表面劃傷,致使數據丟失。node
是指chs(Cylinder/Head/Sector)模式,好久之前,硬盤的容量還很是小的時候,人們採用與軟盤相似的結構生產硬盤.也就是硬盤盤片的每一條磁道都具備相同扇區數. 由此產生了所謂的3D參數 (Disk Geometry). 既磁頭數(Heads),柱面數(Cylinders), 扇區數(Sectors pertrack),以及相應的尋址方式linux
磁盤容量計算方式:扇區大小*64*256*1024=8589934592=8Gvim
所以早期的硬盤沒法突破8G容量centos
以上這種方式會浪費不少磁盤空間 (與軟盤同樣). 爲了解決這一問題, 進一步提升硬盤容量, 人們改用等密度結構生產硬盤.也就是說,外圈磁道的扇區比內圈磁道多. 採用這種結構後, 硬盤再也不具備實際的3D參數, 尋址方式也改成線性尋址,即以扇區爲單位進行尋址。安全
爲了與使用3D尋址的老軟件兼容 (如使用BIOS Int13H接口的軟件), 在硬盤控制器內部安裝了一個地址翻譯器, 由它負責將老式3D參數翻譯成新的線性參數.這也是爲何如今硬盤的3D參數能夠有多種選擇的緣由 (不一樣的工做模式, 對應不一樣的3D參數,如 LBA, LARGE, NORMAL). CHS模式只能識別大硬盤的前面8G.lba使用的線性尋址,突破了1024柱面的限制,能訪問8G之外的空間了。bash
LBA採用48個bit位尋址,最大尋址空間128PB。服務器
磁盤分區是使用分區編輯器(partition editor)在磁盤上劃分幾個邏輯部分,盤片一旦劃分紅數個分區,不一樣類的目錄與文件能夠存儲進不一樣的分區。越多分區,也就有更多不一樣的地方,能夠將文件的性質區分得更細,按照更爲細分的性質,存儲在不一樣的地方以管理文件;但太多分區就成了麻煩。空間管理、訪問許可與目錄搜索的方式,依屬於安裝在分區上的文件系統。當改變大小的能力依屬於安裝在分區上的文件系統時,須要謹慎地考慮分區的大小。網絡
又叫作主引導扇區,是計算機開機後訪問硬盤時所必需要讀取的首個扇區,它在硬盤上的三維地址爲(柱面,磁頭,扇區)=(0,0,1)。在深刻討論主引導扇區內部結構的時候,有時也將其開頭的446字節內容特指爲「主引導記錄」(MBR),其後是4個16字節的「磁盤分區表」(DPT),以及2字節的結束標誌(55AA)。所以,在使用「主引導記錄」(MBR)這個術語的時候,須要根據具體狀況判斷其究竟是指整個主引導扇區,仍是主引導扇區的前446字節。數據結構
mbr分區用4個字節存儲分區的總扇區數,最大能表示2的32次方的扇區個數,按每扇區512字節計算(2^32*512byte=2199023255552byte=2T),因此mbr沒法識別大於2T之後的空間oracle
0磁道0扇區:512bytes
446bytes:boot loader
64bytes:分區表,16bytes標識一個分區,支持4個分區,或者3個主分區和一個擴展分區
2bytes:分區標示位 55AA
MBR分區結構:
是一個實體硬盤的分區表的結構佈局的標準。它是可擴展固件接口(EFI)標準(被Intel用於替代我的計算機的BIOS)的一部分,被用於替代BIOS系統中的一32bits來存儲邏輯塊地址和大小信息的主引導記錄(MBR)分區表。對於那些扇區爲512字節的磁盤,MBR分區表不支持容量大於2.2TB(2.2×1012字節)[1]的分區,然而,一些硬盤製造商(諸如希捷和西部數據)注意到這個侷限性,而且將他們的容量較大的磁盤升級到4KB的扇區,這意味着MBR的有效容量上限提高到16 TiB。 這個看似「正確的」解決方案,在臨時地下降人們對改進磁盤分配表的需求的同時,也給市場帶來關於在有較大的塊(block)的設備上從BIOS啓動時,如何最佳的劃分磁盤分區的困惑。GPT分配64bits給邏輯塊地址,於是使得最大分區大小在264-1個扇區成爲可能。對於每一個扇區大小爲512字節的磁盤,那意味着能夠有9.4ZB(9.4×1021字節)或8 ZiB個512字節(9,444,732,965,739,290,426,880字節或18,446,744,073,709,551,615(264-1)個扇區×512(29)字節每扇區)
GPT支持128個分區,使用64位表示扇區,若是每一個扇區是512Byte,理論上則支持8Z的磁盤。
使用128位UUID(Universally Unique Identifier) 表示磁盤和分區 GPT分區表
自動備份在頭和尾兩份,並有CRC校驗位
UEFI (統一擴展固件接口)硬件支持GPT,使操做系統啓動
gpt分區結構:
LINUX中硬盤及分區工具的標識
在早期系統中硬盤的標識區分接口,好比IED接口的硬盤在/dev/以hd[a-z]標識,新系統中都以sd[a-z]來標識,不區分接口了
分區由數字來標識,好比硬盤是sda,那此硬盤的第一個分區爲sda1,第二個爲sda2,依次類推
在LINUX中一切皆文件,設備是以文件的方式標識,設備有主設備號和次設備號,主設備號表示不一樣類型的設備,次設備號表示同類設備的不一樣設備
LINUX中管理分區的工具
fdisk /dev/DISK
示例:
[root@rhel6 ~]# fdisk /dev/sdb
Command (m for help): p #查看當前分區 Disk /dev/sdb: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 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: 0xb484790b Device Boot Start End Blocks Id System Command (m for help): n #新建立一個分區 Command action e extended p primary partition (1-4) p #建立主分區 Partition number (1-4): 1 #分區號爲1 First cylinder (1-261, default 1): #默認從0扇區開始 Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261): +1G #建立一個1G的分區 Command (m for help): p #查看分區後的狀態 Disk /dev/sdb: 2147 MB, 2147483648 bytes 255 heads, 63 sectors/track, 261 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: 0xb484790b Device Boot Start End Blocks Id System /dev/sdb1 1 132 1060258+ 83 Linux Command (m for help): w #保存退出 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
gdisk:用來管理gpt分區,用法和fdisk類似
parted /dev/DISK
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER 將文件系統複製到另外一個分區 help [COMMAND] 打印通常幫助,或幫助COMMAND mklabel,mktable LABEL-TYPE 建立一個新的disklabel(分區表),LABEL-TYPE={msdos|gpt} mkpart PART-TYPE [FS-TYPE] START END 新建一個分區 mkpartfs PART-TYPE FS-TYPE START END 新建一個帶文件系統的分區 quit 退出程序 resize NUMBER START END 調整分區NUMBER及其文件系統的大小 rm NUMBER 刪除NUMBER分區 version 顯示GNU Parted的版本號和版權信息
partprobe 同步分區表,但在紅帽系列6.x上有bug
partx
lsblk 查看內存如今生效的分區表
[root@rhel6 ~]# dd if=/dev/sda of=/data/mbr_bak bs=1 count=512 #備份mbr分區表 512+0 records in 512+0 records out 512 bytes (512 B) copied, 0.000765317 s, 669 kB/s [root@rhel6 ~]# hexdump -C /data/mbr_bak 00000000 eb 48 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |.H..............| 00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..| 00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u| 00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 03 02 |.........|...t..| 00000040 80 00 00 80 fe 49 08 00 00 08 fa 90 90 f6 c2 80 |.....I..........| 00000050 75 02 b2 80 ea 59 7c 00 00 31 c0 8e d8 8e d0 bc |u....Y|..1......| 00000060 00 20 fb a0 40 7c 3c ff 74 02 88 c2 52 f6 c2 80 |. ..@|<.t...R...| 00000070 74 54 b4 41 bb aa 55 cd 13 5a 52 72 49 81 fb 55 |tT.A..U..ZRrI..U| 00000080 aa 75 43 a0 41 7c 84 c0 75 05 83 e1 01 74 37 66 |.uC.A|..u....t7f| 00000090 8b 4c 10 be 05 7c c6 44 ff 01 66 8b 1e 44 7c c7 |.L...|.D..f..D|.| 000000a0 04 10 00 c7 44 02 01 00 66 89 5c 08 c7 44 06 00 |....D...f.\..D..| 000000b0 70 66 31 c0 89 44 04 66 89 44 0c b4 42 cd 13 72 |pf1..D.f.D..B..r| 000000c0 05 bb 00 70 eb 7d b4 08 cd 13 73 0a f6 c2 80 0f |...p.}....s.....| 000000d0 84 f0 00 e9 8d 00 be 05 7c c6 44 ff 00 66 31 c0 |........|.D..f1.| 000000e0 88 f0 40 66 89 44 04 31 d2 88 ca c1 e2 02 88 e8 |..@f.D.1........| 000000f0 88 f4 40 89 44 08 31 c0 88 d0 c0 e8 02 66 89 04 |..@.D.1......f..| 00000100 66 a1 44 7c 66 31 d2 66 f7 34 88 54 0a 66 31 d2 |f.D|f1.f.4.T.f1.| 00000110 66 f7 74 04 88 54 0b 89 44 0c 3b 44 08 7d 3c 8a |f.t..T..D.;D.}<.| 00000120 54 0d c0 e2 06 8a 4c 0a fe c1 08 d1 8a 6c 0c 5a |T.....L......l.Z| 00000130 8a 74 0b bb 00 70 8e c3 31 db b8 01 02 cd 13 72 |.t...p..1......r| 00000140 2a 8c c3 8e 06 48 7c 60 1e b9 00 01 8e db 31 f6 |*....H|`......1.| 00000150 31 ff fc f3 a5 1f 61 ff 26 42 7c be 7f 7d e8 40 |1.....a.&B|..}.@| 00000160 00 eb 0e be 84 7d e8 38 00 eb 06 be 8e 7d e8 30 |.....}.8.....}.0| 00000170 00 be 93 7d e8 2a 00 eb fe 47 52 55 42 20 00 47 |...}.*...GRUB .G| 00000180 65 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 65 |eom.Hard Disk.Re| 00000190 61 64 00 20 45 72 72 6f 72 00 bb 01 00 b4 0e cd |ad. Error.......| 000001a0 10 ac 3c 00 75 f4 c3 00 00 00 00 00 00 00 00 00 |..<.u...........| 000001b0 00 00 00 00 00 00 00 00 04 bc 00 00 00 00 80 20 |............... | 000001c0 21 00 83 dd 1e 3f 00 08 00 00 00 a0 0f 00 00 dd |!....?..........| 000001d0 1f 3f 83 fe ff ff 00 a8 0f 00 00 00 80 02 00 fe |.?..............| 000001e0 ff ff 83 fe ff ff 00 a8 8f 02 00 00 40 01 00 fe |............@...| 000001f0 ff ff 05 fe ff ff 00 a8 cf 03 00 58 30 01 55 aa |...........X0.U.| 00000200 [root@rhel6 ~]# dd if=/data/mbr_bak of=/dev/sda bs=1 count=512 #若是分區表損壞了能夠進入rescue模式進行重新還原分區表,前提是分區表備份不要在這塊硬盤上
gpt分區表會自動在磁盤尾扇區鏡像備份一份
文件系統是操做系統用於明確存儲設備(常見的是磁盤,也有基於NAND Flash的固態硬盤)或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操做系統中負責管理和存儲文件信息的軟件機構稱爲文件管理系統,簡稱文件系統。文件系統由三部分組成:文件系統的接口,對對象操縱和管理的軟件集合,對象及屬性。從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責爲用戶創建文件,存入、讀出、修改、轉儲文件,控制文件的存取,當用戶再也不使用時撤銷文件等。
[root@rhel6 ~]# ls /lib/modules/2.6.32-642.el6.x86_64/kernel/fs/ 列出系統支持的文件系統 autofs4 cramfs ext3 gfs2 mbcache.ko squashfs btrfs dlm ext4 jbd nfs ubifs cachefiles ecryptfs fat jbd2 nfs_common udf cifs exportfs fscache jffs2 nfsd xfs configfs ext2 fuse lockd nls
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:未經處理或者未經格式化產生的文件系統
Linux的虛擬文件系統:VFS
因爲底層文件系統類型太多,從而致使程序調用複雜,從而有VFS來做爲一個統一接口,充當中間人的角色
super block 和 inode table 的關係
mkfs.{ext4|ext3|xfs|...} 格式化指定設備分區
findfs LABEL=<label>|UUID=<uuid>:查找分區
blkid:查看分區屬性信息
fsck: 文件系統檢查,FS_TYPE必定要與分區上已經文件類型相同,修復時分區必定要在非掛載狀態
xfs_info:查看xfs文件系統的信息
xfs_growfs 掛載點 同步調整大小後文件系統,適用xfs
mke2fs:格式化ext系列的文件系統
e2label device [newlabel]:管理ext系列文件系統的LABEL
tune2fs:從新設定ext系列文件系統可調整參數的值
dumpe2fs 查看超級塊信息,顯示分組
-h:查看超級塊信息,不顯示分組信息
e2fsck:ext系列文件專用的檢測修復工具
resize2fs 設備 同步調整大小後文件系統,適用ext系列
掛載是將額外文件系統與根文件系統某現存的目錄創建起關聯關係,進而使得此目錄作爲其它文件訪問入口的行爲,掛載點下原有文件在掛載完成後會被臨時隱藏
卸載是爲解除此關聯關係的過程,要在此設備不在有進程使用時才能夠正常卸載
[root@rhel6 ~]# cat /etc/mtab #查看當前已掛載的設備 /dev/sda2 / ext4 rw 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 devpts /dev/pts devpts rw,gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs rw 0 0 /dev/sda1 /boot ext4 rw 0 0 /dev/sda3 /data ext4 rw 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/etc/mtab 每次掛載時都更新次文件
cat /proc/mounts 能夠查看掛載信息
/etc/fstab 開機自動掛載
# /etc/fstab # Created by anaconda on Fri Apr 20 22:56:45 2018 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=604bb620-06b7-496e-810d-373a06749b31 / xfs defaults 0 0 UUID=635b125a-667b-4f64-b576-c12290fdbcf5 /boot xfs defaults 0 0 UUID=564c85be-1a0d-4851-a544-1ddde8ba7cd8 /data xfs defaults 0 0 UUID=2fea38ae-b8cf-4fec-99a3-d1b7e13324ff swap swap defaults 0 0
#掛載設備 掛載點 文件系統類型 掛載選項 備份時間間隔(天) 開機檢查文件系統(0:不檢查,1-n:按數字從小到大依次檢查,參數相等的並行檢查)
# vim /etc/grub.conf kernel - max_loop=### 增長loop設備數,6.x上默認8個,7.x不限
mount
用法:mount 設備 掛載點
umount {設備名|掛載點} 卸載設備
fuser
lsof /dev/sda1 查看設備那個進程在用
findmnt 查找某個文件夾是否處於掛載狀態
losetup -a 查看當前掛載的loop設備
losetup /dev/loop# loopfile 綁定文件到loop設備
free 查看內存和swap的信息
mkswap /dev/sdb1 -L swap_sdb1 格式化
#vi /etc/fstab
UUID=9e183975-5adf-41cb-886e-feef62a81335 swap swap defaults,pri=# 0 0
swap的UUID 掛載點 掛載文件系統類型 掛載選項,優先級:數字越大越優先 0 0
swapon DEV|LOOPFILE 激活swap分區
swapoff 禁用swap分區
eject 彈出光驅
cp /dev/sr0 /data/centos7.iso 將光盤製做成iso文件
dd if=/dev/sr0 of=/data/centos7.iso 將光盤製做成iso文件
mkisofs -r -o etc.iso /etc/ 將目錄打包成iso文件,但不能引導
mkdvdiso.sh source /destination/DVD.iso 製做引導光盤
#!/bin/bash # by Chris Kloiber <ckloiber@redhat.com> # Mods under CentOS by Phil Schaffner <pschaff2@verizon.net> # A quick hack that will create a bootable DVD iso of a Red Hat Linux # Distribution. Feed it either a directory containing the downloaded # iso files of a distribution, or point it at a directory containing # the "RedHat", "isolinux", and "images" directories. # This version only works with "isolinux" based Red Hat Linux versions. # Lots of disk space required to work, 3X the distribution size at least. # GPL version 2 applies. No warranties, yadda, yadda. Have fun. # Modified to add sanity checks and fix CentOS4 syntax errors # TODO: # Add checks for available disk space on devices holding output and # temp files. # Add optional 3rd parameter to specify location of temp directory. # Create .discinfo if not present. OS_VER=\ $((test -e /etc/fedora-release && rpm -qf /etc/fedora-release --qf "FC%{VERSION}") \ || (test -e /etc/redhat-release && rpm -qf /etc/redhat-release --qf "EL%{VERSION}") \ || echo OS_unknown) case "$OS_VER" in EL[45]*|FC?) IMPLANT=/usr/lib/anaconda-runtime/implantisomd5 if [ ! -f $IMPLANT ]; then echo "Error: $IMPLANT Not Found!" echo "Please install anaconda-runtime and try again." exit 1 fi ;; EL6*|FC1?) IMPLANT=/usr/bin/implantisomd5 if [ ! -f $IMPLANT ]; then echo "Error: $IMPLANT Not Found!" echo "Please install isomd5sum and try again." exit 1 fi ;; OS_unknown) echo "Unknown OS." exit 1 ;; *) echo "Fix this script for $OS_VER" exit 1 esac if [ $# -lt 2 ]; then echo "Usage: `basename $0` source /destination/DVD.iso" echo "" echo " The 'source' can be either a directory containing a single" echo " set of isos, or an exploded tree like an ftp site." exit 1 fi DVD_DIR=`dirname $2` DVD_FILE=`basename $2` echo "DVD directory is $DVD_DIR" echo "ISO file is $DVD_FILE" if [ "$DVD_DIR" = "." ]; then echo "Destinaton Directory $DVD_DIR does not exist" exit 1 else if [ ! -d "/$DVD_DIR" ]; then echo "Destinaton Directory $DVD_DIR must be an absolute path" exit 1 else if [ "$DVD_FILE" = "" ] || [ -d "$DVD_DIR/$DVD_FILE" ]; then echo "Null ISO file name." exit 1 fi fi fi which mkisofs >&/dev/null if [ "$?" != 0 ]; then echo "mkisofs Not Found" echo "yum install mkisofs" fi which createrepo >&/dev/null if [ "$?" != 0 ]; then echo "createrepo Not Found" echo "yum install createrepo" fi if [ -f $2 ]; then echo "DVD ISO destination $2 already exists. Remove first to recreate." exit 1 fi # Make sure there is enough free space to hold the DVD image on the filesystem # where the home directory resides, otherwise change ~/mkrhdvd to point to # a filesystem with sufficient free space. cleanup() { [ ${LOOP:=/tmp/loop} = "/" ] && echo "LOOP mount point = \/, dying!" && exit [ -d $LOOP ] && rm -rf $LOOP [ ${DVD:=~/mkrhdvd} = "/" ] && echo "DVD data location is \/, dying!" && exit [ -d $DVD ] && rm -rf $DVD } cleanup mkdir -p $LOOP mkdir -p $DVD ls $1/*.iso &>/dev/null if [ "$?" = 0 ]; then echo "Found ISO CD images..." CDS=`expr 0` DISKS="1" [ -w / ] || { # Very portable, but perhaps not perfect, test for superuser. echo "Only 'root' may use this script for loopback mounts" 1>&2 exit 1 } for f in `ls $1/*.iso`; do mount -o loop $f $LOOP cp -av $LOOP/* $DVD if [ -f $LOOP/.discinfo ]; then cp -av $LOOP/.discinfo $DVD CDS=`expr $CDS + 1` if [ $CDS != 1 ] ; then DISKS=`echo ${DISKS},${CDS}` fi fi umount $LOOP done else if [ -f $1/isolinux/isolinux.bin ]; then echo "Found FTP-like tree..." if [ -e $1/.discinfo ]; then cp -av $1/.discinfo $DVD else # How does one construct a legal .discinfo file if none is found? echo "Error: No .discinfo file found in $1" cleanup exit 1 fi cp -av $1/* $DVD else echo "Error: No CD images nor FTP-like tree found in $1" cleanup exit 1 fi fi if [ -e $DVD/.discinfo ]; then awk '{ if ( NR == 4 ) { print disks } else { print ; } }' disks="ALL" $DVD/.discinfo > $DVD/.discinfo.new mv $DVD/.discinfo.new $DVD/.discinfo else echo "Error: No .discinfo file found in $DVD" cleanup exit 1 fi rm -rf $DVD/isolinux/boot.cat find $DVD -name TRANS.TBL | xargs rm -f cd $DVD createrepo -g repodata/comps.xml ./ mkisofs -J -R -v -T -o $2 -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 8 -boot-info-table $DVD if [ "$?" = 0 ]; then echo "" echo "Image complete, create md5sum..." # $IMPLANT --force $2 # Don't like forced mediacheck? Try this instead. $IMPLANT --supported-iso --force $2 echo "Start cleanup..." cleanup echo "" echo "Process Complete!" echo "Wrote DVD ISO image to $DVD_DIR/$DVD_FILE" echo "" else echo "ERROR: Image creation failed, start cleanup..." cleanup echo "" echo "Failed to create ISO image $DVD_DIR/$DVD_FILE" echo "" fi
wodim –v –eject centos.iso 刻錄光盤
lsusb 查看UBS
df 顯示以掛載的設備信息
du 顯示目錄大小
dd 轉換和複製文件
#備份恢復磁盤:
dd if=/dev/sdx of=/path/to/image #將/dev/sdx全盤數據備份到指定路徑的image文件
dd if=/path/to/image of=/dev/sdx #將備份文件恢復到指定盤
dd if=/dev/sdx | gzip >/path/to/image.gz #備份/dev/sdx全盤數據,並利用gzip壓縮,保存到指定路徑
gzip -dc /path/to/image.gz | dd of=/dev/sdx #將壓縮的備份文件恢復到指定盤
#拷貝光盤數據到root文件夾下,並保存爲cd.iso文件
dd if=/dev/cdrom of=/root/cd.iso
#銷燬磁盤數據,利用隨機的數據填充硬盤,在某些必要的場合能夠用來銷燬數據,執行此操做之後,/dev/sda1將沒法掛載,建立和拷貝操做沒法執行
dd if=/dev/urandom of=/dev/sda1
#測試硬盤寫速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
#測試硬盤讀速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
#測試硬盤讀速度2(hdparm)
[root@rhel6 ~]# hdparm -Tt /dev/sdb /dev/sdb: Timing cached reads: 13400 MB in 2.00 seconds = 6704.56 MB/sec Timing buffered disk reads: 384 MB in 3.01 seconds = 127.74 MB/sec
獨立硬盤冗餘陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗餘陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列
簡單來講,RAID把多個硬盤組合成爲一個邏輯扇區,所以,操做系統只會把它看成一個硬盤。RAID常被用在服務器電腦上,而且常使用徹底相同的硬盤做爲組合
RAID比單顆硬盤有如下一個或多個方面的好處:加強數據集成度,加強容錯功能,增長處理量或容量
經常使用raid級別:RAID-0,RAID-1,RAID-5,RAID-6,RAID-10,RAID-50,RAID-60等
要求至少2塊硬盤以上,優勢是把多塊硬盤合併成一塊,增長容量爲各硬盤總和,並行讀寫速度增長,可是容錯性低,其中一塊硬盤故障數據即丟失
倆快硬盤作鏡像,倆快硬盤各存儲一份數據,若是倆快硬盤容量不同則總容量按小硬盤算,特色速度慢,須要消耗一塊硬盤的容量,可是對數據安全性高
簡單來講,至關於把硬盤倆倆作鏡像(raid1),而後再把每組raid1作raid0,優勢是既保證了速度也保證了數據冗餘,可是犧牲了硬盤容量
至少須要三塊硬盤,存儲數據時把數據拆分紅n份,將拆分後的數據計算出校驗和而後按照必定的分配方式存儲到各硬盤,犧牲一塊硬盤的容量,讀寫速度提升,在損壞一塊硬盤的狀況下不影響數據的安全
在raid5基礎上在加入一塊硬盤,在同時損壞倆快的狀況下數據能夠正常運行
Llinux中分區類型:fd
示例:mdadm -C /dev/md# -a yes -l 5 -c 32 -n 3 -x1 /dev/sd# 利用軟件建立一個軟raid5
mdadm -D /dev/md# 查看raid狀態
mdadm -Ds /dev/md# > /etc/mdadm.conf 生成配置文件,下次開機自動生效
mdadm -S /dev/md# 停用raid設備
mdadm -A /dev/md# 激活raid設備
mdadm /dev/md# -f /dev/sd# 模擬硬盤損壞
mdadm /dev/md# -r /dev/sd# 手動移除硬盤
mdadm /dev/md# -a /dev/sd# 手動添新硬盤
mdadm -G /dev/md# -n4 -a /dev/sd# 擴展raid
mdadm --zero-superblock /dev/sd# 刪除已移除硬盤的superblock,避免再次使用的影響
邏輯卷管理器(英語:Logical Volume Manager,縮寫爲LVM),又譯爲邏輯卷宗管理器、邏輯扇區管理器、邏輯磁盤管理器,是Linux核心所提供的邏輯卷管理(Logical volume management)功能。它在硬盤的硬盤分區之上,又建立一個邏輯層,以方便系統管理硬盤分區系統。
最早由IBM開發,在AIX系統上實現,OS/2 操做系統與 HP-UX也支持這個功能。在1998年,Heinz Mauelshagen 根據在 HP-UX 上的邏輯卷管理器,寫做出第一個 Linux 版本的邏輯卷管理器。
Linux中的分區類型:8e
PV(Physical Volume) 物理卷
VG(Volume Group) 卷組
LV(Logical Volume) 邏輯分區
PE(Physical Extent) 物理範圍。VG中的最小單元,相似於RAID的chunk大小。
Linux中的設備路徑:
/dev/mapper/vg0-lv0
/dev/vg0/lv0
/dev/dm-0
pvs:查看pv信息
pvscan:查看pv信息
pvdisplay:查看pv信息
pvcreate:建立pv
vgs:查看vg信息
vgscan:查看vg信息
vgdisplay:查看vg信息
vgcreate -s 16M vgname /dev/sd# 建立vg
lvs:查看lv信息
lvscan:查看lv信息
lvdisplay:查看lv信息
lvcreate -n lvname {-L #G|-l #|} vgname 建立lv
vgrename OLDvgname NEWvgname 重命名vg
lvrename /dev/vgname/OLDlvname /dev/vgname/NEWlvname 重命名lv
擴展LV示例:
一、vgextend vgname /dev/sd# 擴展vg 二、lvextend -r {-l +#|# | -L +5G|5G} /dev/vg#/lv# 擴展lv並同步文件系統 -r:同步文件系統
縮減LV示例:只限於ext系列,xfs不支持縮減
一、umount 二、fsck -f /dev/vg0/lv0 三、resize2fs /dev/vg0/lv0 10G 縮減文件系統到10G
四、lvreduce -L 10G /dev/vg0/lv0 縮減LV到10G
五、mount
磁盤移除示例:
一、pvmove /dev/OLDDISK 二、vgreduce vgname /dev/OLDDISK 三、pvremove /dev/OLDDISK
LVM硬盤遷移示例:
一、vgchange -an vgname 禁用vg 二、vgexport vgname 導出vg 三、硬盤移動到新主機上 四、vgimport vgname 導入vg 五、vgchange -ay vgname 激活vg
LVM的快照:
lvcreate -n lvname-snapshot -s -L 1G -p r /dev/vgname/lvname 建立快照
lvconvert --merge /dev/vgname/lvname-snapshot 恢復快照
lvremove /dev/lvname-snapshot 刪除快照
記錄於2018.4.25 22:01:00