bacula Overview

Bacula 一個提供備份 Solution 的 Open Source Project
http://www.bacula.org/
裡面主要分成五個部份:
– Director 負責 Backup/Restore/Verify 和 Archive 這幾個動作,它是 Daemon.
– Console 用來跟 Director 溝通的 Interface
– Files Client Program,也是一個 Daemon, 負責提供檔案屬性跟 Director所需的資料.
– Storage 負責讀/寫你的 Tape 或其他媒體.
– Catalog 維護索引或 Volume Database.
架構圖:
bacula.jpg
安裝請依照慣例的 ./configure, make, make install 三部曲即可
安裝完成以後,測試 conf 檔案是否有問題:
#bacula-dir -t
#bacula-fd -t
#bacula-sd -t
#console -t
如果想讓 bacula daemon 在開機時自行啟動的話:
#make install-autostart
只裝 File Daemon(Client) 的話,用:
#make install-autostart-fd
主要設定都在 bacula-dir.conf 裡面
可以定義 Storage, Schedule, Job….等等資訊.
bacula-sd.conf 主要定義 Storage, Device 相關資訊.此處需要跟 bacula-dir.conf 中的 Storage 相配合.
bacula-dir.conf
FileSet{} 定義需要備份的目錄或檔案.
Storage{}表示要放Archive 的地方.
Schedule{} 定義執行的排程.
Job{} 則定義工作,裡面則會用到前面所提到的 FileSet, Storage, Schedule 等設定.也可以在執行的前後先執行 Script或程式(RunAfterJob, RunBeforeJob).
還可以設定 Job, Volume …等的保留時間( Retention ).
另外也支援自動換片的 Device, 只要在 Device {} 裡面指定 Change Command = /sbin/xxxx
換片的指令即可.
提供的 PDF 文檔非常詳盡,有兩百多頁~~
也支援 Windows 的 File Daemon(Client Program)
看完以後
覺得整個架構很清晰
也蠻便於管理的~
只是很多東西都必須在 conf 檔中定義好
而無法利用 Client 程式動態的指定Job, Schedule, FileSet …等~

rpm-update

網址:http://www.kleemann.org/rpm-update/
如果你因為不想去 Red Hat 而不使用 up2date,那麼,你可以試試這個程式.
目前最新的版本是 20030102 這個版本.
網站除了 Source 之外,也提供 rpm 可以下載.
(其實也沒有什麼 Source 不 Source 的,因為它是用 Python 寫的)
下載之後,使用 rpm -ivh rpm-update-1-20030102.noarch.rpm 安裝~
安裝應該會很順利,rpm檔裡面只有一個檔案而已.
ok~那麼怎麼使用呢??
先建立此目錄 /var/cache/rpm-update, 因為後面其實會用到此目錄.
但作者可能忘記了.
用 rpm-update -l 列出所有的站台,它是到 Red Hat 網站把 mirror 的網頁抓下來,然後把所有的ftp位址都 grep 出來.
知道位址之後,就可以下載啦~
用 rpm-update -d –host linux.sinica.edu.tw –single 下載
-d 是指 download
–host 是指定位址
–single 則是請 rpm-update 依據目前電腦的 ix86 去抓檔案,如 i386, i686…等等~
用 rpm-update -r –single 進行分析,並列出報告
-r 是指 report
最後,當然就是用 rpm-update -i –single 進行安裝啦.
如果你懶得打那麼多指令
你也可以編輯 ~/.rpm-update/default 這個檔案
把選項都放進去,如:
host = linux.sinica.edu.tw
single
version = 7.3
以後 rpm-update 的時候,就不需要打 –host, –single,直接打 rpm-update -d, rpm-update -r…就行了
安裝完了,不想保留那些 rpm 檔案的話
可以用 rpm-update -c 把 rpm 檔案清除掉.
要讓它自動定期去尋找更新的 rpm,當然也可以放在 crontab 裡面
作者提供了一個不錯的用法:
(rpm-update -d && rpm-update -r) | mail -s “RPM Update” yourname@yourdomain.com
這樣子就行了.

Journaling File Systems

原文出自http://www.linux-mag.com/2002-10/jfs_01.html,本文僅做筆記摘錄,並翻譯摘錄部分.
Linux now offers four alternatives to Ext2: Ext3, ReiserFS, XFS, and JFS.
Linux 現在提供四種不同於 Ext2 的選擇: Ext3, ReiserFS, XFS, and JFS.
They supports journaling, a feature certainly demanded by enterprise, can simplify restarts, reduce fragmentation, and accelerate I/O.
她們都支援日誌(journaling),一個企業級所需的特色,它可以簡單的重新啟動,減少碎裂(fragmentation)和加速I/O.
Some vernacular of file systems:
一些關於 file systems 的常用語:
A “logical block” is the smallest unit of storage, measured in bytes, and it may take several blocks to store a single file.
一個 “logical block” 是 Storage 中最小的單位,以bytes作單位,而通常一個檔案會花好幾個 block 來存放.
A “logical volume” can be a physical disk or some subset of the physical disk space.
一個 “logical volume” 可以是一個邏輯磁碟或實體磁碟空間的集合.
“Block allocation” is a method of allocating blocks where the file system allocates one block at a time.
“Block allocation”:索取 block 的方法.
“Internal fragmentation” occurs when a file does not a fill a block completely.
“Internal fragmentation” 內部碎列,當有很多 block, 而每個 block 都沒有完全塞滿時.
“External fragmentation” occurs when the logical blocks that make up a file are scattered all over the disk.
“External fragmentation” 外部碎列,當一個檔案分散在很多且不同的 block 上時.
An “extent” is a large number of contiguous blocks. described by a triple, consisting of (file offset, starting block number, length), where file offset is the offset of the extent’s first block from the beginning of the file, starting block number is the first block in the extent, and length is the number of blocks in the extent. For large files, extent allocation is a much more efficient technique than block allocation.
“extent” 一堆連續的 blocks, 包含 file offset, starting block number, length. file offset 就是相對於檔案的位址, starting block number 就是起始的 block 號碼, length 就是 block 的數目.
“meta-data” is the file system’s internal data structures. Meta-data includes date and time stamps, ownership information, file access permissions, other security information such as access control lists (if they exist), the file’s size and the storage location or locations on disk.
“meta-data” 就是 file system 的內部資料結構. 包含日期和時間戳記,擁有者,存取權限以及其他安全性資訊,檔案長度,和位置…
An “inode” stores all of the information about a file except the data itself. as a “bookkeeping” file for a file. An inode contains file permissions, file types, and the number of links to the file. It can also contain some direct pointers to file data blocks; pointers to blocks that contain pointers to file data bocks (so-called indirect pointers); and even double- and triple-indirect pointers. Every inode has a unique inode number.
“inode” 儲存檔案除了資料以外的所有資訊. 每個 inode 都有一個獨一無二的號碼.
A “directory” is a special kind of file that simply contains pointers to other files. Specifically, the inode for a directory file simply contains the inode numbers of its contents, plus permissions, etc.
“directory” 一種特殊的檔案,簡單的包含其他檔案的指標.當然也有 inode 和存取權限等資訊.
Corruption occurs because the logical operation of writing (or updating) a file is actually a sequence of I/O, and the entire operation may not be totally reflected on the media at any given point in time.
錯誤的發生是因為寫入(或更新)檔案的邏輯動作是循序的 I/O 動作,而這整個動作並未完全地反映到實際媒體上.
The magic of journaling file systems lies in transactions.
Journaling file system 的魔法是依賴於 transaction 之上.
treats a sequence of changes as a single, atomic operation.
就像是一個循序的改變,如同一個單一,極微的動作.
tracks changes to file system meta-data and/or user data.
追蹤 file system meta-data 和(或)使用者資料的變化.
The journal in a journaling file system is simply a list of transactions.
Journal 在 journaling file system 簡單的說就是一個 transaction 的列表.
In the event of a system failure, the file system is restored to a consistent state by replaying the journal.
在系統發生錯誤時,file system 就依照目前的狀態,回頭播放一次 journal.
inspects only those portions of the meta-data that have recently changed.
審查這些 meta-data 有被變動過的部份.
also address another significant problem: scalability.
但也有另外一個值得注意的問題: scalability 可靠性.
Features of modern file systems include:
現代檔案系統的特色:
– Faster allocation of free blocks. Extents (as described above) and B+ trees are used individually or together to find and allocate several free blocks, either by size or location, quickly.
快速地配置. Extents 和 B+ trees 被單獨(或一起)用來快速地尋找和配置數個閒置的 block.
– Large (or very large) numbers of files in a directory.
在一個目錄中能存在大量或很大量的檔案.
– Large files.
大量的檔案.
Ext3
designed to provide higher availability without impacting the robustness (at least the simplicity and reliability) of Ext2.
被設計來提供高可用度而使得 Ext2 不需面對太強的衝擊.
uses the same disk layout and data structures as Ext2, and it’s forward- and backward-compatible with Ext2
使用和 Ext2 相同的 disk 配置和資料結構, 而且它可以向前或向後相容於 Ext2.
limitations that Ext2 has. The fixed internal structures of Ext2 are simply too small (too few bits) to capture large file sizes, extremely large partition sizes, and enormous numbers of files in a single directory. Moreover, the bookkeeping techniques of Ext2, such as its linked-list directory implementation, do not scale well to large file systems (there is an upper limit of 32,768 subdirectories in a single directory, and a “soft” upper limit of 10,000-15,000 files in a single directory.)
限制和 Ext2 相同.固定的Ext2內部結構太小(太少bits),且使用的 Link list 在大磁碟環境下表現不佳.
Switching to Ext3
# tune2fs -j /dev/hdb3
Ext3 provides three data journaling modes that can be set at mount time: data=journal, data=writeback, and data=ordered. The data=journal mode provides both meta-data and data journaling. data=writeback mode provides only meta-data journaling. data=ordered mode, which is the default mode, provides meta-data journaling with increased integrity.
提供三種模式: data=journal(保護最完整), data=writeback(只保護 meta-data), data=ordered(預設,保護 meta-data之外,即較完整的journaling).
By the way, the 2.4 kernel has a limit of 2048 Gb for a single block device, so no file system larger than that can be created at this time (without patching the standard kernel). This restriction could be removed in the 2.5.x development kernel, and there are patches available to remove this limit, but as of 2.5.29, the patches haven’t been officially included yet.
目前 2.4 仍然有 2048Gb 的限制.
ReiserFS
One of the unique advantages of ReiserFS is support for small files — lots and lots of small files.
比較大的特色是支援小檔案,很多很多的小檔案.
ReiserFS is about eight to fifteen times faster than Ext2 at handling files smaller than 1K.
在處理很多小於1k的檔案時,它比 ext2 快七到八倍.
ReiserFS can actually store about 6% more data that Ext2 on the same physical file system.
在和 Ext2 相同的情況下,她也可以存比 Ext2 多 6% 的資料.
ReiserFS can allocate the exact space that’s needed. A B* tree manages all file system meta-data, and stores and compresses tails, portions of files smaller than a block.
只配置實際所需的空間. 使用了 B* tree 管理.
also has excellent performance for large files, but it’s especially adept at managing small files.
同時也對大檔案有很好的效能,但他特別適合用來處理小檔案.
JFS
JFS uses many advanced techniques to boost performance, provide for very large file systems,
使用了很多先進的技術來加速.
SGI’s XFS (described next) has many similar features. Some of the features of JFS include:
XFS 也用了相似的技術. 這些技術包含了:
– Extent-based addressing structures. along with aggressive block allocation policies to produce compact, efficient, and scalable structures for mapping logical offsets within files to physical addresses on disk. This feature yields excellent performance.
Extent-based 定址的資料結構.
– Dynamic inode allocation. JFS dynamically allocates space for disk inodes as required, freeing the space when it is no longer required. Additionally, this feature decouples disk inodes from fixed disk locations.
動態的 inode 配置.自動配置所需的空間,並釋放不需要的空間.
– Directory organization. Two different directory organizations are provided: one is used for small directories and the other for large directories.
目錄的組織,使用了不同的目錄組織來分別處理大的和小個檔案.
– 64-bits. JFS is a full 64-bit file system. This allows JFS to support large files and partitions.
64-bits. 完全的 64-bit file system.
– such as allocation groups (which speeds file access times by maximizing locality), and various block sizes ranging from 512-bytes to 4096-bytes (which can be tuned to avoid internal and external fragmentation).
還有,配置群組及可變動的 block-size.
XFS
A single XFS file system can be 18,000 petabytes (that’s 1015 bytes) and a single file can be 9,000 petabytes. XFS is also capable of delivering excellent I/O performance.
一個單一個 XFS file system 最大可以到 18,000 petabytes 和單一檔案可達 9,000 petabytes. 同時也有能力提供最好的I/O效能.
uses many of the same techniques found in JFS.
使用了許多和 JFS 相同的技術.

8051 概論

CPU - RAM 128 bytes
Flash 4k
Processor 20Mhz
Interrupt 2
Timer 2
I/O 16 bit
記憶體概圖
+------------+
|Jump begin  |
+------------+
|Jump Timer 0|
+------------+
|Int 0(UART) |
+------------+
|Jump Timer 1|
+------------+
|....        |
|....        |
+------------+
Notice:每顆 51 不一定都一樣
事件發生時, Interrupt 或 Timer 會去向量找到相關的位址,然後 jump 過去.
程式 always 執行中,不會停.
通常 begin 都只有作 initialize.
當 timer 要觸發或被 interrupt 了,才作事.

vsftpd Overview

網址: http://vsftpd.beasts.org
vsftpd 她是目前號稱最安全的 FTP Server.
也是目前 Red Hat 8, Open BSD, Suse 所採用的 ftp server.
最新的版本是 1.1.3.
下載 tarball 以後,解開~
她不需要特別 configure, 只需要 make, make install 就可以了
make會自動安裝到 /usr/local/sbin 下面去~
而 conf 檔,則需要自行把 tarball 內附的 vsftpd.conf 複製到 /etc 去才行.
預設的 Server Type 是 inetd, 而不是 Standalone 型態~
所以你需要用 kill -HUP xinetd-pid
來請求 xinetd 重新載入 configuration.
預設的 Configuration 也很安全,完全不讓人登入,也不讓你寫入….非常的…嗯…安全~
你需要在 vsftpd.conf 裡面修改這幾個設定才能讓一般的使用者能登入並擁有寫入的權限:
local_enable=YES
write_enable=YES
如果要讓他以 Standalone 型態起來,則可以在設定裡面置入
listen=YES
並在 /etc/rc.d/init.d 裡面放 script 就行了
至於其他的設定,可以自行用 man vsftpd.conf 來找到用法.
和 proftpd 比較起來
設定是簡單了許多
蠻有那種樸實無華的味道~
再加上檔案又小~
沒什麼可以挑剔的~
期待 2.0 吧
2.0 的 beta 已經 release 了~
相信正式版應該很快就會 Release.