Sunday, June 21, 2009

IBM Web site said Solaris is "the most advanced operating system on the planet"

IBM has just published information about Solaris 10, letting the world know who is really the big boss here (of course, not the big blue), IBM web site said that Solaris is the most advanced operating system on the planet, check the full list of Ten Things to know below:

From IBM web site,

"Ten Things to know about Solaris 10:

    1. Great Product, $500M and 3000 engineering years of R&D investment have resulted in the most advanced operating system on the planet.
    2. Great Price, Use Solaris 10 commercially, in production, for FREE.
    3. Open Source, Sun released the Solaris OS - millions of lines of code - to the open source community via opensolaris.org.
    4. Application Compatibility Guarantee, Guaranteed binary compatibility from release to release of Solaris and source compatibility between SPARC and x64/x86 processors.
    5. One Solaris, Same code base on x64, x86 and SPARC-based systems.
    6. Most secure OS on the planet, 80% of Trusted Solaris features now in Solaris 10, including Process Rights Management and Secure Execution.
    7. DTrace, Designed to be used on live production systems; Offers application performance improvements of up to 50X in matter of hours.
    8. Solaris Containers, Complete application fault and security isolation with workload management and virtualization.
    9. Predictive Self-Healing, Predicts system errors and takes failing components offline before they cause problems.
    10. Runs open source applications, 188 of the leading open source packages are included, pre-compiled and ready to go. "

Reference

http://www-304.ibm.com/jct09002c/gsdod/solutiondetails.do?solutionId=27270&lc=en&stateCd=P&page=1&sa=true#sd

Solaris FMA Quick Note - Part 2 (CLI Commands)

From my FMA Quick Note - Part 1, I have shown you about the FMA architecture, event types, event names and some examples. This part I will show the CLI commands and how to use it.

FMA Quick Note (Part 2) CLI Commands

fmd (1M) – deamon which receives telemetry info relating to problems, diag & initiates proactive self-healing activities
the fmd deamon is also working with the diag engine plug-ins, the plug-ins are used to perform diagnosis for particular hardware that previously fired error report to find out whether the hardware is really fault. If the hardware is fault, the fault event will be raised, and a case (correlated event) will be opened. the diag engine plug-inst are located in these directories:
/usr/platform/`uname -i`/lib/fm/fmd/plugins
/usr/platform/`uname -m`/lib/fm/fmd/plugins
/usr/lib/fm/fmd/plugins
(generic)
the plug-ins are searched in the above directories ORDER, specific modules allow to be loaded prior to generic modules.

fmadm (1M) – utility to view/modify system config parameters that maintained by the fmd deamon
fmstat (1M) – utility to report statistics associated with the fmd deamon and its associated modules
fmdump (1M) – utility to display the contents of the fault and error logs

Diag engine plug-inst example for Sun Fire T2000
The Sun Fire T2000 does not have this plugins directory /usr/platform/`uname -i`/lib/fm/fmd/plugins
Instead, it has this directory /usr/platform/`uname -m`/lib/fm/fmd/plugins and /usr/lib/fm/fmd/plugins (generic plugins)

Note:

uname -i shows SUNW,Sun-Fire-T2000
uname -m shows sun4v

fmd plug-ins on T2000 (specific)

# ls -l /usr/platform/sun4v/lib/fm/fmd/plugins
total 456
-rw-r--r-- 1 root bin 195 Aug 23 2006 cpumem-diagnosis.conf
-r-xr-xr-x 1 root bin 109480 Oct 14 2006 cpumem-diagnosis.so
-rw-r--r-- 1 root bin 473 Oct 4 2006 cpumem-retire.conf
-r-xr-xr-x 1 root bin 31584 Oct 14 2006 cpumem-retire.so

-rw-r--r-- 1 root bin 240 Oct 4 2006 etm.conf
-r-xr-xr-x 1 root bin 75368 Oct 14 2006 etm.so

fmd plug-ins on T2000 (generic)

# ls -l /usr/lib/fm/fmd/plugins
total 1008
-rw-r--r-- 1 root bin 411 Jan 22 2005 cpumem-retire.conf
-r-xr-xr-x 1 root bin 30772 Oct 14 2006 cpumem-retire.so

-rw-r--r-- 1 root bin 1679 Aug 23 2006 eft.conf
-r-xr-xr-x 1 root bin 311588 Sep 6 2006 eft.so
-rw-r--r-- 1 root bin 315 Jan 22 2005 io-retire.conf
-r-xr-xr-x 1 root bin 15924 Sep 6 2006 io-retire.so
-rw-r--r-- 1 root bin 149 Aug 23 2006 ip-transport.conf
-r-xr-xr-x 1 root bin 36768 Sep 6 2006 ip-transport.so
-rw-r--r-- 1 root bin 190 Jul 11 2006 snmp-trapgen.conf
-r-xr-xr-x 1 root bin 32356 Jul 22 2006 snmp-trapgen.so
-rw-r--r-- 1 root bin 864 Jan 22 2005 syslog-msgs.conf
-r-xr-xr-x 1 root bin 21356 Sep 6 2006 syslog-msgs.so
-rw-r--r-- 1 root bin 309 Aug 23 2006 zfs-diagnosis.conf
-r-xr-xr-x 1 root bin 19984 Sep 6 2006 zfs-diagnosis.so
-rw-r--r-- 1 root bin 234 Oct 17 2006 zfs-retire.conf
-r-xr-xr-x 1 root bin 18844 Oct 19 2006 zfs-retire.so

Note that the cpumem-retire engine plug-ins appears in both specific and generic plug-ins directory, since the specific plug-ins will be loaded before the generic one, in this case ONLY the cpumem-retire module in directory/usr/platform/sun4v/lib/fm/fmd/plugins will be loaded.

Viewing the FMA data using fmadm

fmadm (FM stands for Fault Manager)
config – show FM config
faulty – list of faulty resources
flush - Flush the cached state of
load - Load plug-in
repair - Record a repair resource
reset [-s serd] - Reset the parameters of or its SERD engine
rotate - Rotate log file
unload - Unloaded

Show all modules that are currently loaded
# fmadm config
MODULE VERSION STATUS DESCRIPTION
cpumem-diagnosis 1.5 active CPU/Memory Diagnosis
cpumem-retire 1.1 active CPU/Memory Retire Agent
eft 1.16 active eft diagnosis engine
etm 1.0 active FMA Event Transport Module
fmd-self-diagnosis 1.0 active Fault Manager Self-Diagnosis
io-retire 1.0 active I/O Retire Agent
snmp-trapgen 1.0 active SNMP Trap Generation Agent
sysevent-transport 1.0 active SysEvent Transport Agent
syslog-msgs 1.0 active Syslog Messaging Agent
zfs-diagnosis 1.0 active ZFS Diagnosis Engine
zfs-retire 1.0 active ZFS Retire Agent

Show faulty components
# fmadm faulty
STATE RESOURCE / UUID
------------------------------------------------------------------
faulted mem:///component=Slot%20B%3A%20J3000
dbdc7f15-848c-cbdc-b47f-deb9d9fff5c9
------------------------------------------------------------------

(after) Repair the faulty component
# fmadm repair mem:///component=Slot%20B%3A%20J3000
fmadm: recorded repair to mem:///component=Slot%20B%3A%20J3000

# fmadm faulty
STATE RESOURCE / UUID
------------------------------------------------------------------

Show the FMA statistics
# fmstat
module ev_recv ev_acpt wait svc_t %w %b open solve memsz bufsz
cpumem-diagnosis 4 4 0.0 262.8 0 0 1 1 308b 356b
cpumem-retire 1 0 0.0 66.6 0 0 0 0 0 0
fmd-self-diagnosis 0 0 0.0 0.0 0 0 0 0 0 0
syslog-msgs 1 0 0.0 0.1 0 0 0 0 32b 0

Show module statistics
# fmstat -m cpumem-retire
NAME VALUE DESCRIPTION
auto_flts 0 auto-close faults received
bad_flts 0 invalid fault events received
cpu_blfails 0 failed cpu blacklists
cpu_blsupp 0 cpu blacklists suppressed
cpu_fails 0 cpu faults unresolveable
cpu_flts 0 cpu faults resolved
cpu_supp 0 cpu offlines suppressed
nop_flts 0 inapplicable fault events received
page_fails 0 page faults unresolveable
page_flts 0 page faults resolved
page_nonent 0 retires for non-existent fmris
page_supp 0 page retires suppressed

FMA Logging Explained

When an error event is received by the fmd deamon, the event is logged into the error log prior toacknowledging receipt of the event to the FMA event transport. Initially the event is logged with HEADER that means it has NOT yet been processed by a module. When a module accepts an error event, that HEADER is changed to indicated the event does not need to be replayed in the case of a failure.

The CLI commands used for verifying error and fault log are listed below :

fmdump (display fault log)

fmdump -e (display error log)

fmdump -eV (display error log in verbose mode)
================================================================================

part 3 will show how to identify system error and fault

Solaris FMA Quick Note - Part 1 (Architecture)

Since the introduction of the Solaris 10 to the world, you may have heard about the 'Predictive Self Healing' features which tremendously increase the system reliability, availability and serviceability (RAS).

The Predictive Self Healing itself consists of 2 major things--FMA and SMF (Fault Management Architecture & Service Management Facility). Here is the introduction to FMA.

FMA Quick Note (Part 1) Architecture

The FMA has 3 main components working together to make system SELF HEALING possible.

(1) FMA Components

1.1) “Fault manager”
is the software component to multiplex between error reports (produced by system components) and companion software (designed to diag & response to those errors) to facilitate self-healing and improve availability.


1.2) “Diag engines”
is the fault manager's clients (software components) automatically diag problems using error reports

1.3) “Agents” or “FMA Agents”
will automatically respond to the problems disabling faulty components alert admin providing more info to the higher level management software

(2) FMA Features

FMA is the new software architecture and methodology for fault management across Sun's product line that provides 3 (self healing) activities -- Error handling, Fault Diagnosis and Response (Self Healing)


2.1.1) Error handling

- Detection of an error
- Captures data to diagnose the underlying problem
- Isolate the effects of the error
- Generate the appropriate error report
- send error report to other diag engines (if needed)
2.1.2) Fault diagnosing

- Analysis of problem or defect in the system


2.1.3) Response (Self Healing)

- Perform isolation and self-healing tasks ie. reconfigured or disabled faulty components until it is repaired

(3) FMA Event Naming Schemes

When the event happens whether it is 'error' or 'fault' event, FMA has the way to call it in the standard way using Hierarchical Tree and/or FMRI format.

(3.1) Hierarchical trees
- FMA using 3 root schemes
ereport (events related to error events)
fault (events related to faults)
list (events related to lists)

each root scheme can have its subcategories for further specify error-generated or faulty-component.


Subcategories for ereport and fault :
asic – ASICs circuit events
cpu – cpu & memory subsystem events
io – I/O device events


Subcategory for list (only one)
list.suspect (lists all fault suspects for a set of related events (a case))

Events can be passed among various “FMA” components, for examples
ereport.cpu.ultraSPARC-III.CE
fault.asic.schizo.*
list.suspect

(3.2) FMRI (Fault Management Resource Identifier)

- the URL like format to identify error and fault event
- FMRI is the name-value pair to identify each event

FMRI identifies resources that
- detected an error
- are affected by an error
- has a change of state following fault diagnosis event may be reported in name-value pair format or hierarchical text string (derived from FMRI) , ie. fmri-scheme://[authority]/path

FMRI format description (fmri-scheme://[authority]/path)
fmri-scheme – specifies format of the string and owner of the resource repository
authority – provides a mean by which resource may be identified
path – specifies the resource

FMRI Examples


hc:///product-id=SunFire15000,chassis-id=123456789,domain-id=A/chassis/
system-board=0/cpu-module=2/cpu=8
diag-engine://product-id=E450,chassis-id=123456/de=eversholt/:version=1.0
dev:///devices/pci@8,700000/scsi@6/sd@6,0:g/:devid=1234

References


(1) BigAdmin Predictive Self healing : http://www.sun.com/bigadmin/content/selfheal/

(2) FMA Search http://onesearch.sun.com/search/onesearch/index.jsp?col=community-bigadmin&qt=FMA

(3) OpenSolaris.org Fault Management : http://www.opensolaris.org/os/community/fm/

==================END====OF====PART====1======================================

Part 2 will discuss about CLI commands for FMA.....bye for now, Peerapong.K@Sun.COM.

DTrace useful links

Brendan Gregg's Blog (the creator of DTraceToolkit) : http://blogs.sun.com/brendan/

Brendan Gregg's Home page : http://www.brendangregg.com/

DTrace Tools : http://www.brendangregg.com/dtrace.html

DTraceToolkit : http://www.opensolaris.org/os/community/dtrace/dtracetoolkit

DTraceToolkit Preso file : http://prefetch.net/presentations/DTraceToolkit_Presentation.pdf

Brendan Gregg's Preso on DTrace Workshop : http://www.context-switch.com/performance/dtrace_workshop01_slides.pdf

OpenSolaris DTrace Student Guide :http://opensolaris.org/os/community/documentation/files/studentguide.pdf

SolarisInternal.COM DTrace Intro : http://www.solarisinternals.com/wiki/index.php/DTrace_Topics_Intro

SolarisInternal.COM DTraceToolkit : http://www.solarisinternals.com/wiki/index.php/DTraceToolkit

ColorTrace : http://blogs.sun.com/brendan/entry/colortrace

Blog O' Matty : http://prefetch.net/blog/index.php/category/solaris-dtrace/

Power6 goes THUD (the collection)

Solaris 10 has passed 5000+ certified solutions.

Solaris 10 has more than 5000+ certified solutions on both SPARC and x64 platforms.

Full Solution Catalog : http://www.sun.com/bigadmin/apps/

Acid2 Browser Test

Acid2 Test URL : http://www.webstandards.org/files/acid2/test.html

What Acid2 testing does is to test how browsers render complex CSS.

If your web browser PASSED, it will look like the smiley face below:

Hello World!

if your browser PASSED, it looks like this smiley face.

otherwise, it may look like this:

Failed example

I have tried many browsers available today. Surprisingly, most of them are FAILED including IE7, Firefox , BonEcho and Camino.

Apple's Safari, OmniWeb 5.6 are PASSED. There are others that may be passed, but I do not have time to test them.

Give it a try 8-"

Mac OS X : How to speed up Microsoft Word launch times.

MS Word on Mac OS X will optimize its font menu every time it started up, this process takes quite some times and can make you feel very bore especially for one who has just moved from Windows to Mac platform.

So, to minimize this effect (shorten launch time), we can disable the WYSIWYG from General option.

Goto 'Preferences.." ==> click "General" ==> uncheck "WYSIWYG font and style menu"

See picture here .

Apple Notebook and iPod Battery information

If you're using one of the Apple products, Macbook or iPod for examples. The links below may interest you because it shows you how to make the most of your Lithium-ion battery on your iPod and Macbook..

Lithium-ion batteries : http://www.apple.com/batteries/

Apple notebook batteries : http://www.apple.com/batteries/notebooks.html

iPod batteries : http://www.apple.com/batteries/ipods.html

จะชาร์ทแบตเตอรี่อย่างไรให้คุ้มค่า here

Hope this help....

OpenSourceMac.org : Another great Open Source Software site for Mac OS X

I've introduced you guy the MacForge website in my blog (http://blogs.sun.com/Peerapong/entry/macforge_the_free_open_source). Today I found the may be older one but rather useful, it's the OpenSourceMac (www.OpenSourceMac.Org). It has most of serious applications you ever need to make your everyday life easier ranging from Web Browser, Digital Media Player, CD/DVD Burner, Podcast ripping tools, iPod syncing tools, Dream Weaver-like HTML developer tools, Professional Raster/Vector graphic tools, etc...

Give it a try... see for yourself.

ZFS -- the first sip of the world best file system --

I have a chance to test the Solaris 10 06/06 ZFS features. I found that it is very simple to config and admin. In just one CLI command, it is ready to use. This is the simplest file system I have ever used. ZFS is the best.

Listing below are some features for ZFS in Solaris 10 Update 2 version :

1. World first 128-bit filesystem

2. 99.99999999999999999 integrity

3. Self healing file system -- no fsck (filesystem check needed)

4. Architect for Integrity and Speed

5. Rock Solid availability with RAID-Z (Mirroring also supported)

6. No Volume management software needed (uses Storage Pool concept instead)

7. Dynamic Stripping (to maximize disk spindles)

8. Built-in data services such as Snapshot and Cloning

9. Quota and Capacity Reservation supported

10. Data Compression supported

11. Data Encryption supported (in future release)

12. Very Strong Integrity model --- Everything is Transactional, Copy-on-Write (COW) and End-to-End Checksummed. Help prevent from Bit rot, Phantom writes, Misdirected reads and writes, H/W and DMA parity errors, S/W and Driver bugs, Accidental overwrite

13. Resilver and Resynchronization

14. Very simple to admin (via CLI and GUI)

for CLI, very few commands needed

15. ETC ...

Below is my screen captured from my notebook when testing Solaris 10 x86 (06/06) for ZFS feature:


(1) Show physical disk or file disk type for ZFS

#ls -la /zfsdisk/*
-rw------T 1 root root 104857600 May 17 14:39 /zfsdisk/disk1
-rw------T 1 root root 104857600 May 17 14:39 /zfsdisk/disk2
-rw------T 1 root root 104857600 May 17 14:42 /zfsdisk/disk3
-rw------T 1 root root 104857600 May 17 14:23 /zfsdisk/disk4
-rw------T 1 root root 157286400 May 17 14:37 /zfsdisk/disk5
-rw------T 1 root root 157286400 May 17 14:42 /zfsdisk/disk6

NOTIECE : disk1-4 have 100MB in size, disk5-6 have 150MB.

(2) Initial creation of pool (mypool) -- zpool create

# zpool create mypool mirror /zfsdisk/disk1 /zfsdisk/disk2
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
mypool 95.5M 52.5K 95.4M 0% ONLINE -

# zpool status
pool: mypool
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
mirror ONLINE 0 0 0
/zfsdisk/disk1 ONLINE 0 0 0
/zfsdisk/disk2 ONLINE 0 0 0

errors: No known data errors

(3) Initial creation of file systems (myfs) -- zfs create

# zfs create mypool/myfs
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 104K 63.4M 24.5K /mypool
mypool/myfs 24.5K 63.4M 24.5K /mypool/myfs

(4) Adding extra disks -- zpool add
# zpool add mypool mirror /zfsdisk/disk3 /zfsdisk/disk4

# zpool status
pool: mypool
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
mirror ONLINE 0 0 0
/zfsdisk/disk1 ONLINE 0 0 0
/zfsdisk/disk2 ONLINE 0 0 0
mirror ONLINE 0 0 0
/zfsdisk/disk3 ONLINE 0 0 0
/zfsdisk/disk4 ONLINE 0 0 0

errors: No known data errors

#zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
mypool 191M 214K 191M 0% ONLINE -

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 106K 159M 25.5K /mypool
mypool/myfs 24.5K 159M 24.5K /mypool/myfs

*** Avail size from the 'zpool list' and 'zfs list' commands may vary slightly
*** as the 'zfs list' command accounts for a small amount of space reserved for
*** the file system level operations that is NOT visible from the 'zpool list'
*** command


(5) Volumes
# zfs create -V 50m mypool/myvol
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 50.1M 109M 25.5K /mypool
mypool/myfs 24.5K 109M 24.5K /mypool/myfs
mypool/myvol 22.5K 159M 22.5K -

*** no mount point listed for myvol, Volumes are NOT mountable
*** (need to make it UFS to be able to mount)
*** ZFS has guaranteed that there will be 50MB available -
*** the other file systems available space has been reduced by
*** 50MB and the pool has 50MB used


# newfs /dev/zvol/rdsk/mypool/myvol
newfs: construct a new file system /dev/zvol/rdsk/mypool/myvol: (y/n)? y
Warning: 2048 sector(s) in last cylinder unallocated
/dev/zvol/rdsk/mypool/myvol: 102400 sectors in 17 cylinders of 48 tracks, 128 sectors
50.0MB in 2 cyl groups (14 c/g, 42.00MB/g, 20160 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 86176,

# mkdir /data
# mount /dev/zvol/dsk/mypool/myvol /data
# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0d0s0 14435859 3730629 10560872 27% /
/devices 0 0 0 0% /devices
ctfs 0 0 0 0% /system/contract
proc 0 0 0 0% /proc
mnttab 0 0 0 0% /etc/mnttab
swap 2734616 700 2733916 1% /etc/svc/volatile
objfs 0 0 0 0% /system/object
/usr/lib/libc/libc_hwcap1.so.1
14435859 3730629 10560872 27% /lib/libc.so.1
fd 0 0 0 0% /dev/fd
swap 2733972 56 2733916 1% /tmp
swap 2733940 24 2733916 1% /var/run
/vol/dev/dsk/c1t0d0/sol_10_606_x86
362602 362602 0 100% /cdrom/sol_10_606_x86
mypool 162816 25 111472 1% /mypool
mypool/myfs 162816 24 111472 1% /mypool/myfs
/dev/zvol/dsk/mypool/myvol
46111 1041 40459 3% /data

*** myvol has used aprox 5MB.

(6) Destroying myvol
# zfs destroy mypool/myvol

(7) Additional file system
# zpool create mypool/myfs2

(8) Reservations
(to guaratee that a file system has a certain level of capacity available to it)

*** do this AFTER you have created multiple file systems but
*** BEFORE demo the quota section

# zfs set reservation=155M mypool/myfs
# zfs get reservation mypool/myfs
NAME PROPERTY VALUE SOURCE
mypool/myfs reservation 155M local

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 155M 3.86M 27.5K /mypool
mypool/myfs 24.5K 159M 24.5K /mypool/myfs
mypool/myfs2 24.5K 3.86M 24.5K /mypool/myfs2

***
*** copy data over with in the limits of the space available
***

# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0d0s0 14435859 3729421 10562080 27% /
. . . . .
. . . . .
mypool 162816 27 3950 1% /mypool
mypool/myfs 162816 24 162645 1% /mypool/myfs
mypool/myfs2 162816 24 3950 1% /mypool/myfs2

# ls -la /kernel/genunix
-rwxr-xr-x 1 root sys 2235280 Apr 30 05:10 /kernel/genunix

# cp /kernel/genunix /mypool/myfs2/genunix1

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 157M 1.60M 27.5K /mypool
mypool/myfs 24.5K 157M 24.5K /mypool/myfs
mypool/myfs2 2.28M 1.60M 2.28M /mypool/myfs2

# df -k
. . . . .
mypool 162816 27 1640 2% /mypool
mypool/myfs 162816 24 160336 1% /mypool/myfs
mypool/myfs2 162816 2331 1640 59% /mypool/myfs2

# cp /kernel/genunix /mypool/myfs2/genunix2
cp: /mypool/myfs2/genunix2: No space left on device

*** ZFS actually rolls back the data that was copied cover so you will NOT
*** hit the full file system situation.


(9) Reservation -- unset
# zfs set reservation=none mypool/myfs

(10) Quotas -- maximum limit on the size a file system can be used
# zfs set quota=2m mypool/myfs2
# zfs get quota mypool/myfs2
NAME PROPERTY VALUE SOURCE
mypool/myfs2 quota 2M local

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 174K 159M 27.5K /mypool
mypool/myfs 24.5K 159M 24.5K /mypool/myfs
mypool/myfs2 24.5K 1.98M 24.5K /mypool/myfs2

# cp /kernel/genunix /mypool/myfs2/genunix1
cp: /kernel/genunix: Disc quota exceeded

*** Like the 'Reservation', ZFS undoes the effects of the copy as it did not
*** complete

(11) Auto NFS Sharing
# share
<>

# zfs set sharenfs=on mypool/myfs
# zfs get sharenfs mypool/myfs
NAME PROPERTY VALUE SOURCE
mypool/myfs sharenfs on local

# share
- /mypool/myfs rw ""

----Unshare----
# zfs set sharenfs=off mypool/myfs
# zfs get sharenfs mypool/myfs
NAME PROPERTY VALUE SOURCE
mypool/myfs sharenfs off local
#
# share
<>

(12) Data Recovery -- Shapshots (creating Write-protected image)

----copy data to myfs----
# cp /usr/dict/words /mypool/myfs
# cp /etc/passwd /mypool/myfs
# ls -la /mypool/myfs
total 526
drwxr-xr-x 2 root sys 4 May 17 16:07 .
drwxr-xr-x 4 root sys 4 May 17 15:38 ..
-rw-r--r-- 1 root root 671 May 17 16:07 passwd
-r--r--r-- 1 root root 206663 May 17 16:07 words

----take a snapshot of myfs----
# zfs snapshot mypool/myfs@first
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 443K 159M 27.5K /mypool
mypool/myfs 284K 159M 284K /mypool/myfs
mypool/myfs@first 0 - 284K -
mypool/myfs2 24.5K 1.98M 24.5K /mypool/myfs2

----take a snapshot of myvol----
# zfs snapshot mypool/myvol@backup
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 50.1M 13.4M 25.5K /mypool
mypool/myfs 24.5K 13.4M 24.5K /mypool/myfs
mypool/myvol 22.5K 63.4M 22.5K -
mypool/myvol@backup 0 - 22.5K -

----verify snapshot----
ls -la /mypool/myfs/.zfs/snapshot/first
total 523
drwxr-xr-x 2 root sys 4 May 17 16:07 .
dr-xr-xr-x 3 root root 3 May 17 14:55 ..
-rw-r--r-- 1 root root 671 May 17 16:07 passwd
-r--r--r-- 1 root root 206663 May 17 16:07 words

*** if we created mypool/myvol (zfs create -V 50m mypool/myvol), then we
*** made it UFS file system (newfs /dev/zvol/rdsk/mypool/myvol), then we
*** mounted this /dev/zvol/dsk/mypool/myvol to /data
*** we can do the snapshot for this volume as well, by using this command
*** zfs snapshot mypool/myvol@first, the /dev/zvol/dsk/mypool@first can be
*** mounted with RO (read-only)
*** if we snapshot ZFS using 'zfs snapshot mypool/myfs@backup', for example;
*** the snapshot will be located in '/mypool/myfs/.zfs/snapshot/backup'


# cd /mypool/myfs
# mkfile -n 5m junk
# ls -la
total 527
drwxr-xr-x 2 root sys 5 May 17 16:14 .
drwxr-xr-x 4 root sys 4 May 17 15:38 ..
-rw------T 1 root root 5242880 May 17 16:14 junk
-rw-r--r-- 1 root root 671 May 17 16:07 passwd
-r--r--r-- 1 root root 206663 May 17 16:07 words

# df -k
Filesystem kbytes used avail capacity Mounted on
. . . . .
mypool 162816 27 162210 1% /mypool
mypool/myfs 162816 414 162210 1% /mypool/myfs
mypool/myfs2 2048 24 2023 2% /mypool/myfs2

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 606K 158M 27.5K /mypool
mypool/myfs 438K 158M 414K /mypool/myfs
mypool/myfs@first 23.5K - 284K -
mypool/myfs2 24.5K 1.98M 24.5K /mypool/myfs2
# rm junk

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 476K 159M 27.5K /mypool
mypool/myfs 308K 159M 284K /mypool/myfs
mypool/myfs@first 23.5K - 284K -
mypool/myfs2 24.5K 1.98M 24.5K /mypool/myfs2

*** now mypool/myfs && mypool/myfs@first has the same REFER side

*** now some lines from /mypool/myfs/words, then save
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 608K 158M 27.5K /mypool
mypool/myfs 440K 158M 156K /mypool/myfs
mypool/myfs@first 284K - 284K -
mypool/myfs2 24.5K 1.98M 24.5K /mypool/myfs2

*** now REFER side of mypool/myfs && mypool/myfs@first are NOT the same

#diff /mypool/myfs/words /mypool/myfs/.zfs/snapshot/first/words


---Data comparision---
# digest -a md5 /mypool/myfs/words
34a2d6e3c4851ea9a56fc5ace4ef7380 (CORRUPTED!!!)
#
# digest -a md5 /mypool/myfs/.zfs/snapshot/first/words
5dc66244a7bef7d3018538e144e4bbdc

---Roll back----
# zfs rollback mypool/myfs@first
# digest -a md5 /mypool/myfs/words
5dc66244a7bef7d3018538e144e4bbdc
# digest -a md5 /mypool/myfs/.zfs/snapshot/first/words
5dc66244a7bef7d3018538e144e4bbdc
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 444K 159M 27.5K /mypool
mypool/myfs 284K 159M 284K /mypool/myfs
mypool/myfs@first 0 - 284K -
mypool/myfs2 24.5K 1.98M 24.5K /mypool/myfs2

# diff /mypool/myfs/words /mypool/myfs/.zfs/snapshot/first/words
<>

----Destroying the snapshot----
## zfs destroy mypool/myfs
cannot destroy 'mypool/myfs': filesystem has children
use '-r' to destroy the following datasets:
mypool/myfs@first
# zfs destroy mypool/myfs@first

(13) Import/Export

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 444K 159M 27.5K /mypool
mypool/myfs 284K 159M 284K /mypool/myfs
mypool/myfs2 24.5K 1.98M 24.5K /mypool/myfs2
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
mypool 191M 458K 191M 0% ONLINE -

# zpool export -f mypool

# zpool list
no pools available
# zfs list
no datasets available

(14) Backup -- HAVEN'T TESTED YET

(15) Device Replacement
In case, we pretend that /zfsdisk/disk4 was corrupted, we will replace it with
/zfsdisk/disk6, by using 'zpool replace' command

# zpool status
pool: mypool
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
raidz ONLINE 0 0 0
/zfsdisk/disk1 ONLINE 0 0 0
/zfsdisk/disk2 ONLINE 0 0 0
/zfsdisk/disk3 ONLINE 0 0 0
/zfsdisk/disk4 ONLINE 0 0 0
/zfsdisk/disk5 ONLINE 0 0 0

errors: No known data errors

# zpool replace mypool /zfsdisk/disk4 /zfsdisk/disk6

# zpool status
pool: mypool
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scrub: resilver in progress, 0.39% done, 0h12m to go
config:

NAME STATE READ WRITE CKSUM
mypool DEGRADED 0 0 0
raidz DEGRADED 0 0 0
/zfsdisk/disk1 ONLINE 0 0 0
/zfsdisk/disk2 ONLINE 0 0 0
/zfsdisk/disk3 ONLINE 0 0 0
replacing DEGRADED 0 0 0
/zfsdisk/disk4 UNAVAIL 0 0 0 corrupted data
/zfsdisk/disk6 ONLINE 0 0 0
/zfsdisk/disk5 ONLINE 0 0 0

errors: No known data errors

***
*** Only the actual data in use in file systems, snapshots, zvols etc will be
*** resilvered, not the entire file systems, snapshots, zvols
***


***
*** NOTE
***
*** the /zfsdisk/disk4 size is 100MB, the /zfsdisk/disk6 size is 150MB
*** the drive disk6 can replace disk4, but disk4 can not replace disk6
*** For example,
** # zpool replace mypool /zfsdisk/disk6 /zfsdisk/disk4
**cannot replace /zfsdisk/disk6 with /zfsdisk/disk4: /zfsdisk/disk4 is too small


(16) Scrubbing the pool -- to check the validity of the specified ZFS checksums
# zpool status
pool: mypool
state: ONLINE
scrub: resilver completed with 0 errors on Thu May 18 14:28:38 2006
config:

NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
raidz ONLINE 0 0 0
/zfsdisk/disk1 ONLINE 0 0 0
/zfsdisk/disk2 ONLINE 0 0 0
/zfsdisk/disk3 ONLINE 0 0 0
/zfsdisk/disk6 ONLINE 0 0 0
/zfsdisk/disk5 ONLINE 0 0 0

errors: No known data errors
# zpool scrub mypool
# zpool status
pool: mypool
state: ONLINE
scrub: scrub in progress, 18.13% done, 0h0m to go
config:

NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
raidz ONLINE 0 0 0
/zfsdisk/disk1 ONLINE 0 0 0
/zfsdisk/disk2 ONLINE 0 0 0
/zfsdisk/disk3 ONLINE 0 0 0
/zfsdisk/disk6 ONLINE 0 0 0
/zfsdisk/disk5 ONLINE 0 0 0

errors: No known data errors

***
*** Scrubing is done 18.13%
***

# zpool status
pool: mypool
state: ONLINE
scrub: scrub completed with 0 errors on Thu May 18 14:39:15 2006
config:

NAME STATE READ WRITE CKSUM
mypool ONLINE 0 0 0
raidz ONLINE 0 0 0
/zfsdisk/disk1 ONLINE 0 0 0
/zfsdisk/disk2 ONLINE 0 0 0
/zfsdisk/disk3 ONLINE 0 0 0
/zfsdisk/disk6 ONLINE 0 0 0
/zfsdisk/disk5 ONLINE 0 0 0

errors: No known data errors

***
*** Scrubing is done with 0 errors
***

(17) ZFS Compression

*** This will compress only ZFS file system created by
*** created by 'zfs create mypool/myfs', for example
***
*** this will NOT work with UFS volume created
*** by 'zfs create -V 50M mypool/myvol',then 'newfs /dev/zvol/rdsk/mypool/myvol'
***

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 131M 313M 51K /mypool
mypool/myfs 49K 313M 49K /mypool/myfs
mypool/myvol 131M 313M 113M -
mypool/myvol@backup 18.3M - 126M -
# cd /mypool/myfs
# zfs get compression mypool/myfs
NAME PROPERTY VALUE SOURCE
mypool/myfs compression off local
# zfs get compressratio mypool/myfs
NAME PROPERTY VALUE SOURCE
mypool/myfs compressratio 1.00x -
# cp /kernel/genunix /mypool/myfs
# du -k /mypool/myfs/genunix
2884 /mypool/myfs/genunix

---- Set compression to ON ----
# zfs set compression=on mypool/myfs
# zfs get compression mypool/myfs
NAME PROPERTY VALUE SOURCE
mypool/myfs compression on local
# zfs get compressratio mypool/myfs
NAME PROPERTY VALUE SOURCE
mypool/myfs compressratio 1.00x -

***
*** Enabling compression will ONLY effect data written after this point,
*** it is not applied retrospectively
***

# cp /kernel/genunix /mypool/myfs/genunix_compressed
# zfs get compressratio mypool/myfs
NAME PROPERTY VALUE SOURCE
mypool/myfs compressratio 1.21x -

# du -k /mypool/myfs/gen*
2884 /mypool/myfs/genunix
1865 /mypool/myfs/genunix_compressed

*** if later we set the ZFS compression to OFF, the already compressed files
*** are still compressed, but the later written files to this /mypool/myfs,
*** will not be further compressed...

(18) Data Recovery -- Clones (creating of writable image)

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 113M 331M 51K /mypool
mypool/myfs 49K 331M 49K /mypool/myfs
mypool/myvol 113M 331M 113M -

*** mypool/myfs used only 49KB

# for i in 1 2 3 4 5 6 7 8 9
> do
> cp /kernel/genunix /mypool/myfs/genunix-$i
> done
# ls -la /mypool/myfs/gen*
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-1
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-2
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-3
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-4
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-5
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-6
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-7
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-8
-rwxr-xr-x 1 root root 2235280 May 18 15:14 /mypool/myfs/genunix-9
# digest -a md5 /mypool/myfs/gen*
(/mypool/myfs/genunix-1) = 6a594ec25150b6b84b4313c9f111bad2
(/mypool/myfs/genunix-2) = 6a594ec25150b6b84b4313c9f111bad2
(/mypool/myfs/genunix-3) = 6a594ec25150b6b84b4313c9f111bad2
(/mypool/myfs/genunix-4) = 6a594ec25150b6b84b4313c9f111bad2
(/mypool/myfs/genunix-5) = 6a594ec25150b6b84b4313c9f111bad2
(/mypool/myfs/genunix-6) = 6a594ec25150b6b84b4313c9f111bad2
(/mypool/myfs/genunix-7) = 6a594ec25150b6b84b4313c9f111bad2
(/mypool/myfs/genunix-8) = 6a594ec25150b6b84b4313c9f111bad2
(/mypool/myfs/genunix-9) = 6a594ec25150b6b84b4313c9f111bad2
#
# zfs snapshot mypool/myfs@forclone
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 138M 306M 51K /mypool
mypool/myfs 25.4M 306M 25.4M /mypool/myfs
mypool/myfs@forclone 0 - 25.4M -
mypool/myvol 113M 306M 113M -

*** mypool/myfs now used 25.4MB, mypool@myfs@forclone also REFERS to 25.4MB
*** but occupied 0MB.

---- Creating 2 clone images named mypool/clone1 & mypool/clone2 ----

# zfs clone mypool/myfs@forclone mypool/clone1
# zfs clone mypool/myfs@forclone mypool/clone2
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 138M 306M 53K /mypool
mypool/clone1 0 306M 25.4M /mypool/clone1
mypool/clone2 0 306M 25.4M /mypool/clone2
mypool/myfs 25.4M 306M 25.4M /mypool/myfs
mypool/myfs@forclone 0 - 25.4M -
mypool/myvol 113M 306M 113M -

# cd /mypool
# du -k
25963 ./clone2
25963 ./myfs
25963 ./clone1
77891 .

---- Make change in the original and in the first clone (clone1) ---
# mkfile 1m /mypool/myfs/clonetest
# mkfile 2m /mypool/clone1/clonetest
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 142M 302M 55K /mypool
mypool/clone1 2.55M 302M 27.9M /mypool/clone1
mypool/clone2 0 302M 25.4M /mypool/clone2
mypool/myfs 26.7M 302M 26.7M /mypool/myfs
mypool/myfs@forclone 49K - 25.4M -
mypool/myvol 113M 302M 113M -

*** mypool/myfs used up more space (from 25.4MB to 26.7MB)
*** mypool/clone1 used up more space (from 0MB to 2.55MB)

---- Recursively removing the snapshot and the clones that use it ---
---- in this case, will recursively delete mypool/myfs@forclone,
---- mypool/clone1 and mypool/clone2, since clone1 & clone2 is using
---- mypool/myfs@forclone
----
---- @ will be used with snapshot
----
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 142M 302M 55K /mypool
mypool/clone1 2.55M 302M 27.9M /mypool/clone1
mypool/clone2 0 302M 25.4M /mypool/clone2
mypool/myfs 26.7M 302M 26.7M /mypool/myfs
mypool/myfs@forclone 49K - 25.4M -
mypool/myvol 113M 302M 113M -
# zfs destroy -R mypool/myfs@forclone
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 140M 304M 51K /mypool
mypool/myfs 26.7M 304M 26.7M /mypool/myfs
mypool/myvol 113M 304M 113M -

(19) Property inheritance
to inherit properties to multiple file systems at the same time

# zfs create mypool/homedirs
# zfs create mypool/homedirs/user1
# zfs create mypool/homedirs/user2
# zfs create mypool/homedirs/user3
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 140M 304M 53K /mypool
mypool/homedirs 200K 304M 53K /mypool/homedirs
mypool/homedirs/user1 49K 304M 49K /mypool/homedirs/user1
mypool/homedirs/user2 49K 304M 49K /mypool/homedirs/user2
mypool/homedirs/user3 49K 304M 49K /mypool/homedirs/user3
mypool/myfs 26.7M 304M 26.7M /mypool/myfs
mypool/myvol 113M 304M 113M -

# zfs get compression mypool/homedirs
NAME PROPERTY VALUE SOURCE
mypool/homedirs compression off default
# zfs get compression mypool/homedirs/user1
NAME PROPERTY VALUE SOURCE
mypool/homedirs/user1 compression off default
#
# zfs set compression=on mypool/homedirs/user1
# zfs get compression mypool/homedirs
NAME PROPERTY VALUE SOURCE
mypool/homedirs compression off default
# zfs get compression mypool/homedirs/user1
NAME PROPERTY VALUE SOURCE
mypool/homedirs/user1 compression on local
# zfs set compression=on mypool/homedirs
# zfs get compression mypool/homedirs/user1 mypool/homedirs/user2 mypool/homedirs/user3NAME PROPERTY VALUE SOURCE
mypool/homedirs/user1 compression on local
mypool/homedirs/user2 compression on inherited from mypool/homedirs
mypool/homedirs/user3 compression on inherited from mypool/homedirs

*** mypool/homedirs/user2 & mypool/homedirs/user3 inherited compression=on
*** from mypool/homedirs, but mypool/homedirs/user1 was set compression=on
*** independently (stated local)

---- set mypool/homedirs/user1 to inherit compression property from its
---- upper mypool/homedirs file system

# zfs inherit compression mypool/homedirs/user1
# zfs get compression mypool/homedirs/user1 mypool/homedirs/user2 mypool/homedirs/user3
NAME PROPERTY VALUE SOURCE
mypool/homedirs/user1 compression on inherited from mypool/homedirs
mypool/homedirs/user2 compression on inherited from mypool/homedirs
mypool/homedirs/user3 compression on inherited from mypool/homedirs

---- check whether which properties are inheritable ----

# zfs get (see INHERIT)
. . . . . .
. . . . . .
PROPERTY EDIT INHERIT VALUES

type NO NO filesystem | volume | snapshot
creation NO NO
used NO NO
available NO NO
referenced NO NO
compressratio NO NO <1.00x>
mounted NO NO yes | no | -
origin NO NO
quota YES NO | none
reservation YES NO | none
volsize YES NO
volblocksize NO NO 512 to 128k, power of 2
recordsize YES YES 512 to 128k, power of 2
mountpoint YES YES | legacy | none
sharenfs YES YES on | off | share(1M) options
checksum YES YES on | off | fletcher2 | fletcher4 | sha256
compression YES YES on | off | lzjb
atime YES YES on | off
devices YES YES on | off
exec YES YES on | off
setuid YES YES on | off
readonly YES YES on | off
zoned YES YES on | off
snapdir YES YES hidden | visible
aclmode YES YES discard | groupmask | passthrough
aclinherit&a

How to convert file with TIS-620 to UTF-8.

The Mac OS X equipped with very useful command to convert file with different encoding. Today I will show how to convert from TIS-620 (Thai language) to UTF-8.

$iconv -f tis-620 -t utf-8 source.xml > destination.xml

-f คือ format เดิมของไฟล์ (source encoding)
-t คือ format ที่ต้องการให้เป็น (destination encoding)
source.xml คือชื่อไฟล์ต้นฉบับ (source file)
destination.xml คือชื่อไฟล์ปลายทาง (result or destination file)

$ iconv -l (to show supported encoding)

ANSI_X3.4-1968 ANSI_X3.4-1986 ASCII CP367 IBM367 ISO-IR-6 ISO646-US ISO_646.IRV:1991 US US-ASCII CSASCII
UTF-8 UTF8
UTF-8-MAC UTF8-MAC
ISO-10646-UCS-2 UCS-2 CSUNICODE
UCS-2BE UNICODE-1-1 UNICODEBIG CSUNICODE11
UCS-2LE UNICODELITTLE
ISO-10646-UCS-4 UCS-4 CSUCS4
UCS-4BE
UCS-4LE
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7
UCS-2-INTERNAL
UCS-2-SWAPPED
UCS-4-INTERNAL
UCS-4-SWAPPED
C99
JAVA
CP819 IBM819 ISO-8859-1 ISO-IR-100 ISO8859-1 ISO_8859-1 ISO_8859-1:1987 L1 LATIN1 CSISOLATIN1
ISO-8859-2 ISO-IR-101 ISO8859-2 ISO_8859-2 ISO_8859-2:1987 L2 LATIN2 CSISOLATIN2
ISO-8859-3 ISO-IR-109 ISO8859-3 ISO_8859-3 ISO_8859-3:1988 L3 LATIN3 CSISOLATIN3
ISO-8859-4 ISO-IR-110 ISO8859-4 ISO_8859-4 ISO_8859-4:1988 L4 LATIN4 CSISOLATIN4
CYRILLIC ISO-8859-5 ISO-IR-144 ISO8859-5 ISO_8859-5 ISO_8859-5:1988 CSISOLATINCYRILLIC
ARABIC ASMO-708 ECMA-114 ISO-8859-6 ISO-IR-127 ISO8859-6 ISO_8859-6 ISO_8859-6:1987 CSISOLATINARABIC
ECMA-118 ELOT_928 GREEK GREEK8 ISO-8859-7 ISO-IR-126 ISO8859-7 ISO_8859-7 ISO_8859-7:1987 CSISOLATINGREEK
HEBREW ISO-8859-8 ISO-IR-138 ISO8859-8 ISO_8859-8 ISO_8859-8:1988 CSISOLATINHEBREW
ISO-8859-9 ISO-IR-148 ISO8859-9 ISO_8859-9 ISO_8859-9:1989 L5 LATIN5 CSISOLATIN5
ISO-8859-10 ISO-IR-157 ISO8859-10 ISO_8859-10 ISO_8859-10:1992 L6 LATIN6 CSISOLATIN6
ISO-8859-13 ISO-IR-179 ISO8859-13 ISO_8859-13 L7 LATIN7
ISO-8859-14 ISO-CELTIC ISO-IR-199 ISO8859-14 ISO_8859-14 ISO_8859-14:1998 L8 LATIN8
ISO-8859-15 ISO-IR-203 ISO8859-15 ISO_8859-15 ISO_8859-15:1998
ISO-8859-16 ISO-IR-226 ISO8859-16 ISO_8859-16 ISO_8859-16:2000
KOI8-R CSKOI8R
KOI8-U
KOI8-RU
CP1250 MS-EE WINDOWS-1250
CP1251 MS-CYRL WINDOWS-1251
CP1252 MS-ANSI WINDOWS-1252
CP1253 MS-GREEK WINDOWS-1253
CP1254 MS-TURK WINDOWS-1254
CP1255 MS-HEBR WINDOWS-1255
CP1256 MS-ARAB WINDOWS-1256
CP1257 WINBALTRIM WINDOWS-1257
CP1258 WINDOWS-1258
850 CP850 IBM850 CSPC850MULTILINGUAL
862 CP862 IBM862 CSPC862LATINHEBREW
866 CP866 IBM866 CSIBM866
MAC MACINTOSH MACROMAN CSMACINTOSH
MACCENTRALEUROPE
MACICELAND
MACCROATIAN
MACROMANIA
MACCYRILLIC
MACUKRAINE
MACGREEK
MACTURKISH
MACHEBREW
MACARABIC
MACTHAI
HP-ROMAN8 R8 ROMAN8 CSHPROMAN8
NEXTSTEP
ARMSCII-8
GEORGIAN-ACADEMY
GEORGIAN-PS
KOI8-T
MULELAO-1
CP1133 IBM-CP1133
ISO-IR-166 TIS-620 TIS620 TIS620-0 TIS620.2529-1 TIS620.2533-0 TIS620.2533-1
CP874 WINDOWS-874
VISCII VISCII1.1-1 CSVISCII
TCVN TCVN-5712 TCVN5712-1 TCVN5712-1:1993
ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO
JISX0201-1976 JIS_X0201 X0201 CSHALFWIDTHKATAKANA
ISO-IR-87 JIS0208 JIS_C6226-1983 JIS_X0208 JIS_X0208-1983 JIS_X0208-1990 X0208 CSISO87JISX0208
ISO-IR-159 JIS_X0212 JIS_X0212-1990 JIS_X0212.1990-0 X0212 CSISO159JISX02121990
CN GB_1988-80 ISO-IR-57 ISO646-CN CSISO57GB1988
CHINESE GB_2312-80 ISO-IR-58 CSISO58GB231280
CN-GB-ISOIR165 ISO-IR-165
ISO-IR-149 KOREAN KSC_5601 KS_C_5601-1987 KS_C_5601-1989 CSKSC56011987
EUC-JP EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE
MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS
CP932
ISO-2022-JP CSISO2022JP
ISO-2022-JP-1
ISO-2022-JP-2 CSISO2022JP2
CN-GB EUC-CN EUCCN GB2312 CSGB2312
CP936 GBK
GB18030
ISO-2022-CN CSISO2022CN
ISO-2022-CN-EXT
HZ HZ-GB-2312
EUC-TW EUCTW CSEUCTW
BIG-5 BIG-FIVE BIG5 BIGFIVE CN-BIG5 CSBIG5
CP950
BIG5-HKSCS BIG5HKSCS
EUC-KR EUCKR CSEUCKR
CP949 UHC
CP1361 JOHAB
ISO-2022-KR CSISO2022KR
CP856
CP922
CP943
CP1046
CP1124
CP1129
CP1161 IBM-1161 IBM1161 CSIBM1161
CP1162 IBM-1162 IBM1162 CSIBM1162
CP1163 IBM-1163 IBM1163 CSIBM1163
DEC-KANJI
DEC-HANYU
437 CP437 IBM437 CSPC8CODEPAGE437
CP737
CP775 IBM775 CSPC775BALTIC
852 CP852 IBM852 CSPCP852
CP853
855 CP855 IBM855 CSIBM855
857 CP857 IBM857 CSIBM857
CP858
860 CP860 IBM860 CSIBM860
861 CP-IS CP861 IBM861 CSIBM861
863 CP863 IBM863 CSIBM863
CP864 IBM864 CSIBM864
865 CP865 IBM865 CSIBM865
869 CP-GR CP869 IBM869 CSIBM869
CP1125
EUC-JISX0213
SHIFT_JISX0213
ISO-2022-JP-3
ISO-IR-230 TDS565
RISCOS-LATIN1

CrossOver 6.0 and Floppy drive.

Some softwares such as HDS Offline SVP for 99x0 needs to access configuration data from floppy drive, and the floppy drive has to be A: . For Windows platform, this condition has never been a problem, but for Mac OS X using CrossOver software, it is a little bit tricky to do.


For CrossOver 6.x for Mac OS X, when inserting USB Floppy drive into USB slot, it appears in the bottle windows as G: drive mounted to /Volumes/CONFIG1, where CONFIG1 is the floppy disk label. In this regular case, the software that needs to access A: drive will never find the floppy.

To archive this, please follow the steps below :

(1) Click on the "Configure" ==> "Manage Bottles"

(2) Click on the "winecfg" item, then click on "Launch selected item" button

(3) The 'Wine configuration" window will show, click on "Drives" tab

(4) Observe that there is no A: drive available at the moment

(5) Open the 'Terminal' window (Goto Finder/Go/Utilities), click on "Terminal"

(6) cd ~/Library/Application Support/CrossOver/Bottles/WinXP/dosdevices (where WinXP is bottle's name)

(7) ln -s g:: a::

$ ls -l
total 88
lrwxr-xr-x 1 Neo Neo 3 Mar 2 00:31 a:: -> g::
lrwxr-xr-x 1 Neo Neo 10 Feb 28 17:17 c: -> ../drive_c
lrwxr-xr-x 1 Neo Neo 13 Feb 28 17:17 d:: -> /dev/rdisk2s0
lrwxr-xr-x 1 Neo Neo 18 Feb 28 17:48 e: -> /Volumes/Softwares
lrwxr-xr-x 1 Neo Neo 13 Feb 28 17:48 e:: -> /dev/rdisk2s2
lrwxr-xr-x 1 Neo Neo 18 Mar 1 23:26 f: -> /Volumes/Softwares
lrwxr-xr-x 1 Neo Neo 13 Mar 1 23:26 f:: -> /dev/rdisk1s2
lrwxr-xr-x 1 Neo Neo 16 Mar 2 00:27 g: -> /Volumes/CONFIG1
lrwxr-xr-x 1 Neo Neo 11 Mar 1 23:26 g:: -> /dev/rdisk2
lrwxr-xr-x 1 Neo Neo 10 Feb 28 17:17 y: -> /Users/Neo
lrwxr-xr-x 1 Neo Neo 1 Feb 28 17:17 z: -> /

(8) ln -s g: a:
$ ls -l
total 96
lrwxr-xr-x 1 Neo Neo 2 Mar 2 00:32 a: -> g:
lrwxr-xr-x 1 Neo Neo 3 Mar 2 00:31 a:: -> g::

lrwxr-xr-x 1 Neo Neo 10 Feb 28 17:17 c: -> ../drive_c
lrwxr-xr-x 1 Neo Neo 13 Feb 28 17:17 d:: -> /dev/rdisk2s0
lrwxr-xr-x 1 Neo Neo 18 Feb 28 17:48 e: -> /Volumes/Softwares
lrwxr-xr-x 1 Neo Neo 13 Feb 28 17:48 e:: -> /dev/rdisk2s2
lrwxr-xr-x 1 Neo Neo 18 Mar 1 23:26 f: -> /Volumes/Softwares
lrwxr-xr-x 1 Neo Neo 13 Mar 1 23:26 f:: -> /dev/rdisk1s2
lrwxr-xr-x 1 Neo Neo 16 Mar 2 00:27 g: -> /Volumes/CONFIG1
lrwxr-xr-x 1 Neo Neo 11 Mar 1 23:26 g:: -> /dev/rdisk2
lrwxr-xr-x 1 Neo Neo 10 Feb 28 17:17 y: -> /Users/Neo
lrwxr-xr-x 1 Neo Neo 1 Feb 28 17:17 z: -> /

==== It's done and ready to use ===

ถ้าท่านกำลังมองหา 'รูปแบบตัวอย่าง' ของเหล็กดัด ที่นี่รวม URL ไว้แล้ว

วีระโลหะกิจ : http://www.wr-stainless.com/product.php