寫博客,對我來說不僅是學習的過程,也是一個心理歷練的過程,多說無益,開始吧?。。?/p>
博客是馬哥視頻里的博客作業:文件系統的創建、修改和檢測。我就從磁盤管理開始把
環境:
創建的centos6.5虛擬機
磁盤空間大小20G
裝機過程中手動分區,預留了10G左右的空間用來練習
[root@scm-dzm ~]# uname -a Linux scm-dzm 2.6.32-504.el6.i686 #1 SMP Wed Oct 15 03:02:07 UTC 2014 i686 i686 i386 GNU/Linux
一、一些概念,雖然一知半解,但也有助于對整體知識的理解和把握
固態硬盤現在越來越便宜也越來越常見了,但是現在還沒有普遍使用,僅用于企業I/O壓力過大時用于救命的。
這里要說的還是關于機械式硬盤,硬盤是主機的I/O設備,它是通過主板與主機的其他組件連接起來并協調工作的
a.計算機的組成部分
1,最底層是硬件設備,主要包括三個組件:CPU,內存,I/O設備 CPU:cpu由控制器和運算器組成 內存:當下要被cpu處理的數據和要使用的程序,cpu不能從內存以外的任何位置取數據 I/O設備:常見的有硬盤和網卡,網卡是通過網絡交換數據,硬盤給本地提供設備的持久存貯功能,還有鍵盤鼠標等設備
2,內核: 管理組件能夠協調工作 將硬件規格接口抽象給程序員 硬件驅動由硬件廠商提供,由內核管理
b.I/O端口
每個硬件設備都需要在cpu上注冊一個不同的終端信號 I/Oports:I/O設備地址,在硬件層次的地址標志
c.linux上硬件設備被識別為文件
設備文件類型:塊設備clock(例如磁盤),字符設備char(例如鍵盤) 設備文件的作用:關聯至一個設備驅動程序,進而能夠與之對應的硬件設備進行通信。硬盤的設備文件也是如此 每個硬件設備在內核都是靠一個設備號來識別的,不同類別的設備號碼是不同的,其中主設備號(major number)標識設備類型,次設備號(minor number)標識同一設備類型的不同設備,同時設備只有元數據沒有數據 設備文件存儲位置:/dev/DEV_FILE
d.磁盤
設備的接口類型
并行:交換速率慢,為了避免干擾 IDE 133MB/s SCSI3.0640MB/s 串口: SATA6Gbps SAS6Gbps USB3.0480MB/s rpm:轉速,7200 10000 15000
磁盤設備的設備文件命名
IDE:/dev/hd SCST SATA SAS USB:/dev/sd 不同設備:a~z 例如:/dev/sda /dev/sdb等等 同一設備不同的分區: 例如:/dev/sda1 /dev/sda2...
機械式硬盤:雙面可讀寫的
磁道:track
柱面:cylinder,號碼形同的多個磁道組成的柱體
扇區:sector
分區方式:
按柱面分區
0柱面0扇區:512bytes
MBR:master boot record主引導記錄 446bytes:boot load 引導加載器 64bytes:分區表,16bytes標識1個分區,總共標識4個分區 所以如果對1個磁盤想4個以上的分區,就必須有1個擴展分區,一般都是3個主分區,1個擴展分區,1個擴展分區又可以劃分多個邏輯分區 2bytes:MBR的有效性標識55AA
二、磁盤分區
1. 工具:fdisk parted sfdisk
fdisk:對于一個硬盤來講,最多只能管理15個分區
fdisk -L [DEVICE] <-查看分區
fdisk DEVICE <-分區
例子:
[root@scm-dzm ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 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: 0x000428cc Device Boot Start End Blocks Id System /dev/sda1 * 1 1275 10240000 83 Linux /dev/sda2 1275 1406 1048576 82 Linux swap / Solaris
詳解:整個磁盤空間21.5GB,21474836480 bytes 255個磁頭,每個磁道63個扇區,2610個柱面 512×63×255表示一個柱面大小,512×63×255×2610就是磁盤的大小,共63×255×2610扇區 I/O size (minimum/optimal) 磁盤標識符 磁盤分區 設備名稱引導 開始柱面結束柱面塊數量 分區ID號 系統類型
[root@scm-dzm ~]# fdisk /dev/sda WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): m <- 輸入m查看子命令 Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition# 刪除分區 l list known partition types# 查看所支持的分區類型以及編號ID m print this menu# 查看幫助 n add a new partition# new,新建分區 o create a new empty DOS partition table p print the partition table# 查看已有分區 q quit without saving changes# 退出不保存此次操縱做 s create a new empty Sun disklabel t change a partition's system id # 調整分區ID u change display/entry units # v verify the partition table w write table to disk and exit # 保存此次操作 x extra functionality (experts only) Command (m for help): n <- 輸入子命令n,新建分區 Command action e extended p primary partition (1-4) e <- 輸入分區類型為擴展分區 Partition number (1-4): 4 <- 輸入分區編號為4,以下均默認,將剩余空間全部分給擴展分區 First cylinder (1406-2610, default 1406): Using default value 1406 Last cylinder, +cylinders or +size{K,M,G} (1406-2610, default 2610): Using default value 2610 Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l <- 輸入l選擇創建邏輯分區 First cylinder (1406-2610, default 1406): <- 直接回車,默認從1406柱面開始 Using default value 1406 Value out of range. Last cylinder, +cylinders or +size{K,M,G} (1406-2610, default 2610): +2G <- 創建2G大小的分區 Command (m for help): w <- 輸入子命令w保存分區并退出 The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
2.通知系統分區變化
命令partx,kpartx,和centos5使用的partprobe
查看已被內核識別的分區( cat /proc/partitions),剛才創建的分區并未識別:
[root@scm-dzm ~]# cat /proc/partitions major minor #blocks name 8 0 20971520 sda 8 1 10240000 sda1 8 2 1048576 sda2
partx命令說明
-a DEVICE掃描整個磁盤
–nr M-N
M:
:
kpartx命令說明
-a DEVICE
-f DEVICE
[root@scm-dzm ~]# partx -a /dev/sda BLKPG: Device or resource busy<- 據說由于虛擬機的原因才有這個報錯 error adding partition 1 BLKPG: Device or resource busy error adding partition 2
[root@scm-dzm ~]# cat /proc/partitions major minor #blocks name 8 0 20971520 sda 8 1 10240000 sda1 8 2 1048576 sda2 8 4 31 sda4 8 5 2100546 sda5 8 6 530113 sda6
kpartx這個命令載入新分區失敗
三、創建文件系統
1. 常見的文件系統
linux文件系統
ext2
ext3
ext4
xfs
btrfs
reiserfs
swap
光盤系統:ISO9660
交換分區對于不同的應用要求不同 ① oracle,mysql數據庫系統,如果一旦把內存數據放回硬盤上,性能會急劇下降,對于這種設備,交換分區一般512-1G就夠了,但物理內存一般需達到64G-512G ② 對于批處理系統,內存使用率不高,對于機器運行的性能要求也不是很高,swap可以設置的比較大,一般等于物理內存,不過8G已經非常大了
windows:fat32,ntfs
unix:FFS UFS JFS2
網絡文件系統:NFS cifs
集群文件系統:GFS2 OCF2
分布式文件系統:ceph moosefs mogileft lustre
2. 創建文件系統
支持的文件系統:cat /proc/filesystems 可查看,lsmod可查看內核加載的模塊
創建文件系統的命令mkfs,mke2fs,mkfs.FS_TYPE:
mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.msdos mkfs.vfat
mkfs.ext4 mkfs.ext2 mkfs.ext3 & mke2fs等如下選項意義一樣,可man查看
-t fs-type {ext2|ext3|ext4}
-b block-size {1024|2048|4096} # 設置塊大小,創建好的文件系統不能在修改此值
-L new-volume-label # 設置卷標
-i bytes-per-inode # 多少字節創建一個inode
-N number-of-inodes # 設置創建inode的數量
-m reserved-blocks-percentage # 為管理員預留空間的百分比,默認5%
-O feature[,…] # 啟用指定特性,-O ^feature關閉指定特性
命令的使用:
[root@scm-dzm ~]# mkfs.ext4 -L MySystem -b 4096 -m 3 /dev/sda5 mke2fs 1.41.12 (17-May-2010) Filesystem label=MySystem OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 131376 inodes, 525136 blocks 15754 blocks (3.00%) reserved for the super user First data block=0 Maximum filesystem blocks=541065216 17 block groups 32768 blocks per group, 32768 fragments per group 7728 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
3. 查看塊設備屬性
命令blkid,e2label,tune2fs
blkid:
-U UUID # 根據指定的UUID查找指定設備
-L LABEL # 根據指定的LABEL查找指定設備
[root@scm-dzm ~]# blkid /dev/sda5 /dev/sda5: LABEL="MySystem" UUID="8e383118-3e91-4393-b602-f24cb3d0256f" TYPE="ext4" [root@scm-dzm ~]# blkid -U 8e383118-3e91-4393-b602-f24cb3d0256f /dev/sda5
[root@scm-dzm ~]# blkid -L MySystem /dev/sda5
[root@scm-dzm ~]# blkid -O full /dev/sda1: UUID="7336f3a1-61ce-4ff5-9aba-e71a26748f74" TYPE="ext4" /dev/sda2: UUID="db406704-df06-46a2-a44f-94bb91c7daf4" TYPE="swap" /dev/sda5: LABEL="MySystem" UUID="8e383118-3e91-4393-b602-f24cb3d0256f" TYPE="ext4"
e2label:
e2label /dev/sda5 # 查看LABEL
e2label /dev/sda5 "NewLable" # 設置LABEL
[root@scm-dzm ~]# e2label /dev/sda5 "NewLable" [root@scm-dzm ~]# blkid -L NewLable /dev/sda5
tune2fs
-l device # 查看指定分區的超級快信息
-L "NewLabel" # 修改卷標
-m # # 修改預留給管理員的空間的百分比
-j # 升級fs
-O feature # 啟用指定特性,-O ^feature關閉指定特性
-o # 調整文件系統的默認掛載選項,加^表示取消
-u UUID # 修改UUID
[root@scm-dzm ~]# tune2fs -l /dev/sda5 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: NewLable Last mounted on: <not available> Filesystem UUID: 8e383118-3e91-4393-b602-f24cb3d0256f Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 131376 Block count: 525136 Reserved block count: 15754 Free blocks: 499721 Free inodes: 131365 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 128 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 7728 Inode blocks per group: 483 Flex block group size: 16 Filesystem created: Thu Jun 23 17:02:23 2016 Last mount time: n/a Last write time: Thu Jun 23 17:28:50 2016 Mount count: 0 Maximum mount count: 29 Last checked: Thu Jun 23 17:02:23 2016 Check interval: 15552000 (6 months) Next check after: Tue Dec 20 17:02:23 2016 Lifetime writes: 97 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: 419725ca-0c22-4146-885a-0044b03a19ee Journal backup: inode blocks [root@scm-dzm ~]# tune2fs -L "NNewLabel" /dev/sda5 tune2fs 1.41.12 (17-May-2010)
[root@scm-dzm ~]# blkid -L NNewLabel /dev/sda5
[root@scm-dzm ~]# tune2fs -o user_xattr /dev/sda5 tune2fs 1.41.12 (17-May-2010) [root@scm-dzm ~]# tune2fs -o acl /dev/sda5 tune2fs 1.41.12 (17-May-2010)
關于超級塊保存了很多信息:整個分區中的整個結構劃分保存在超級塊中,有多少塊組,每組擁有多少塊,每個組分別從第幾塊開始從第幾塊結束,每個塊多大,而且每個組中有多少塊占用,有多少塊free
如果超級塊丟失,整個分區將無法使用,所以超級塊在分區中有很多個備份,再出現意外時用來恢復分區的
4. 創建交換分區
首先需要使用工具fdisk調整分區的ID為82,然后做如下操作
[root@scm-dzm ~]# mkswap -L MySwap /dev/sda6 Setting up swapspace version 1, size = 530108 KiB LABEL=MySwap, UUID=3b99e1ac-60f8-4ae1-9453-5c9cdee86266
四、 文件系統檢測
工具:fsck.FS_TYPE 或者fsck -t FS_TYPE
-a # 自動修復
-r # 交互式修復
[root@scm-dzm ~]# fsck.ext4 -a /dev/sda5 NNewLabel: clean, 11/131376 files, 25415/525136 blocks
工具:e2fsck:ext系列文件系統專用檢測修復工具
-y # 自動修復
-f # 強制修復
[root@scm-dzm ~]# e2fsck -y /dev/sda5
e2fsck 1.41.12 (17-May-2010) NNewLabel: clean, 11/131376 files, 25415/525136 blocks
五、最后總結:
1. 首先分區fdisk parted sfdisk
2. 通知內核載入分區partx,kpartx,和centos5使用的partprobe
3. 創建文件系統:
mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev mkfs.msdos mkfs.vfat mkfs,mke2fs
創建swap分區
mkswap
查看創建的文件系統:命令blkid,e2label,tune2fs
4. 真正想要使用分區還需要掛在:mount
原創文章,作者:Net20_天意,如若轉載,請注明出處:http://www.www58058.com/19815