磁盤管理之文件系統及管理工具
我們在之前的文章中講到了硬盤的MBR與GPT分區,我們這篇文章來講一下怎么使用工具對硬盤進行分區,硬盤的分區有什么區別,以及分區的管理。
管理分區
首先我們來看一下分區。那么什么是分區呢?簡單的比喻一下,硬盤就像一個大房子,那么在向房間里放東西(比如家具)之前,它需要有一定的結構,劃分出不同大小,不同功能的房間(也就像我們的硬盤要劃分出不同的硬盤分區來存放數據)。
centos6 劃分分區的單位是:柱面開始結束;centos7 以扇區開始結束。
ID 表示類型(分區場景類型),正常83 , 擴展(Extended 擴展)5 ,交換分區82。
查看塊設備命令:blkid
[root@localhost ~]# blkid /dev/mapper/vg0-var: UUID="7f5db057-b8d7-43cd-b3dc-045b24c6bd23" TYPE="ext4" /dev/sda1: UUID="c95af470-1451-408d-9902-ca403c2db569" TYPE="ext4" /dev/sda2: UUID="lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz" TYPE="LVM2_member" /dev/mapper/vg0-root: UUID="31c728a6-3443-4a20-90b4-05c04be458e1" TYPE="ext4" /dev/mapper/vg0-swap: UUID="43ad7eb7-5f24-4180-89e1-8bf557f6da30" TYPE="swap" /dev/mapper/vg0-usr: UUID="7ce272b9-6e36-4180-93c8-2fb4ca038e47" TYPE="ext4" /dev/sda3: UUID="62d5b227-642e-4b4f-b133-0de62c291be8" TYPE="xfs" /dev/sda6: UUID="7be8caf3-12e5-4363-b4f6-3f5c850d52b6" TYPE="swap" /dev/sda5: UUID="e9a007df-6175-4187-907e-733407175e99" TYPE="ext4" LABEL="/mnt/sda5"
查看分區:fdisk
fdisk -l
查看單個分區
]# fdisk -l /dev/sda
選項:
n:創建新分區
d:刪除已有分區
t:修改分區類型
l:查看所有已知ID
w:保存并退出
q:不保存并退出
p:顯示現有分區信息
這里需要注意的是:在已經分區并且已經掛載其中某個分區的磁盤設備上創建的分區,內核可能在創建完成后無法直接識別。
查看內核已識別的所有分區:
[root@centos7 bin]# cat /proc/partitions major minor #blocks name 8 0 209715200 sda 8 1 204800 sda1 8 2 104857600 sda2 8 3 4194304 sda3 8 4 1 sda4 8 5 20971520 sda5 11 0 7587840 sr0
這里如果沒有識別你可以使用下面的命令來試試重讀分區表:
centos5:partprobe[device]
centos6,7:partx,kpartx
partx -a [device]
kpartx -af [device]
[root@centos7 bin]# partx -a /dev/sda partx: /dev/sda: error adding partitions 1-5 [root@centos7 bin]# partx -a /dev/sda partx: /dev/sda: error adding partitions 1-6
文件系統
有了分區之后我們是不是就可以直接使用硬盤寫入和讀取信息了呢?當然不是,分區需要文件系統來支持。那么什么是文件系統?文件系統是操作系統用于明確存儲設備或分區上的文件的方 法和數據結構;即在存儲設備上組織文件的方法。操作系統 中負責管理和存儲文件信息的軟件結構稱為文件管理系統, 簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組 織和分配,負責文件存儲并對存入的文件進行保護和檢索的 系統。具體地說,它負責為用戶建立文件,存入、讀出、修 改、轉儲文件,控制文件的存取,安全控制,日志,壓縮, 加密等。
了解到什么是文件系統之后我們需要知道都有什么類型的文件系統,以及我們可以在Linux中使用什么類型的文件系統?一起來看下文件系統類型:
Linux文件系統: ext2, ext3, ext4, xfs(SGI), btrfs( Oracle), reiserfs, jfs(AIX), swap
swap: 交換分區
光盤:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2(oracle)
分布式文件系統:ceph, moosefs, mogilefs, glusterfs, Lustre
這么多的文件系統類型我們怎么去加以分類呢?
文件系統分類:
根據其是否支持"journal"功能:
日志型文件系統: ext3, ext4, xfs, …
非日志型文件系統: ext2, vfat
文件系統管理工具:
mkfs
檢測修復工具
fsck
檢查屬性工具
dumpe2fs
查看內核以裝載模塊
lsmod
(裝載到內核是看不見模塊的,但能正常使用)
調整文件系統特性
tune2fs
ext系列文件系統的管理工具:mkfs (創建)
mkfs.ext2 mkfs.ext3 mkfs.ext4 向后兼容
mkfs.ext2沒有日志功能
這里要注意:格式化會破壞原有數據
我們看下下面的例子:(創建ext2格式的文件系統)
[root@localhost ~]# mkfs.ext2 /dev/sda3 mke2fs 1.41.12 (17-May-2010) Filesystem label= (卷標) OS type: Linux (操作系統類型) Block size=4096 (log=2) (塊大?。? Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655776 inodes, 2622361 blocks (創建了655776個inode,一共有2622361個自盤快) 131118 blocks (5.00%) reserved for the super user (預留5%給超級管理員) First data block=0 Maximum filesystem blocks=2688548864 (最大快編號) 81 block groups (UI共多少個塊組) 32768 blocks per group, 32768 fragments per group (每個組內有多少個塊) 8096 inodes per group (每一個group內有多少個inode) Superblock backups stored on blocks: (超級快被備份到··) 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
查看對應系統type:
[root@localhost ~]# blkid /dev/sda3 /dev/sda3: UUID="c69362e0-b42e-4b2f-8d45-a8dbd52594b0" TYPE="ext2"
在Centos 6 上默認是不支持xfs文件系統的,需要實現的話要安裝xfsprogs;
[root@localhost yum.repos.d]# yum install xfsprogs
安裝好軟件后我們嘗試一下:
[root@localhost yum.repos.d]# mkfs.xfs /dev/sda3 mkfs.xfs: /dev/sda3 appears to contain an existing filesystem (ext4). mkfs.xfs: Use the -f option to force overwrite. [root@localhost yum.repos.d]# mkfs.xfs -f /dev/sda3 meta-data=/dev/sda3 isize=256 agcount=4, agsize=655591 blks = sectsz=512 attr=2, projid32bit=0 data = bsize=4096 blocks=2622361, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@localhost yum.repos.d]# blkid /dev/sda3 /dev/sda3: UUID="7c524070-0b4e-4535-a1de-14af31663d16" TYPE="xfs"
mkfs工具的選項:
mkfs -t 指定系統類型
mkfs -t ext2 = mkfs.ext2
ext系列文件系統的專用管理工具:mke2fs
mke2fs [options] device
-t {ext2|ext3|ext4}
mkfs -t ext2 = mkfs.ext2 = mke2fs -t ext2
-b {1024|2048|4096} 用于指明系統文件系統的塊大小
示例:
[root@localhost yum.repos.d]# mke2fs -b 2048 /dev/sda3 mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=2048 (log=1)
-L LABEL :用于指明卷標;
示例:
[root@localhost ~]# mke2fs -t ext4 -L DATA -b 2048 /dev/sda3 mke2fs 1.41.12 (17-May-2010) Filesystem label=DATA OS type: Linux Block size=2048 (log=1) Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 657408 inodes, 5244722 blocks 262236 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=543162368 321 block groups 16384 blocks per group, 16384 fragments per group 2048 inodes per group Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 2048000, 3981312 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. /dev/sda3: LABEL="DATA" UUID="80588779-aedc-4f3d-bf94-ed96dba524b6" TYPE="ext4"
-j : 創建有日志功能的文件系統ext3
mke2fs -j = mke2fs -t ext3 = mkfs -t ext3 = mkfs.ext3
-i #: 指定每多少字節準備一個inode
-N #:直接指明要給此文件系統創建的inode的數量
-m :指定為管理人員預留空間所占百分比(默認是5%)
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
e2label命令:查看與設定卷標
[root@localhost ~]# e2label /dev/sda3 DATA [root@localhost ~]# e2label /dev/sda3 DATA
查看或修改ext系列文件系統的默寫屬性:tune2fs
-l :列出超級塊中的內容
[root@localhost ~]# tune2fs -l /dev/sda3 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> (卷標) Last mounted on: <not available> (最近一次掛載) Filesystem UUID: 8613385e-c75c-429e-a202-a56d0f7d77f2 (UUID) Filesystem magic number: 0xEF53 (文件系統類型專用標示) Filesystem revision #: 1 (dynamic) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file (已經啟用特性) Filesystem flags: signed_directory_hash Default mount options: (none) (默認掛載特性) Filesystem state: clean (狀態,clean正常) Errors behavior: Continue Filesystem OS type: Linux Inode count: 655776 Block count: 2622361 Reserved block count: 131118 (預留塊數量) Free blocks: 2575429 (空閑塊數量) Free inodes: 655765 (空閑inode數量) First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 640 (預留給GTD大?。? Blocks per group: 32768 (每一組多少塊) Fragments per group: 32768 Inodes per group: 8096 (每組多少個inode) Inode blocks per group: 506 (每一個組有多少個塊放置inode) Filesystem created: Mon Jul 25 12:14:00 2016 Last mount time: n/a Last write time: Mon Jul 25 12:14:00 2016 Mount count: 0 Maximum mount count: 37 Last checked: Mon Jul 25 12:14:00 2016 Check interval: 15552000 (6 months) Next check after: Sat Jan 21 12:14:00 2017 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 Default directory hash: half_md4 Directory Hash Seed: 46401477-d447-4687-b242-426481012bba -j:ext2 --> ext3 [root@localhost ~]# tune2fs -j /dev/sda3 tune2fs 1.41.12 (17-May-2010) Creating journal inode: done This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. /dev/sda3: UUID="8613385e-c75c-429e-a202-a56d0f7d77f2" SEC_TYPE="ext2" TYPE="ext3" [root@localhost yum.repos.d]#
-L:LABEL :修改卷標
-m #:調整預留空間百分比
[root@localhost ~]# tune2fs -m 2 /dev/sda3 tune2fs 1.41.12 (17-May-2010) Setting reserved blocks percentage to 2% (52447 blocks)
-O:調整屬性;開啟或關閉[^]某種特性
-o[^]mount_options:開啟或關閉某種默認掛載選項;例如acl
顯示ext系列文件系統的屬性信息:dumpe2fs命令
dumpe2fs [選項] device
Group 0: (Blocks 0-32767) Primary superblock at 0, Group descriptors at 1-1 (主superblock在0) Reserved GDT blocks at 2-641 (保留的GDT塊在2-641) Block bitmap at 642 (+642), Inode bitmap at 643 (+643) Inode table at 644-1149 (+644) (inode塊位于...) 31612 free blocks, 8085 free inodes, 2 directories (空間塊,空閑inode) Free blocks: 1156-32767 (空閑塊) Free inodes: 12-8096 (可用iNode)
fsck:文件系統檢測工具
因進程意外導致崩潰等導致指定操作非正常終止時,可能導致文件損壞;此時應該檢測并修復文件系統;但是建議離線進行(即非掛載下進行)
fsck:check and repair a Linux file system
檢查和修復Linux文件系統
-t(TYPE):指明文件系統類型
fsck -t ext4 = fsck.ext4
-a:無須交互自動修復所有錯誤(不建議使用);
-r:交互式修復;
ext系列文件系統的專用工具:e2fsck
e2fsck –> e2fsck – check a Linux ext2/ext3/ext4 file system
e2fsck [選項] device
-y:對所有問題自動回答yes
-f:強制;即使文件系統處于clean狀態,也強制進行檢測
示例:
[root@localhost ~]# e2fsck -f /dev/sda3 e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes 檢查inode,塊,大小 Pass 2: Checking directory structure 檢查目錄結構 Pass 3: Checking directory connectivity 檢查目錄鏈接性 Pass 4: Checking reference counts 檢查引用計數 Pass 5: Checking group summary information 檢查簇概要信息 /dev/sda3: 11/655776 files (0.0% non-contiguous), 79733/2622361 blocks
swap文件系統:
Linux上的交換分區必須使用獨立的文件系統;且文件系統的systemID必須為82.
創建swap設備:mkswap
mkswap [options] device
-L:指明卷標
-f:強制
交換分區的啟用和禁用:
創建交換分區:mkswap
啟用swapon
swapon [optine] [device]
-a:所有swap設備
禁用swapoff
swapoff device
交換分區建立、使用:
1)查看硬盤、分區:
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /media/CentOS_6.8_Final sda 8:0 0 100G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 60G 0 part │ ├─vg0-root (dm-0) 253:0 0 20G 0 lvm / │ ├─vg0-swap (dm-1) 253:1 0 2G 0 lvm [SWAP] │ ├─vg0-usr (dm-2) 253:2 0 10G 0 lvm /usr │ └─vg0-var (dm-3) 253:3 0 20G 0 lvm /var ├─sda3 8:3 0 10G 0 part ├─sda4 8:4 0 1K 0 part ├─sda5 8:5 0 20G 0 part ├─sda6 8:6 0 2G 0 part └─sda7 8:7 0 7.8G 0 part
2)設置/dev/sda6
[root@localhost ~]# fdisk /dev/sda Command (m for help): t Partition number (1-7): 6 Hex code (type L to list codes): 82 Command (m for help): p Disk /dev/sda: 107.4 GB, 107374182400 bytes 255 heads, 63 sectors/track, 13054 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: 0x000448b1 Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 7859 62914560 8e Linux LVM /dev/sda3 7859 9164 10489446 83 Linux /dev/sda4 9165 13054 31246425 5 Extended /dev/sda5 9165 11776 20980858+ 83 Linux /dev/sda6 11777 12038 2104483+ 82 Linux swap / Solaris /dev/sda7 12039 13054 8160988+ 83 Linux Command (m for help): w The partition table has been altered!
3)創建交換分區 /dev/sda6分區
[root@localhost ~]# mkswap /dev/sda6 Setting up swapspace version 1, size = 2104476 KiB no label, UUID=7be8caf3-12e5-4363-b4f6-3f5c850d52b6 [root@localhost ~]# blkid /dev/mapper/vg0-var: UUID="7f5db057-b8d7-43cd-b3dc-045b24c6bd23" TYPE="ext4" /dev/sda1: UUID="c95af470-1451-408d-9902-ca403c2db569" TYPE="ext4" /dev/sda2: UUID="lAXPRM-LRkZ-3Btn-DgMf-XCED-44RA-38xRfz" TYPE="LVM2_member" /dev/mapper/vg0-root: UUID="31c728a6-3443-4a20-90b4-05c04be458e1" TYPE="ext4" /dev/mapper/vg0-swap: UUID="43ad7eb7-5f24-4180-89e1-8bf557f6da30" TYPE="swap" /dev/mapper/vg0-usr: UUID="7ce272b9-6e36-4180-93c8-2fb4ca038e47" TYPE="ext4" /dev/sda3: UUID="62d5b227-642e-4b4f-b133-0de62c291be8" TYPE="xfs" /dev/sda6: UUID="7be8caf3-12e5-4363-b4f6-3f5c850d52b6" TYPE="swap" /dev/sda5: UUID="e9a007df-6175-4187-907e-733407175e99" TYPE="ext4" LABEL="/mnt/sda5"
4)查看swap;啟用所有swap分區;再次查看
[root@localhost ~]# free -h total used free shared buffers cached Mem: 3.7G 787M 3.0G 3.4M 72M 317M -/+ buffers/cache: 397M 3.3G Swap: 2.0G 0B 2.0G [root@localhost ~]# swapon /dev/sda6 [root@localhost ~]# free -h total used free shared buffers cached Mem: 3.7G 789M 3.0G 3.4M 72M 317M -/+ buffers/cache: 398M 3.3G Swap: 4.0G 0B 4.0G
完成
mount掛載
mount [-fnrsvw] [-t vfstype] [-o options] device dir
掛載點:mount_point,用于作為另一個文件系統的訪問入口,
1)事先存在;
2)使用未被使用或不會被其他進程使用的目錄;
3)掛載點下原有的文件將會被隱藏
-r:readonly,只讀掛載;
-w:read and write,讀寫掛載;
-n:默認情況下,設備掛載或卸載的操作會同步更新至/etc/mtab文件中;-n用于禁止此特性;
-t:vfstype,指明要掛載的設備上的文件系統的類型;多數情況下省略,mount會通過blkid判斷要掛載的設備的文件系統類型;
-L:掛載時以卷標的方式指明設備;
-U:掛載時以UUID的方式指明設備;
掛載選項:-o
sync/async:同步/異步操作;
atime/notime:文件或目錄被讀取訪問時是否更新其訪問時間戳;
diratime/nodiratime:目錄被訪問時是否更新其訪問時間戳;
remount:重新掛載;
acl:支持使用facl功能;
( mount -o acl device dir
tune2fs -o acl device)設置acl的兩種方式;
ro:只讀
rw:讀寫
dev/nodev:此設備上是否允許創建設備文件;
exec/noexec:是否允許運行此設備上的程序文件;
auto/noauto:是否自動掛載;
user/nouser:是否允許普通用戶掛載此文件系統;
suid/nosuid:是否允許程序文件上的suid和sgid特殊權限生效;
defaults:
Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime.
查看當前系統所有已掛載的設備:
mount
cat /etc/mtab
cat /proc/mounts
掛載光盤設備:
mount -r /dev/cdrom mount_point
umount卸載
umount device|dir
這里要注意:正在被進程訪問的掛載點無法被卸載;
假設需要卸載/mnt,如果進程被占用無法卸載,先使用lsof查看掛載點/mnt被什么進程占用。
lsof /mnt 或 fuwer -v /mnt
使用fuser命令來終止所有正在訪問某掛載點的進程。
fuser -km /mnt
我們設置的掛載關機之后下次開機就無法自動掛載上來,那么我們需要怎么設置文件系統開機自動掛載?
設定除根文件系統以外的其他文件系統能開機自動掛載:/etc/fstab
每行定義一個要掛載的文件系統及相關屬性:
6個字段:
1)要掛載的設備:
設備文件;LABAL;UUID;偽文件系統:如sysfs,proc等。
2)掛載點:
swap類型的設備的掛載點為swap
3)文件系統類型:
4)掛載選項:
defaults:默認掛載選項;如同時使用多個選項使用“,”分割,如:defaults,acl
5)轉儲頻率:
0:從不轉儲 1:每天轉儲 2:每隔一天
6)自檢次序:
0:不自檢 1:首先自檢,通常是根文件 2:次級自檢 …
mount -a:可自動掛載定義在此文件中的所有支持自動掛載的設備;
df和du命令
df命令:
df [OPTION]… [FILE]…
df -l:只顯示本地文件系統相關信息;
df -h:以人能看懂的格式顯示
df -i:顯示inode的使用狀況
du命令:
顯示文件大小
du [OPTION]… [FILE]…
原創文章,作者:zanghonglei,如若轉載,請注明出處:http://www.www58058.com/41981
文章總結的很好,從磁盤分區到掛載使用,都由了詳細的操作,但對于如何調整文件系統的屬性,確實略微帶過,這里對于我們來說也是至關重要的,希望多加練習。