PDA

Επιστροφή στο Forum : Transactional NTFS + Registry



drhouse
12-05-09, 15:24
Σήμερα διάβασα κάτι που μου άρεσε πάρα πολύ και θα ήθελα να το μοιραστώ με σας φιλαράκιά μου. Κι επειδή σε ένα άλλο θέμα πριν από λίγο μιλάγαμε περί φαντασίας θα ήθελα την γνώμη σας, τι μπορεί να σημαίνει αυτή η εξέλιξη. Δεν ειχα τον χρόνο να το επιβεβαιώσω αλλά μάλλον έτσι θα είναι. Στα μετά Xp λειτουργικά έγιναν μερικές μικρές , αφανείς αλλά πολύ σημαντικές αλλαγές.

Πάνω που έλεγα στον SSB ότι θα ήθελα transactional reg , ΤΟ NTFS (TxF) KAI H REGISTRY ΕΓΙΝΑ TRANSACTIONAL.

Transaction : διαδικασία που εξασφαλίζει ότι μια ομάδα εντολών θα εκτελεστούν ή όχι.
1) Ξεκινώ το transaction
2) Εκτελώ τις εντολές.
3) Επικυρώνω την εκτέλεση (commit) ή αν κάτι παει στραβά ακυρώνω (rollback) την όλη διαδικασία.

Βγαίνω σε cmd (με προνόμια admin)

C:>transaction /start
A transaction has been successfully started.
Transaction ID: {1288b5a4-4b58-4006-88d8-6bc86f4b8ad3}
C:>md foo
C:>cd c:\foo
C:\dir

07/17/2006 06:48 PM {DIR} .
07/17/2006 06:48 PM {DIR} ..
07/17/2006 06:48 PM {DIR} foo
..

C:>cd ..

C:>transaction /rollback
The current transaction has been rolled back.

C:Usersmark>dir foo

File Not Found

Με τέτοια καλούδια, απεγκατάσταση προγραμμάτων θα είναι εύκολη υπόθεση με το transaction /rollback …

manosdoc
12-05-09, 15:52
Σήμερα διάβασα κάτι που μου άρεσε πάρα πολύ και θα ήθελα να το μοιραστώ με σας φιλαράκιά μου. Κι επειδή σε ένα άλλο θέμα πριν από λίγο μιλάγαμε περί φαντασίας θα ήθελα την γνώμη σας, τι μπορεί να σημαίνει αυτή η εξέλιξη. Δεν ειχα τον χρόνο να το επιβεβαιώσω αλλά μάλλον έτσι θα είναι. Στα μετά Xp λειτουργικά έγιναν μερικές μικρές , αφανείς αλλά πολύ σημαντικές αλλαγές.

Πάνω που έλεγα στον SSB ότι θα ήθελα transactional reg , ΤΟ NTFS (TxF) KAI H REGISTRY ΕΓΙΝΑ TRANSACTIONAL.



Αναφέρεσαι σε Vista ;

drhouse
12-05-09, 15:55
Απ' ότι διάβασα ναι σε vista $ win 7 και μου έκανε εντύπωση πως μας ξέφυγε. :p
δεν μπορώ να το επιβεβαιώσω όμως γιατί δεν έχω μηχάνημα αυτή την στιγμή.

MichaelSE
12-05-09, 15:56
Είσαι σίγουρος ότι έγινε αυτό; Αυτό υποτίθεται θα έμπαινε στο WinFS που θα ήταν db based και τελικά δεν έγινε release (ακόμα?)

Αν ισχύει κάτι τέτοιο, the sky is the limit...

manosdoc
12-05-09, 16:02
Απ' ότι διάβασα ναι σε vista $ win 7 και μου έκανε εντύπωση πως μας ξέφυγε. :p
δεν μπορώ να το επιβεβαιώσω όμως γιατί δεν έχω μηχάνημα αυτή την στιγμή.

Νομίζω αυτό συμβαίνει στο Powershell με την εντολή Get-Transaction και όχι το cmd, αν και μπορώ να δοκιμάσω.

http://msdn.microsoft.com/en-us/magazine/cc163388.aspx

drhouse
12-05-09, 16:05
Μια ματιά Εδώ (http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&EventID=1032294095) κι έδώ (http://en.wikipedia.org/wiki/Transactional_NTFS)

Είπα το διάβασα, μπορεί κάποιος να το επιβεβαιώσει.

........Auto merged post: drhouse πρόσθεσε 0 λεπτά και 57 δευτερόλεπτα αργότερα ........


Νομίζω αυτό συμβαίνει στο Powershell με την εντολή Get-Transaction και όχι το cmd, αν και μπορώ να δοκιμάσω.

http://msdn.microsoft.com/en-us/magazine/cc163388.aspx

Όχι αυτά που διαβάζω εγώ είναι για command com.

Βρε γ@μ0τ0, κοίτα στιγμή που ξέμεινα από vista-seven :p

manosdoc
12-05-09, 16:16
Μια ματιά Εδώ (http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&EventID=1032294095) κι έδώ (http://en.wikipedia.org/wiki/Transactional_NTFS)

Είπα το διάβασα, μπορεί κάποιος να το επιβεβαιώσει.

........Auto merged post: drhouse πρόσθεσε 0 λεπτά και 57 δευτερόλεπτα αργότερα ........



Όχι αυτά που διαβάζω εγώ είναι για command com.

http://msdn.microsoft.com/en-us/library/aa363764(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa365008(VS.85).aspx

http://msdn.microsoft.com/en-us/library/aa365694(VS.85).aspx

........Auto merged post: manosdoc πρόσθεσε 9 λεπτά και 11 δευτερόλεπτα αργότερα ........



Βρε γ@μ0τ0, κοίτα στιγμή που ξέμεινα από vista-seven :p
Ε ,και σύ, άντε βουρ για ένα πρόχειρο iso από τους servers της Microsoft.

nnn
14-05-09, 23:33
Σε Vista Ultimate δεν παίζει από CMD.

DaveMurray
15-05-09, 01:20
Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.

C:\Windows\system32>transaction /start
'transaction' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\system32>

από cmd με administrator δικαιώματα, σε windows vista x64 sp2 ultimate.... (και με ότι "update" υπήρξαν :p)

bxenos
15-05-09, 01:51
http://msdn.microsoft.com/en-us/magazine/cc163388.aspx

There are three core features in Windows Vista and Windows Server "Longhorn" that now make use of Transactional NTFS: Windows Update, System Restore, and Task Scheduler. All of these use TxF to write files to the file system within the scope of a transaction in order to handle rollback/commit in case of any exceptions, such as a system reboot due to a loss of power. If you’ve ever experienced a loss of power right in the middle of Windows Update, you know this can leave your system dead and in need of a fresh installation. But now that Windows Update uses TxF, if this same situation occurs on your Windows Vista system, the computer can recover by rolling back the transaction when the system reboots. By adopting TxF internally, Microsoft has helped make its own operating system more stable.
το transaction filesystem (TxF), απ'οτι διάβασα, είναι ένα σύνολο συναρτήσεων στον πυρήνα των windows (σσ. xωρίς αυτό, έπρεπε όλα τα προγράμματα που χρειάζονται να ξέρουν την τρέχουσα κατάσταση των αποθηκευμένων στο δίσκο αρχείων να καλούν συναρτήσεις τύπου dup(), αλλά και πάλι δεν ήταν ξεκάθαρο αν το σύστημα buffering του δίσκου με τα write-behing cache θα το έκαναν).

Δεν βρήκα πληροφορίες για την ύπαρξη προγράμματος transaction.exe ή σε ποιό package των vista υπάρχει. Για να τρέχει απο command console, κάποιος πρέπει να παρέχει το user interface σε πρόγραμμα που θα χρησιμοποιεί τις βασικές λειτουργιας TxF του πυρήνα.

SSB
15-05-09, 03:51
Η cl εντολή "transaction.exe" κάπου γύρω στο 2005 αποφασίστηκε να αφαιρεθεί από τα τότε επερχόμενα Windows Vista, για δύο λόγους.

Πρώτος και σημαντικότερος η ασφάλεια της χρήσης της. Αν και το interface της δεν είχε κάποια πολυπλοκότητα και περιοριζόταν στα βασικά, εσωτερικά εξακολουθούσε να στηρίζεται στο KTM και στην χρήση των resources (χωρίς autoresetting). Για παράδειγμα θα μπορούσε ο χρήστης νο ορίσει κάποιο query point, να δημιουργηθεί το resource log metafile, και στη συνέχεια να μείνει σε monitoring stage για μεγάλο χρονικό διάστημα άσχετα με το αν μεσολάβησαν system restarts. Σαν αποτέλεσμα, στο επόμενο manual rollback, ή σε forced healing rollback (λόγω ίσως dirty fs) όλα τα ενδιάμεσα δημιουργημένα αρχεία, directories κλπ θα χανόταν χωρίς δυνατότητα ανάκτησής τους.

Όπως έγραφε συγκεκριμένα τότε (http://channel9vip.orcsweb.com/shows/Going+Deep/Surendra-Verma-Vista-Transactional-File-System/?CommentID=245100) ο Verma, κύρια υπεύθυνος για την αλλαγή του μοντέλου σε explicit: "...The problem with it was that it was also easy to accidentally include operations you didn't really intend to include in the transaction..."

Ο δεύτερος λόγος που αποφασίστηκε η αφαίρεση της εντολής (όχι όμως της λειτουργικότητας) ήταν οι σημαντικές αλλαγές που έγιναν στο KtmRm του distributed transaction coordinator. Συγκεκριμένα μέχρι εκείνο το χρονικό σημείο που υπήρχε η transaction command, ο kernel transaction manager (KTM) είχε direct interface στο user space, κάτι που επέτρεπε την χρήση μιας απλής εντολής με προϋπόθεση τα admin rights. Άλλοι λόγοι ασφάλειας (που έχουμε συζητήσει παλαιότερα), άλλαξαν το μοντέλο πρόσβασης του KTM το οποίο πλέον χρησιμοποιεί αυστηρά system rights, και ως application & user interface το Microsoft distributed transaction coordinator (MSDTC). Με το νέο μοντέλο, θα πρέπει η εφαρμογή (ή ο χρήστης) να δημιουργεί πρώτα το resource manager που θα διαχειριστεί τα transaction requests και logs (με τη μορφή metafiles), και στη συνέχεια τροφοδοτεί το FCTL (guid) ή τον named file handler στο transaction coordinator (DTC).

Μια εξελιγμένη, αν και δυσκολότερη, υλοποίηση του user transaction resource management είναι αυτή που ενσωματώθηκε τελικά στην προϋπάρχουσα εντολή fsutil, κυρίως όμως για διαχείριση transaction queries που δημιουργούνται προγραμματιστικά, ή από services του συστήματος όπως το shadowing, το system restore και το metafile self-heal management του NTFS και της registry. Προγραμματιστικά φυσικά το μοντέλο αν και explicit δεν έχει αλλάξει ουσιαστικά από τα προηγούμενα standards και παραμένει ιδιαίτερα εύκολο στη χρήση του, όποιος compiler ή scripted environment και αν χρησιμοποιείται.


HANDLE hTr = ::CreateTransaction(xxxxx)
::MoveFileTransacted(source, target, , hTr);
::CommitTransaction(hTr);
....
::CopyFileTransacted(...)
::CreateHardLinkTransacted(...)
:: άλλες _Transacted & _TransactedW methods
....
::RollbackTransaction(hTr);

Στα Windows 7 και στα 2008/R2 και σε επίπεδο user control, πέραν του resource και transaction management μέσω της fsutil, το μεγαλύτερο βάρος της διαχείρισης των transactions μεταφέρεται στο powershell είτε μέσω άμεσης χρήσης των .net System.Transactions είτε μέσω PSTransactions cmdlets στους αντίστοιχα providers.

Κάπου στα μέσα του development του kernel των Windows 7, υπήρξε η σκέψη ενσωμάτωσης κάποιας μορφής user command για transactions αλλά τελικώς θεωρήθηκε προτιμότερο, η όποια προσθήκη να γίνει σε επίπεδο powershell καθώς αυτό ήδη παρέχει μέσω του managed interface ασφαλή πρόσβαση στο KTM/KtmRm. Πάντως, αν και είναι νωρίς για λεπτομέρειες, αναπτύσεται επίσης ένα management console addon για τη διαχείριση local και remote transactions το οποίο και όταν θα είναι έτοιμο θα διατίθεται ως μέρος του administration kit των Windows 7 και των R2. Αυτό θα διαχειρίζεται πέρα από τα TxF και TxR, και το user isolation virtualization που από τη φύση του άλλωστε είναι transaction based (όπως σχεδόν κάθε μέρος του NTFS, της registry και του HAL profile των Windows 7).
Κάποια στιγμή θα επανέλθω με περισσότερες πληροφορίες. :)

drhouse
15-05-09, 07:57
Κρίμας :( :mad: θα μου άρεσε πολύ ένα τέτοιο καλούδι. Ας υποθέσουμε πως κάποια στιγμή θα δούμε κάτι παρόμοιο.

Φίλε SSB, για άλλη μια φορά είσαι άψογος :oneup: :respekt: :oneup:και από μένα ένα ακόμα μεγάλο "ευχαριστώ" αν και πρωί πρώ σήμερα απογοητεύτικα με την επιβεβαίωση της απουσιάς του ntfs trans.

asm
15-05-09, 12:08
Και από εμένα ένα μεγάλο ευχαριστώ στον SSB για τις χρησιμότατες πληροφορίες. Ειδικά μου άρεσε η προοπτική του transaction msc addon. Κάτι τέτοιο θα διευκολύνει πολύ περισσότερο από την fsutil ειδικά αν δουλεύει μέσω wmi. :oneup:

@drhouse: Όταν γράφεις "απουσία ntfs trans" εννοείς την απουσία του transaction.exe; Όχι τίποτα άλλο γιατί transactions υποστηρίζει πλήρως το ntfs και η registry και πολύ εύκολα μέσω api.
Για να σου πω την αλήθεια για την εντολή transaction πρώτη μου φορά από εσένα το άκουσα αλλά στην εφαρμογή που εργάζομαι διατηρώ file modification rollback, κάτι σαν restore point σε επίπεδο εφαρμογής που στηρίζεται αποκλειστικά στα NTFS transactions και είναι φοβερή ευκολία και πολύ πιο αξιόπιστη λύση από ενδιάμεσα temporary files και άλλα τέτοια μαγειρέματα που έκανα παλιά. Άσε που δουλεύει σε επίπεδο buffer και με έχει σώσει από πολλές δικές μου στραβές και σκοτώματα του file system κατά το debug.

drhouse
15-05-09, 13:40
@drhouse: Όταν γράφεις "απουσία ntfs trans" εννοείς την απουσία του transaction.exe; Όχι τίποτα άλλο γιατί transactions υποστηρίζει πλήρως το ntfs και η registry και πολύ εύκολα μέσω api.

Έχεις δίκιο, λάθος μου. Μέσω API κάνεις παιχνίδια και με την registry?

asm
15-05-09, 15:14
Έχεις δίκιο, λάθος μου. Μέσω API κάνεις παιχνίδια και με την registry?

Και με την registry και τα buffered I/O. Αν και πέρα από τα file system transactions δεν χρησιμοποιώ τίποτα άλλο στο πρόγραμμα που δουλεύω από όσο όμως έτυχε να ασχοληθώ τον πρώτο καιρό που ψαχνόμουν με αυτά στα vista μεγάλο μέρος του συστήματος είναι full transactional. Και αν κρίνω από τα checked builds των 7 transactional functions χρησιμοποιούνται παντού από τον explorer μέχρι το defrag το backup τα logs και πάει λέγοντας.
Αλλά και σε δικά σου προγράμματα κάνεις θαύματα. Με πολύ απλό τρόπο κάνεις μια εφαρμογή που έχει μπόλικο file i/o εντελώς fault tolerant. Απλά πράγματα δηλαδή ομαδοποίηση των disk actions δημιουργία του trasanction κάνεις commit και με ένα error trap κάνεις rollback αν πάει κάτι στραβά. Δεν ξέρω αλλά εγώ που είχα πολύ πράμα από binary files βρήκα την υγειά μου. Σκέτη database έχει γίνει με αυτά και αυτά το ntfs. :lol:

frenty
20-06-09, 22:13
Multiple Package Transaction: In a multiple package transaction, you can create a single transaction from multiple packages. In a multiple package transaction, a chainer is used to dynamically include packages in the transaction. If any of the packages do not install as expected, you can roll back the installation.

Το παραπάνω σχετίζεται με το θέμα του παρόντος νήματος;:hmm:

@ ADSLgr.com All rights reserved.