1.系統初始化:
1)系統初始化時根據MBR來識別硬碟裝置的。
2)在MBR中包括用來載入作業系統的可執行代碼。這個可執行代碼就是MBR中的前446個位元組的boot loader程式,引導載入程式。
3)在boot leader之後的64個位元組的空間就是儲存分區表的相關資訊。
4)分區表的相關資訊包括:分區號,分區的起始磁柱和磁柱的數量,所以Linux作業系統就可以根據分區表中的以上3中資訊來識別硬碟裝置。
ox5或0xf:可擴充分區 0x82:Linux的交換分區 0x83:普通Linux分區 0x8e:Linux邏輯卷管理分區 0xfd:Linux的RAID分區。 MBR留給分區表64個位元組,而每個分區表的大小為16個位元組,所以在一個硬碟上最多可以劃分4個主要磁碟分割。
一個IDE硬碟最多使用63個分區。 一個SCSI的硬碟最所可使用15個分區。
分區的原因: 方便管理和控制。 提高系統的效率 使用磁碟的配額功能限制使用者使用的磁碟量 便於備份和恢複 2.使用fdisk和partprobe命令來管理硬碟分區。
[root@localhost ~]# fdisk -l /dev/sdaDisk /dev/sda: 17.1 GB, 17179869184 bytes255 heads, 63 sectors/track, 2088 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System/dev/sda1 * 1 33 265041 83 Linux/dev/sda2 34 1053 8193150 83 Linux/dev/sda3 1054 1314 2096482+ 82 Linux swap/dev/sda4 1315 2088 6217155 5 Extended/dev/sda5 1315 2088 6217123+ 83 Linux
從左至右的解釋: 1)硬碟分區所對應的裝置檔案名稱(Device) 2)是否為boot分區,有 * 為boot分區,否則不是 3)其實磁柱 4)結束/終止磁柱 5)分區的資料區塊 6)分區號碼(id) 7)分區的類型
[root@localhost ~]# fdisk /dev/sdaThe number of cylinders for this disk is set to 2088.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)Command (m for help): mCommand 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 列舉已知的分區類型 m print this menu 列出fdisk中使用的所有命令 n add a new partition 增加愛一個新分區 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 u change display/entry units v verify the partition table w write table to disk and exit 儲存 x extra functionality (experts only)
3.分區的格式化: 使用mke2fs /dev/sdb1 使用partprobe重新初始化核心中的分區表
建立檔案系統; mke2fs [ 選項 ] 裝置檔案名稱 -b:定義資料區塊的大小,預設1KB -c:在建立檔案系統前,檢查裝置上是否有壞塊 -i:定義位元組數與i節點之間的比率,多少位元組對應一個i節點 -j:建立帶有日誌的ext3檔案系統。 -L:設定檔案系統的邏輯卷標 -m:定義超級使用者預留磁碟空間的百分比 -N:覆蓋預設i節點的預設計算值 dumpe2fs 這個命令列出每個裝置上檔案系統的超級塊和資料區塊組的資訊
[root@localhost ~]# dumpe2fs /dev/sda1 | moredumpe2fs 1.35 (28-Feb-2004)Filesystem volume name: /bootLast mounted on: <not available>Filesystem UUID: 21fbfeae-e5d2-4e52-8e68-0cc0aab4b9c1Filesystem magic number: 0xEF53Filesystem revision #: 1 (dynamic)Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_superDefault mount options: (none)Filesystem state: cleanErrors behavior: ContinueFilesystem OS type: LinuxInode count: 66264Block count: 265040Reserved block count: 13252Free blocks: 237915Free inodes: 66217First block: 1Block size: 1024Fragment size: 1024Reserved GDT blocks: 256Blocks per group: 8192Fragments per group: 8192Inodes per group: 2008Inode blocks per group: 251Filesystem created: Tue Oct 16 15:37:27 2012Last mount time: Thu Nov 15 10:41:04 2012Last write time: Thu Nov 15 10:41:04 2012Mount count: 14Maximum mount count: -1Last checked: Tue Oct 16 15:37:27 2012Check interval: 0 (<none>)Reserved blocks uid: 0 (user root)Reserved blocks gid: 0 (group root)First inode: 11Inode size: 128Journal inode: 8Default directory hash: teaDirectory Hash Seed: 9a2e4851-9fcd-4fd9-abda-3fa58d2acccaJournal backup: inode blocks
4.ext2和ext3檔案系統。 兩種檔案系統格式相同,只是ext3檔案系統會在硬碟分區的最後面留出一塊磁碟空間來儲存日誌記錄。 只要在mke2fs命令中加入-j參數就可以將一個硬碟分區格式化成一個ext3的檔案系統。
使用tune2fs的命令就可以將ext2的檔案系統直接轉化成ext3的檔案系統,而且不會丟失任何資料。
5.為分區指定lable 使用e2lable
[root@localhost ~]# e2label /dev/sda1/boot
[root@localhost ~]# e2lable /dev/sdb1 /oracle
[root@localhost ~]# blkid/dev/sda1: LABEL="/boot" UUID="21fbfeae-e5d2-4e52-8e68-0cc0aab4b9c1" SEC_TYPE="ext3" TYPE="ext2"/dev/sda2: LABEL="/" UUID="bf13b9c0-d2e8-43eb-ac26-693879e2fb4c" SEC_TYPE="ext3" TYPE="ext2"/dev/sda3: TYPE="swap"/dev/sda5: LABEL="/home" UUID="e7750c54-2d76-486d-ad05-33b8d59237d5" SEC_TYPE="ext3" TYPE="ext2"
6.檔案系統的掛載與卸載
[root@localhost ~]# mount/dev/sda2 on / type ext3 (rw)none on /proc type proc (rw)none on /sys type sysfs (rw)none on /dev/pts type devpts (rw,gid=5,mode=620)usbfs on /proc/bus/usb type usbfs (rw)/dev/sda1 on /boot type ext3 (rw)none on /dev/shm type tmpfs (rw)/dev/sda5 on /home type ext3 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
[root@localhost ~]# mount /dev/sdb1 /oracle
以某個檔案檔案系統label形式掛載加入—L參數。
[root@localhost ~]# mount -L /oracle /oracle
命令格式:
mount [-t vfstype] [-o options] device dir
其中:
1)-t vfstype 指定檔案系統的類型,通常不必指定。mount 會自動選擇正確的類型。常用類型有: 光碟片或光碟片鏡像:iso9660 Linux的ext2和ext3檔案系統 DOS fat16檔案系統:msdos
Windows 9x fat32檔案系統:vfat
Windows NT ntfs檔案系統:ntfs
Mount Windows檔案網際網路共用:smbfs
UNIX(LINUX) 檔案網際網路共用:nfs
2.)o options 主要用來描述裝置或檔案的掛接方式。常用的參數有: suid:允許掛載的檔案愛你系統使用suid或sgid的特殊許可權 dev:允許掛載檔案系統建立裝置檔案,如/dev/sda1 exec:允許掛載檔案系統之後可以執行該檔案系統的可執行檔。 auto:在電腦開機後自動掛載這個檔案系統 nouser:只允許超級使用者可以掛載這個檔案系統。 async:在寫資料時先寫到資料緩衝區後再寫到硬碟上。
loop:用來把一個檔案當成硬碟分區掛接上系統
ro:採用唯讀方式掛接裝置
rw:採用讀寫方式掛接裝置
iocharset:指定訪問檔案系統所用字元集 3)device 要掛接(mount)的裝置。
4)dir裝置在系統上的掛接點(mount point)。
Linxu系統預設的選項是 rw,suid,dev,exec,auto,nouser,async 卸載一個裝置: umount device | mount point fuser命令可以顯示指定檔案或檔案系統進程的ID,以及相關的資訊。
[root@localhost ~]# fuser -v / USER PID ACCESS COMMAND/ root 1 .rc.. init root 2 .rc.. migration/0 root 3 .rc.. ksoftirqd/0 root 4 .rc.. events/0
重新掛載檔案系統到唯讀狀態
[root@localhost ~]# mount -o remount,ro /oracle
7.利用/etc/fstab檔案在開機時掛載檔案系統:
[root@localhost ~]# cat /etc/fstab# This file is edited by fstab-sync - see 'man fstab-sync' for detailsLABEL=/ / ext3 defaults 1 1LABEL=/boot /boot ext3 defaults 1 2none /dev/pts devpts gid=5,mode=620 0 0none /dev/shm tmpfs defaults 0 0LABEL=/home /home ext3 defaults 1 2none /proc proc defaults 0 0none /sys sysfs defaults 0 0LABEL=SWAP-sda3 swap swap defaults 0 0/dev/hda /media/cdrom auto pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
從左至右的解釋:
1)裝置/分區,既可以使用Label的用法也可以使用裝置的標記法(如:/dev/sdb1) 2)掛載點,掛載目錄 3)檔案系統的類型 4)選項,掛載這個檔案愛你系統時,使用的選項 5)Dump的頻率,如果為0,表示不做dump(轉儲),為1表示做一次,一次類推 6)fsck應該是file system check的縮寫,這一欄表示系統開機時檢查檔案系統先後次序,如果為0,表示不檢查,如果為1,表示第一個檢查,一次類推,最大為9,如果檢查順序相同,則由上而下依次檢查。
8.虛擬記憶體的管理: 要在Linxu上建立一個swap分區,需要執行以下步驟。 1)建立swap分區所用的分區或檔案,並且在建立分區事,需要將分區的類型設定成0x82 2)使用mkswap命令在該分區或檔案上寫入一個特殊的識別標識 3)將swap類型的檔案系統的掛載資訊加入到/etc/fstab檔案中,其目的是為了當Linux自動啟動時自動掛載這個分區。 4)如果虛擬記憶體使用的swap分區,要使用swap -a命令來啟動。
[root@localhost ~]# dd if=/dev/zero of=/oracle/swapfile bs=1M count=128
dd是轉換並複製檔案,if(input file )=/dev/zero(一個內容全是0的檔案) of(output file)=(某個檔案)
9.在ext3和ext2檔案系統中檔案屬性的設定。 1)lsattr:該命令是用來顯示檔案的屬性 2)chattr:這個命令是用來改變檔案的屬性。
chattr +/-/=屬性 檔案
選項件man 手冊
[root@localhost mypro]# lsattr main.cpp------------- main.cpp[root@localhost mypro]# chattr +a main.cpp[root@localhost mypro]# lsattr main.cpp-----a------- main.cpp
掛接光碟片鏡像檔案
由於近年來磁碟技術的巨大進步,新的電腦系統都配備了大容量的磁碟系統,在Windows下許多人都習慣把軟體和資料做成光碟片鏡像檔案通過虛擬 光碟機來使用。這樣做有許多好處:一、減輕了光碟機的磨損;二、現在硬碟容量巨大存放幾十個光碟片鏡像檔案不成問題,隨用隨調十分方便;三、硬碟的讀取速度要遠 遠高於光碟片的讀取速度,CPU佔用率大大降低。其實linux系統下製作和使用光碟片鏡像比Windows系統更方便,不必借用任何第三方軟體包。
1、從光碟片製作光碟片鏡像檔案。將光碟片放入光碟機,執行下面的命令。
#cp /dev/cdrom /home/sunky/mydisk.iso 或
#dd if=/dev/cdrom of=/home/sunky/mydisk.iso
註:執行上面的任何一條命令都可將當前光碟機裡的光碟片製作成光碟片鏡像檔案/home/sunky/mydisk.iso
2、將檔案和目錄製作成光碟片鏡像檔案,執行下面的命令。
#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
註:這條命令將/home/sunky/mydir目錄下所有的目錄和檔案製作成光碟片鏡像檔案/home/sunky/mydisk.iso,光碟片卷標為:mydisk
3、光碟片鏡像檔案的掛接(mount)
#mkdir /mnt/vcdrom
註:建立一個目錄用來作掛接點(mount point)
#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
註:使用/mnt/vcdrom就可以訪問盤鏡像檔案mydisk.iso裡的所有檔案了。
掛接移動硬碟
對linux系統而言,USB介面的移動硬碟是當作SCSI裝置對待的。插入移動硬碟之前,應先用fdisk –l 或 more /proc/partitions查看系統的硬碟和硬碟分區情況。
[root at pldyrouter /]# fdisk -l
Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 4 32098+ de Dell Utility
/dev/sda2 * 5 2554 20482875 7 HPFS/NTFS
/dev/sda3 2555 7904 42973875 83 Linux
/dev/sda4 7905 8924 8193150 f Win95 Ext'd (LBA)
/dev/sda5 7905 8924 8193118+ 82 Linux swap
在這裡可以清楚地看到系統有一塊SCSI硬碟/dev/sda和它的四個磁碟分割/dev/sda1 -- /dev/sda4, /dev/sda5是分區/dev/sda4的邏輯分區。接好移動硬碟後,再用fdisk –l 或 more /proc/partitions查看系統的硬碟和硬碟分區情況
[root at pldyrouter /]# fdisk -l
Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 4 32098+ de Dell Utility
/dev/sda2 * 5 2554 20482875 7 HPFS/NTFS
/dev/sda3 2555 7904 42973875 83 Linux
/dev/sda4 7905 8924 8193150 f Win95 Ext'd (LBA)
/dev/sda5 7905 8924 8193118+ 82 Linux swap
Disk /dev/sdc: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 510 4096543+ 7 HPFS/NTFS
/dev/sdc2 511 4864 34973505 f Win95 Ext'd (LBA)
/dev/sdc5 511 4864 34973473+ b Win95 FAT32
大家應該可以發現多了一個SCSI硬碟/dev/sdc和它的兩個磁碟分割/dev/sdc1?、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分區的邏輯分區。我們可以使用下面的命令掛接/dev/sdc1和/dev/sdc5。
#mkdir -p /mnt/usbhd1
#mkdir -p /mnt/usbhd2
註:建立目錄用來作掛接點(mount point)
#mount -t ntfs /dev/sdc1 /mnt/usbhd1
#mount -t vfat /dev/sdc5 /mnt/usbhd2
註:對ntfs格式的磁碟分割應使用-t ntfs 參數,對fat32格式的磁碟分割應使用-t vfat參數。若漢字檔案名稱顯示為亂碼或不顯示,可以使用下面的命令格式。
#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1
#mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2
linux系統下使用fdisk分區命令和mkfs檔案系統建立命令可以將移動硬碟的分區製作成linux系統所特有的ext2、ext3格式。這樣,在linux下使用就更方便了。使用下面的命令直接掛接即可。
#mount /dev/sdc1 /mnt/usbhd1
掛接隨身碟
和USB介面的移動硬碟一樣對linux系統而言隨身碟也是當作SCSI裝置對待的。使用方法和移動硬碟完全一樣。插入隨身碟之前,應先用fdisk –l 或 more /proc/partitions查看系統的硬碟和硬碟分區情況。
[root at pldyrouter root]# fdisk -l
Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 4 32098+ de Dell Utility
/dev/sda2 * 5 2554 20482875 7 HPFS/NTFS
/dev/sda3 2555 7904 42973875 83 Linux
/dev/sda4 7905 8924 8193150 f Win95 Ext'd (LBA)
/dev/sda5 7905 8924 8193118+ 82 Linux swap
插入隨身碟後,再用fdisk –l 或 more /proc/partitions查看系統的硬碟和硬碟分區情況。
[root at pldyrouter root]# fdisk -l
Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 4 32098+ de Dell Utility
/dev/sda2 * 5 2554 20482875 7 HPFS/NTFS
/dev/sda3 2555 7904 42973875 83 Linux
/dev/sda4 7905 8924 8193150 f Win95 Ext'd (LBA)
/dev/sda5 7905 8924 8193118+ 82 Linux swap
Disk /dev/sdd: 131 MB, 131072000 bytes
9 heads, 32 sectors/track, 888 cylinders
Units = cylinders of 288 * 512 = 147456 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 * 1 889 127983+ b Win95 FAT32
Partition 1 has different physical/logical endings:
phys=(1000, 8, 32) logical=(888, 7, 31)
系統多了一個SCSI硬碟/dev/sdd和一個磁碟分割/dev/sdd1,/dev/sdd1就是我們要掛接的隨身碟。
#mkdir -p /mnt/usb
註:建立一個目錄用來作掛接點(mount point)
#mount -t vfat /dev/sdd1 /mnt/usb
註:現在可以通過/mnt/usb來訪問隨身碟了, 若漢字檔案名稱顯示為亂碼或不顯示,可以使用下面的命令。
#mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb
掛接Windows檔案分享權限設定
Windows網際網路共用的核心是SMB/CIFS,在linux下要掛接(mount)windows的磁碟共用,就必須安裝和使用samba 軟體包。現在流行的linux發行版絕大多數已經包含了samba軟體包,如果安裝linux系統時未安裝samba請首先安裝samba。當然也可以到 www.samba.org網站下載......新的版本是3.0.10版。
當windows系統共用設定好以後,就可以在linux用戶端掛接(mount)了,具體操作如下:
# mkdir –p /mnt/samba
註:建立一個目錄用來作掛接點(mount point)
# mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba
註:administrator 和 pldy123 是ip地址為10.140.133.23 windows電腦的一個使用者名稱和密碼,c$是這台電腦的一個磁碟共用
如此就可以在linux系統上通過/mnt/samba來訪問windows系統磁碟上的檔案了。以上操作在redhat as server 3、redflag server 4.1、suse server 9以及windows NT 4.0、windows 2000、windows xp、windows 2003環境下測試通過。
掛接UNIX系統NFS檔案分享權限設定
類似於windows的網際網路共用,UNIX(Linux)系統也有自己的網際網路共用,那就是NFS(網路檔案系統),下面我們就以SUN Solaris2.8和REDHAT as server 3 為例簡單介紹一下在linux下如何mount nfs網際網路共用。
在linux用戶端掛接(mount)NFS磁碟共用之前,必須先配置好NFS服務端。
1、Solaris系統NFS服務端配置方法如下:
(1)修改 /etc/dfs/dfstab, 增加共用目錄
share -F nfs -o rw /export/home/sunky
(2)啟動nfs服務
# /etc/init.d/nfs.server start
(3)NFS服務啟動以後,也可以使用下面的命令增加新的共用
# share /export/home/sunky1
# share /export/home/sunky2
註:/export/home/sunky和/export/home/sunky1是準備共用的目錄
2、linux系統NFS服務端配置方法如下:
(1)修改 /etc/exports,增加共用目錄
/export/home/sunky 10.140.133.23(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)
註:/export/home/目錄下的sunky、sunky1、sunky2是準備共用的目錄,10.140.133.23、*、 linux-client是被允許掛接此共用linux客戶機的IP地址或主機名稱。如果要使用主機名稱linux-client必須在服務端主機 /etc/hosts檔案裡增加linux-client主機ip定義。格式如下:
10.140.133.23 linux-client
(2)啟動與停止NFS服務
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是預設啟動的)
/etc/rc.d/init.d/nfs start 啟動NFS服務
/etc/rc.d/init.d/nfs stop 停止NFS服務
註:若修改/etc/export檔案增加新的共用,應先停止NFS服務,再啟動NFS服務方能使新增加的共用起作用。使用命令exportfs -rv也可以達到同樣的效果。
3、linux用戶端掛接(mount)其他linux系統或UNIX系統的NFS共用
# mkdir –p /mnt/nfs
註:建立一個目錄用來作掛接點(mount point)
#mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs
註:這裡我們假設10.140.133.9是NFS服務端的主機IP地址,當然這裡也可以使用主機名稱,但必須在本機/etc/hosts檔案裡增加服務端ip定義。/export/home/sunky為服務端共用的目錄。
如此就可以在linux用戶端通過/mnt/nfs來訪問其它linux系統或UNIX系統以NFS方式共用出來的檔案了。以上操作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc環境下測試通過。
許可權問題:
假設 server 端的使用者 jack, user id 為 1818, gid 為 1818, client 端也有一個使用者 jack,但是 uid 及 gid 是 1818。client 端的 jack 希望能完全讀寫 server 端的 /home/jack 這個目錄。server 端的 /etc/exports 是
這樣寫的:
/home/jack *(rw,all_squash,anonuid=1818,anongid=1818)
這個的設定檔的意思是,所有 client 端的使用者存取 server 端 /home/jack 這
目錄時,都會 map 成 server 端的 jack (uid,gid=1818)。我 mount 的結果是
1. client 端的 root 可以完全存取該目錄, 包括讀、寫、殺……等
2. client 端的 jack (uid,gid=1818) 我可以做:
rm -rf server_jack/*
cp something server_jack/
mkdir server_jack/a